diff --git a/.eslintignore b/.eslintignore index 09704f4..ac926c6 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ **/bundle/**/*.js **/dist/**/*.js +coverage diff --git a/.stylelintignore b/.stylelintignore index 418c78f..468b0a5 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,3 +1,2 @@ **/css/**/*.css **/dist/**/*.css -public/scss/common/_slider.css diff --git a/app.js b/app.js index c2f2ef9..24fa13b 100644 --- a/app.js +++ b/app.js @@ -17,18 +17,19 @@ const path = require('path'); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const favicon = require('serve-favicon'); -const session = require('yoho-express-session'); -const memcached = require('yoho-connect-memcached'); -const _ = require('lodash'); +const session = require('express-session'); +const memcached = require('connect-memcached'); +const hbs = require('express-handlebars'); const pkg = require('./package.json'); -const cookie = require('./library/cookie'); + +const yohoLib = require('yoho-node-lib'); const app = express(); const MemcachedStore = memcached(session); -const seo = require('./doraemon/middleware/seo'); -// 指定libray目录 -global.library = path.resolve('./library'); +// 全局注册library +yohoLib.global(config); + global.middleware = path.resolve('./doraemon/middleware'); global.utils = path.resolve('./utils'); @@ -36,8 +37,15 @@ global.utils = path.resolve('./utils'); app.locals.devEnv = app.get('env') === 'development'; app.locals.version = pkg.version; - app.set('view engine', '.hbs'); +app.set('views', './doraemon/views'); +app.engine('.hbs', hbs({ + extname: '.hbs', + defaultLayout: 'layout', + layoutsDir: './doraemon/views', + partialsDir: './doraemon/views/partial', + helpers: global.yoho.helpers +})); app.use(favicon(path.join(__dirname, '/public/favicon.ico'))); app.use(express.static(path.join(__dirname, 'public'))); @@ -63,26 +71,41 @@ app.use(session({ })); app.use((req, res, next) => { - req.user = {}; - - // 从 PHP 写的 SESSION 中获取到当前登录用户的 UID - if (req.session && _.isNumber(req.session._LOGIN_UID)) { - req.user.uid = req.session._LOGIN_UID; - } + req.user = {}; // 全局的用户数据 + req.yoho = {}; // req和res绑定yoho对象,用于传递全局数据, 如req.yoho.channel等 - // session 没有读取到的时候,从 cookie 读取 UID - if (!req.user.uid && req.cookies._UID) { - req.user.uid = cookie.getUid(req); - } next(); }); -app.use(seo()); +const logger = global.yoho.logger; // dispatcher -require('./dispatch')(app); +try { + const mobileCheck = require('./doraemon/middleware/mobile-check'); + const user = require('./doraemon/middleware/user'); + const seo = require('./doraemon/middleware/seo'); + const setYohoData = require('./doraemon/middleware/set-yoho-data'); + const errorHanlder = require('./doraemon/middleware/error-handler'); + const setPageInfo = require('./doraemon/middleware/set-pageinfo'); + + // YOHO 前置中间件 + app.use(mobileCheck()); + app.use(setYohoData()); + app.use(user()); + app.use(seo()); + app.use(setPageInfo()); + + require('./dispatch')(app); + + app.all('*', errorHanlder.notFound()); // 404 + + // YOHO 后置中间件 + app.use(errorHanlder.serverError()); +} catch (err) { + logger.error(err); +} // listener app.listen(config.port, function() { - console.log('yohobuy start'); + logger.info('yohobuy start'); }); diff --git a/apps/activity/index.js b/apps/activity/index.js index 6318db0..f6d8ceb 100644 --- a/apps/activity/index.js +++ b/apps/activity/index.js @@ -23,7 +23,7 @@ app.engine('.hbs', hbs({ defaultLayout: 'layout', layoutsDir: doraemon, partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`], - helpers: require('../../library/helpers') + helpers: global.yoho.helpers })); // router diff --git a/apps/activity/models/special.js b/apps/activity/models/special.js index a9d79c5..6beedb0 100644 --- a/apps/activity/models/special.js +++ b/apps/activity/models/special.js @@ -5,17 +5,17 @@ */ 'use strict'; -const ServiceAPI = require(`${global.library}/api`).ServiceAPI; -const sign = require(`${global.library}/sign`); -const logger = require(`${global.library}/logger`); +const logger = global.yoho.logger; const headerModel = require('../../../doraemon/models/header'); -var api = new ServiceAPI(); +var api = global.yoho.ServiceAPI; -const getstaticFile = (id) => { - return api.get('staticFileManage/queryById', sign.apiSign({ +const _getstaticFile = (id) => { + return api.get('activity/staticFileManage/queryById', { id: id - }), true).then(result => { + }, { + cache: true + }).then(result => { if (result && result.code === 200) { result.data.title = result.data.pageTitle; result.data.keywords = result.data.keyWord; @@ -29,5 +29,5 @@ const getstaticFile = (id) => { }; exports.getSpecialData = (id, type) => { - return Promise.all([headerModel.requestHeaderData(type), getstaticFile(id)]); + return Promise.all([headerModel.requestHeaderData(type), _getstaticFile(id)]); }; diff --git a/apps/channel/controllers/index.js b/apps/channel/controllers/index.js index c736554..682f9df 100644 --- a/apps/channel/controllers/index.js +++ b/apps/channel/controllers/index.js @@ -21,15 +21,15 @@ exports.index = (req, res, next) => { }).catch(next); }; -exports.getbrandFloorDataAjax = (req, res) => { +exports.getbrandFloorDataAjax = (req, res, next) => { const channelType = req.query.channelType || 'boys'; channelModel.getbrandFloorDataAjax(channelType).then(data => { res.json(data); - }); + }).catch(next); }; -exports.getNewArrival = (req, res) => { +exports.getNewArrival = (req, res, next) => { let reqBody = req.body, pageIndex = reqBody.pageIndex, pageCount = reqBody.pageCount, @@ -54,5 +54,5 @@ exports.getNewArrival = (req, res) => { }; } res.send(result); - }); + }).catch(next); }; diff --git a/apps/channel/index.js b/apps/channel/index.js index 72117c0..d1d6cb8 100644 --- a/apps/channel/index.js +++ b/apps/channel/index.js @@ -26,7 +26,7 @@ app.engine('.hbs', hbs({ defaultLayout: 'layout', layoutsDir: doraemon, partialsDir: [`${partials}/partials`, `${doraemon}/partial`], - helpers: require('../../library/helpers') + helpers: global.yoho.helpers })); diff --git a/apps/channel/models/index.js b/apps/channel/models/index.js index f841230..11a7c2d 100644 --- a/apps/channel/models/index.js +++ b/apps/channel/models/index.js @@ -1,5 +1,5 @@ /** - * girls model + * 频道页 model * @author: 赵彪<bill.zhao@yoho.cn> * @date: 2016/05/17 */ @@ -7,31 +7,30 @@ const _ = require('lodash'); -const ServiceAPI = require(`${global.library}/api`).ServiceAPI; -const SearchAPI = require(`${global.library}/api`).SearchAPI; -const sign = require(`${global.library}/sign`); -const helpers = require(`${global.library}/helpers`); -const images = require(`${global.utils}/images`); -const log = require(`${global.library}/logger`); +const dataMap = require('../../../config/data-map'); +const helpers = global.yoho.helpers; +const log = global.yoho.logger; -const serviceApi = new ServiceAPI(); -const searchApi = new SearchAPI(); +const processProduct = require(`${global.utils}/product-process`).processProduct; + + +const serviceApi = global.yoho.ServiceAPI; +const searchApi = global.yoho.SearchAPI; const headerModel = require('../../../doraemon/models/header'); -const getShelveTime = duration => { +// 获取上线时间 +const _getShelveTime = duration => { let today = new Date(), todayMil = today.getTime().toString().substr(0, 10), startDayMil = (today.setMonth(today.getMonth() - duration)).toString().substr(0, 10); - return `${startDayMil},${todayMil}`; - - // ` + return `${startDayMil},${todayMil}`; // `返回时间 }; // 获取可用的标题 -const getText = data => { +const _getText = data => { let text = data.split(' ')[0]; const regResult = /\w+/.exec(text); @@ -46,257 +45,21 @@ const getText = data => { return text; }; -const channelMap = { - boys: { - code: '79372627eee75d73afe7f9bac91e5ce6', - gender: '1,3' - }, - girls: { - code: '75215008957605c05e8cd375eac4f817', - gender: '2,3' - }, - kids: { - code: 'd71f4b27f2a7229fbb31a4bc490a6f36', - gender: '2,3' - }, - lifestyle: { - code: '8a341ca7eacc069ba80f02dec80eaf34', - - // code: '380c38155fd8beee10913a3f5b462da6', - // code: '665f7c2fb9d037ee820766953ee34bf7', - gender: '2,3' - } -}; - -const sortMap = { - boys: [ - {sort: 147, viewNum: 5}, // 休闲运动鞋 - {sort: 129, viewNum: 5}, // 休闲裤 - {sort: 152, viewNum: 5}, // 双肩包 - {misort: 11, viewNum: 5}, // T恤 - {sort: 115, viewNum: 5}, // 衬衫 - {sort: 130, viewNum: 5}, // 牛仔裤 - {misort: 60, viewNum: 5}, // 帽子 - {sort: 124, viewNum: 5}, // 夹克 - {sort: 119, viewNum: 5}, // 卫衣 - {sort: 162, viewNum: 5}, // 手表 - {sort: 148, viewNum: 5}, // 靴子 - {misort: 65, viewNum: 5}, // 首饰 - {sort: 151, viewNum: 5}, // 时装鞋 - {misort: 61, viewNum: 5}, // 太阳镜 - {misort: 39, viewNum: 5}, // 袜子 - {sort: 346, viewNum: 5}, // 运动裤 - {sort: 131, viewNum: 5}, // 短裤 - {misort: 66, viewNum: 5}, // 配饰 - {misort: 309, viewNum: 5}, // 内裤 - {misort: 30, viewNum: 5}, // 打底裤/紧身裤 - {sort: 342, viewNum: 5} // 邮差包 - ], - girls: [ - {misort: 16, viewNum: 4}, // 卫衣 - {misort: 12, viewNum: 4}, // 衬衫 - {misort: 44, viewNum: 4}, // 休闲/运动鞋 - {misort: 11, viewNum: 4}, // T恤 - {misort: 21, viewNum: 4}, // 夹克 - {misort: 257, viewNum: 4}, // 毛衣/针织 - {misort: 22, viewNum: 4}, // 大衣/风衣 - {misort: 26, viewNum: 4}, // 休闲裤 - {misort: 27, viewNum: 4}, // 牛仔裤 - {misort: 31, viewNum: 4}, // 连衣裙 - {misort: 32, viewNum: 4}, // 半身裙 - {misort: 48, viewNum: 4}, // 时装鞋 - {misort: 49, viewNum: 4}, // 双肩包 - {misort: 50, viewNum: 4}, // 手拎包/单肩包 - {misort: 60, viewNum: 4}, // 帽子 - {misort: 65, viewNum: 4}, // 首饰 - {misort: 59, viewNum: 4}, // 手表 - {misort: 61, viewNum: 4}, // 太阳镜 - {misort: 66, viewNum: 4} // 配饰 - ], - kids: [ - {misort: 366, viewNum: 4}, // T恤 - {misort: 367, viewNum: 4}, // 衬衫 - {misort: 396, viewNum: 4}, // 卫衣 - {misort: 400, viewNum: 4}, // // 毛衣/针织 - {misort: 404, viewNum: 4}, // 夹克 - {misort: 369, viewNum: 4}, // 休闲裤 - {misort: 388, viewNum: 4}, // 牛仔裤 - {misort: 371, viewNum: 4}, // 连衣裙 - {misort: 370, viewNum: 4}, // 半身裙 - {misort: 368, viewNum: 4}, // 休闲/运动鞋 - {misort: 392, viewNum: 4}, // 双肩包 - {misort: 414, viewNum: 4}, // 帽子 - {misort: 372, viewNum: 4}, // 短裤 - {misort: 384, viewNum: 4}, // 打底裤/紧身裤 - {misort: 382, viewNum: 4}, // 凉鞋/拖鞋 - {misort: 402, viewNum: 4}, // 马甲 - {misort: 386, viewNum: 4}, // 背心 - {misort: 406, viewNum: 4}, // 大衣/风衣 - {misort: 430, viewNum: 4}, // 羽绒服 - {misort: 423, viewNum: 4}, // 棉衣 - {misort: 417, viewNum: 4} // 套装 - ], - lifestyle: [ - {sort: 171, viewNum: 5}, // 耳机 - {sort: 398, viewNum: 5}, // 只能装备 - {sort: 185, viewNum: 5}, // 相机 - {misort: 259, viewNum: 5}, // 美妆 - {sort: 267, viewNum: 5}, // 杯子/水壶 - {sort: 313, viewNum: 5}, // 手机/ipad壳套 - {sort: 211, viewNum: 5}, // 数码配件 - {sort: 292, viewNum: 5}, // 玩偶 - {sort: 272, viewNum: 5}, // 储物收纳 - {sort: 183, viewNum: 5}, // 启用家居 - {sort: 273, viewNum: 5}, // 厨具/餐具 - {sort: 271, viewNum: 5} // 靠枕/靠垫/抱枕 - ] -}; - -const getNavs = rawNavs => { - const navs = rawNavs; - let list = []; - - _.forEach(navs, it => { - let obj = {}; - - obj.name = it.name; - obj.href = it.url; - - list.push(obj); - }); +const channelMap = dataMap.channel; - return list; -}; +const sortMap = dataMap.sort; // 构建url -const httpBuildQuery = data => { +const _httpBuildQuery = data => { return searchApi.get('/search.json', data); }; /** - * 格式化商品信息 - * - * @param array $productData 需要格式化的商品数据 - * @param bool $showTags 控制是否显示标签 - * @param bool $showNew 控制是否显示NEW图标 - * @param bool $showSale 控制是否显示SALE图标 - * @param int $width 图片的宽度 - * @param int $height 图片的高度 - * @param bool $isApp 判断是不是APP访问 - * @param bool $showPoint 商品价格是否显示小数位,默认显示 - * @return array | false + * 获取带小图的banner + * @param {[Object]} data 原始数据 + * @return {[Object]} 转换后的数据 */ -const formatProduct = (productData, showTags, showNew, showSale, width, height, isApp, showPoint) => { - let result = {}; - - // 默认值 - if (!showTags) { - showTags = true; - } - if (!showNew) { - showNew = true; - } - if (!showSale) { - showSale = true; - } - if (!width) { - width = 290; - } - if (!height) { - height = 388; - } - if (!isApp) { - isApp = false; - } - if (!showPoint) { - showPoint = true; - } - - // 商品信息有问题,则不显示 - if (!productData.product_skn || !productData.goods_list[0]) { - return false; - } - - // 市场价和售价一样,则不显示市场价 - if (parseInt(productData.market_price, 0) === parseInt(productData.sales_price, 0)) { - productData.market_price = false; - } - - // 设置默认图片 - _.forEach(productData.goods_list, item => { - if (item.is_default === 'Y') { - productData.default_images = item.images_url; - } - }); - - if (!productData.default_images) { - productData.default_images = productData.goods_list[0].images_url; - } - - result.id = productData.product_skn; - result.product_id = productData.product_id; - result.thumb = images.getImageUrl(productData.default_images, width, height); - result.name = productData.product_name; - result.price = !productData.market_price ? false : productData.market_price; - result.salePrice = productData.sales_price; - if (showPoint) { - result.price += '.00'; - result.salePrice += '.00'; - } - - result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y'); - result.url = 'http://item.yohobuy.com/product/pro_' + - productData.product_id + '_' + - productData.goods_list[0].goods_id + '/' + - productData.cn_alphabet + '.html'; - - // APP访问需要加附加的参数 - // 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护 - if (isApp) { - result.url += '?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":' + - productData.product_skn + '}}'; - } - - if (showTags) { - result.tags = {}; - result.tags.is_new = showNew && productData.is_new && productData.is_new === 'Y'; // 新品 - result.tags.is_discount = showSale && productData.is_discount && productData.is_discount === 'Y'; // 在售 - result.tags.is_limited = productData.is_limited && productData.is_limited === 'Y'; // 限量 - result.tags.is_yohood = productData.is_yohood && productData.is_yohood === 'Y'; // YOHOOD - result.tags.midYear = productData['mid-year'] && productData['mid-year'] === 'Y'; // 年中 - result.tags.yearEnd = productData['year-end'] && productData['year-end'] === 'Y'; // 年末 - result.tags.is_advance = productData.is_advance && productData.is_advance === 'Y'; // 再到着 - - if (result.is_soon_sold_out && result.tags.is_discount) { - result.tags.is_new = false;// 打折与即将售完组合显示打折 - } else if (result.tags.is_discount && - (result.tags.is_new || result.tags.is_limited || result.tags.is_yohood || result.tags.is_advance)) { - result.tags.is_discount = false;// 打折与其它组合则隐藏打折 - } else if (result.tags.is_yohood && result.tags.is_new) { - result.tags.is_new = false;// YOHOOD和新品组合显示YOHOOD - } - } - return result; -}; - -const getBannerList = data => { - let list = []; - - _.forEach(data, (bannerData) => { - let obj = {}; - - obj.href = bannerData.url; - obj.img = bannerData.src; - obj.name = bannerData.title; - - list.push(obj); - }); - - return list; -}; - - -const getDebrisSlide = data => { +const _getDebrisSlide = data => { let floorData = { debrisSlider: { left: [], @@ -307,35 +70,32 @@ const getDebrisSlide = data => { _.mapKeys(data, (value, key) => { _.forEach(value, slideData => { - let obj = {}; - - obj.href = slideData.url; - obj.img = slideData.img; - - floorData.debrisSlider[key].push(obj); + floorData.debrisSlider[key].push(slideData); }); }); return floorData; }; -const getadbannerData = data => { - const obj = { - adbanner: { - href: '', - img: '', - name: '' - } - }; - obj.adbanner.href = data.url; - obj.adbanner.img = data.src; - obj.adbanner.name = data.title; +/** + * 获取广告位 + * @param {Object} data 原始数据 + * @return {Object} 转换后的数据 + */ +const _getadbannerData = data => { - return obj; + return { + adbanner: data + }; }; -const getSlideData = srcData => { +/** + * 生成banner模板数据 + * @param {Object} srcData 原始数据 + * @return {Object} 转换后的数据 + */ +const _getSlideData = srcData => { const slideData = { slide: { list: [], @@ -344,22 +104,27 @@ const getSlideData = srcData => { }; if (srcData.big_image) { - slideData.slide.list = getBannerList(srcData.big_image); + slideData.slide.list = srcData.big_image; } if (srcData.list) { - slideData.slide.pagination = getBannerList(srcData.list); + slideData.slide.pagination = srcData.list; } if (_.isArray(srcData)) { - slideData.slide.list = getBannerList(srcData); + slideData.slide.list = srcData; } return slideData; }; -const getNewReportFloorData = args => { +/** + * 获取最新速报模板数据 + * @param {Object} srcData 原始数据 + * @return {Object} 转换后的数据 + */ +const _getNewReportFloorData = args => { const title = args[0].data.text; let item = args[1].data; let secondItem = args[2].data; @@ -367,7 +132,6 @@ const getNewReportFloorData = args => { let forthItem = args[4]; let list = []; - let obj = {}; const data = { newReport: { @@ -381,43 +145,44 @@ const getNewReportFloorData = args => { let floorDatas = []; - obj.href = item[0].url; - obj.img = item[0].src; - - list.push(obj); + list.push(item[0]); _.forEach(secondItem, (floorData) => { - let o = {}; - - o.href = floorData.url; - o.img = floorData.src; - - list.push(o); + list.push(floorData); }); - obj.href = thirdItem[0].url; - obj.img = thirdItem[0].src; - - list.push(obj); + list.push(thirdItem[0]); data.newReport.list = list; floorDatas.push(data); if (forthItem.template_name === 'single_image') { - adData = getadbannerData(forthItem.data[0]); + adData = _getadbannerData(forthItem.data[0]); floorDatas.push(adData); } return floorDatas; }; -const setChannelType = (obj, type) => { + +/** + * 给目标对象绑定频道属性 + * @param {Object} obj 需要绑定频道属性的对象 + * @param {String} type 需要设置的频道类型 + * @return undefined + */ +const _setChannelType = (obj, type) => { obj[type + 'Channel'] = true; }; -// 优选品牌 -const getPreBrandTopData = (args, type) => { +/** + * 获取优选品牌模板数据 + * @param {[Object]} args 参数列表 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getPreBrandTopData = (args, type) => { const title = args[0].data.text; let item = args[1].data; @@ -429,22 +194,20 @@ const getPreBrandTopData = (args, type) => { } }; - _.forEach(item, (topData) => { - let o = {}; + data.preferenceBrands.imgBrand = item; - o.href = topData.url; - o.img = topData.src; - - data.preferenceBrands.imgBrand.push(o); - }); - - setChannelType(data.preferenceBrands, type); + _setChannelType(data.preferenceBrands, type); return data; }; -// 热门品类 -const getHotGoodsFloorData = (args, type) => { +/** + * 获取热门分类模板数据 + * @param {[Object]} args 参数列表 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getHotGoodsFloorData = (args, type) => { let item = args[0]; let nextItem = args[1]; @@ -463,67 +226,46 @@ const getHotGoodsFloorData = (args, type) => { } }; - _.forEach(item.data.menuNav.list, it => { - let obj = {}; - - - obj.name = it.name; - obj.href = it.url; - category.push(obj); - }); - - _.forEach(item.data.menuNav.blocks, it => { - let obj = {}; + category = item.data.menuNav.list; - obj.name = it.title; - obj.href = it.url; - obj.img = it.img; - keyword.push(obj); - }); + keyword = item.data.menuNav.blocks; _.forEach(item.data.imgs, (it, idx) => { - let obj = {}; - - obj.name = it.title; - obj.href = it.url; - obj.img = it.img; if (idx === 0 || (idx === 4 && type === 'boys')) { - brands.push(obj); + brands.push(it); } else { - types.push(obj); + types.push(it); } }); - _.forEach(nextItem.data, (it) => { - let obj = {}; - - obj.name = it.title; - obj.href = it.url; - obj.img = it.src; - - products.push(obj); - }); + products = nextItem.data; object.name = item.data.name; object.keyword = keyword; object.category = category; object.brands = brands; object.types = types; - object.navs = getNavs(item.data.navs.list); + object.navs = item.data.navs.list; object.products = products; list.push(object); data.recommend.tplrecommend = list; - setChannelType(data.recommend, type); + _setChannelType(data.recommend, type); return data; }; -const getBoysSingleHot = (args, type) => { +/** + * 获取boys人气单品模版数据 + * @param {[Object]} args 参数列表 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getBoysSingleHot = (args, type) => { const len = 10; const data = { singlehot: { @@ -539,7 +281,6 @@ const getBoysSingleHot = (args, type) => { for (let i = 0; i < len; i++) { let pos = i; let val = {}; - let obj = {}; if (i === 1) { val = args[1].data[0]; // 第二个是大图 @@ -551,24 +292,28 @@ const getBoysSingleHot = (args, type) => { } val = args[2].data[pos]; } - obj.href = val.url; - obj.img = val.src; - list.push(obj); + list.push(val); } data.singlehot.imgHot = list; - setChannelType(data.singlehot, type); + _setChannelType(data.singlehot, type); floorDatas.push(data); if (args[3].template_name === 'single_image') { - adData = getadbannerData(args[3].data[0]); + adData = _getadbannerData(args[3].data[0]); floorDatas.push(adData); } return floorDatas; }; -const getGirlsSingleHot = args => { +/** + * 获取girls人气单品模版数据 + * @param {[Object]} args 参数列表 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getGirlsSingleHot = args => { let goods = args[2].data; let skns = ''; @@ -591,16 +336,28 @@ const getGirlsSingleHot = args => { }; -// 人气单品 -const getSingleHotFloorData = (args, type) => { +/** + * 人气单品入口 + * @param {[Object]} args 参数列表 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getSingleHotFloorData = (args, type) => { if (type === 'boys') { - return getBoysSingleHot(args, type); + return _getBoysSingleHot(args, type); } else { - return getGirlsSingleHot(args, type); + return _getGirlsSingleHot(args, type); } }; -const getAsyncSingleHot = (args, queryResult, type) => { +/** + * 处理异步获取的人气单品数据 + * @param {[Object]} args 参数列表 + * @param {Object} queryResult 异步获取的数据 + * @param {String} type 频道类型 + * @return {Object} + */ +const _getSingehotViaResult = (args, queryResult, type) => { const data = { singlehot: { name: args[0].data.text, @@ -611,51 +368,49 @@ const getAsyncSingleHot = (args, queryResult, type) => { }; if (args[3].template_name === 'app_icon_list') { - _.forEach(args[3].data, it => { - let obj = {}; - - obj.href = it.url; - obj.name = it.title; - obj.img = it.src; - - data.singlehot.brands.push(obj); - }); + data.singlehot.brands = args[3].data; } - _.forEach(queryResult.data.product_list, (it, index) => { - let obj = {}; - const formatData = formatProduct(it, true, true, true, 280, 373); - - if (index > 12) { - return; - } - - - obj.price = formatData.salePrice; - obj.href = formatData.url; - obj.img = formatData.thumb; - obj.name = formatData.name; + if (queryResult.data) { + _.forEach(queryResult.data.product_list || [], (it, index) => { + const formatData = processProduct(it, { + width: 280, + height: 373 + }); - if (index < 3) { - obj.tip = 'TOP' + (index + 1); - } + if (index > 12) { + return; + } - data.singlehot.imgHot.push(obj); - }); + if (index < 3) { + formatData.tip = 'TOP' + (index + 1); + } - data.singlehot.navs = getNavs(args[1].data); - setChannelType(data.singlehot, type); + data.singlehot.imgHot.push(formatData); + }); + } + data.singlehot.navs = args[1].data; + _setChannelType(data.singlehot, type); return data; }; -const processFloorDataWithQueryReusult = (rawData, floorData, queryResult, title, type) => { +/** + * 异步获取人气单品 + * @param {[Object]} rawData 接口返回的原始数据 + * @param {[Object]} floorData 已经经过处理的楼层数据 + * @param {Object} queryResult 接口中用于请求人气单品的数据 + * @param {String} title 人气单品楼层的标题 + * @param {Type} type 人气单品楼层的类型 + * @return {Object} + */ +const _processFloorDataWithQueryReusult = (rawData, queryResult, title, type) => { let data = {}; _.forEach(rawData, (subData, index) => { - const text = subData.data.text && getText(subData.data.text); + const text = subData.data.text && _getText(subData.data.text); if (text === title) { - data = getAsyncSingleHot(rawData.slice(index, index + 4), queryResult, type); + data = _getSingehotViaResult(rawData.slice(index, index + 4), queryResult, type); } }); @@ -668,7 +423,7 @@ const processFloorDataWithQueryReusult = (rawData, floorData, queryResult, title * @param string data * return obj */ -const getNewGoodsFloorData = args => { +const _getNewGoodsFloorData = args => { const data = { newArrivls: { name: args[0].data.text, @@ -676,157 +431,98 @@ const getNewGoodsFloorData = args => { } }; - data.newArrivls.navs = getNavs(args[1].data); + data.newArrivls.navs = args[1].data; return data; }; - - - -/** - * 获取最新上架商品数据 - * - * @param string $channel - * @return array - */ -exports.getNewArrival = channel => { - let rel = [], - sortList = sortMap[channel], - params = { - order: 'shelve_time:desc', - status: 1, - sales: 'Y', - attribute_not: 2, - stocknumber: 3, - shelve_time: getShelveTime(20) - }; - - params.gender = channelMap[channel].gender; - - - _.forEach(sortList, (item) => { - let data = Object.assign(item, params); - - rel.push(httpBuildQuery(data)); - }); - - return Promise.all(rel).then(res => { - let data = [], - result = []; - - _.forEach(sortList, (it, index) => { - if (res[index].data.product_list.length === sortList[index].viewNum) { - data = data.concat(res[index].data.product_list); - } - }); - - _.forEach(data, (item) => { - result.push(formatProduct(item, true, true, true, 280, 373)); - }); - - return result; - }); -}; - - -const getCategoryFloorData = args => { +const _getCategoryFloorData = args => { const data = { category: { name: args[0].data.text, - navs: getNavs(args[1].data), + navs: args[1].data, list: [] } }; _.forEach(args[2].data, (it, index) => { - let obj = {}; - - obj.href = it.url; - obj.img = it.src; // 设置图片大小 if (index === 1) { - obj.w = '377;'; - obj.h = '504;'; + it.w = '377;'; + it.h = '504;'; } else { - obj.w = '185'; - obj.h = '510'; + it.w = '185'; + it.h = '510'; } - data.category.list.push(obj); + data.category.list.push(it); }); return data; }; -const getAccordionFloorData = args => { +const _getAccordionFloorData = args => { let data = { accordion: { name: args[0].data.text, - navs: getNavs(args[1].data), + navs: args[1].data, slide: [] } }; - _.forEach(args[2].data, it => { - let obj = {}; - - obj.name = it.title; - obj.img = it.src; - obj.href = it.url; - - data.accordion.slide.push(obj); - }); + data.accordion.slide = args[2].data; return data; }; -const requestContent = type => { - let data = sign.apiSign({ - /* eslint-disable */ - client_type: 'web', - /* eslint-enable */ + + + +const _requestContent = type => { + let data = { + client_type: 'web', content_code: channelMap[type || 'boys'].code, gender: channelMap[type || 'boys'].gender, page: 1, limit: 1000 - }); + }; return serviceApi.get('operations/api/v5/resource/home', data).then(res => { if (res.code === 200) { return res; } else { - log.error('获取资源位接口返回状态码 不是 200'); + log.error('response code of "operations/api/v5/resource/home" 200'); return {}; } }); }; const floorMap = { - slide: getSlideData, - hot: getHotGoodsFloorData, - 最新速报: getNewReportFloorData, - 人气单品: getSingleHotFloorData, - 'GIRL KIDS': getSingleHotFloorData, - 'BOY KIDS': getSingleHotFloorData, - 优选品牌: getPreBrandTopData, - 最新上架: getNewGoodsFloorData, - ad: getadbannerData, - category: getCategoryFloorData, - accordion: getAccordionFloorData, - debrisSlide: getDebrisSlide + slide: _getSlideData, + hot: _getHotGoodsFloorData, + 最新速报: _getNewReportFloorData, + 人气单品: _getSingleHotFloorData, + 'GIRL KIDS': _getSingleHotFloorData, + 'BOY KIDS': _getSingleHotFloorData, + 优选品牌: _getPreBrandTopData, + 最新上架: _getNewGoodsFloorData, + ad: _getadbannerData, + category: _getCategoryFloorData, + accordion: _getAccordionFloorData, + debrisSlide: _getDebrisSlide }; -const processFloorData = (rawData, type) => { +const _processFloorData = (rawData, type) => { let floorList = []; let searchPromise = []; let singlehotFloorIndex = []; - let singlehotFloorTitile = []; + let singlehotFloorTitle = []; + // 定义各种楼层需要用到的接口返回的数组中元素的个数 const bigFloorLength = 5; const normalFloorLength = 3; const hotCategoryLength = 2; @@ -841,7 +537,7 @@ const processFloorData = (rawData, type) => { } else if (data.template_intro === '热门品类') { // 处理热门品类 floorData = floorMap.hot.call(null, rawData.slice(index, index + hotCategoryLength), type); } else if (data.data.text) { // 处理一般楼层 - let text = getText(data.data.text); + let text = _getText(data.data.text); let lastIndex = index + bigFloorLength < rawData.length ? index + bigFloorLength : index + (rawData.length - index - 1); @@ -876,7 +572,7 @@ const processFloorData = (rawData, type) => { singlehotFloorIndex.push(floorList.length); // 记住楼层标题, 以便后面promise获取数据后插入楼层数据 - singlehotFloorTitile.push(getText(data.data.text)); + singlehotFloorTitle.push(_getText(data.data.text)); } else if (!_.isNil(floorData)) { _.isArray(floorData) ? floorList = floorList.concat(floorData) : @@ -887,26 +583,76 @@ const processFloorData = (rawData, type) => { return { floors: floorList, promise: _.reverse(searchPromise), - singlehotFloorTitile: _.reverse(singlehotFloorTitile), + singlehotFloorTitle: _.reverse(singlehotFloorTitle), singlehotFloorIndex: _.reverse(singlehotFloorIndex) }; }; +/** + * 获取最新上架商品数据 + * + * @param string $channel + * @return array + */ +const getNewArrival = channel => { + let rel = [], + sortList = sortMap[channel], + params = { + order: 'shelve_time:desc', + status: 1, + sales: 'Y', + attribute_not: 2, + stocknumber: 3, + shelve_time: _getShelveTime(20) + }; + + params.gender = channelMap[channel].gender; + + + _.forEach(sortList, (item) => { + let data = Object.assign(item, params); + + rel.push(_httpBuildQuery(data)); + }); + + return Promise.all(rel).then(res => { + let data = [], + result = []; + + _.forEach(sortList, (it, index) => { + if (res[index].data.product_list && res[index].data.product_list.length === sortList[index].viewNum) { + data = data.concat(res[index].data.product_list); + } + }); + + _.forEach(data, (item) => { + result.push(processProduct(item, { + width: 280, + height: 373 + })); + }); + + return result; + }); +}; + + + /** * 获取频道页数据 - * @param {string} type 传入频道页类型,值可以是: boys, girls, kids, lifestyle - * @return {object} + * @param {String} type 传入频道页类型,值可以是: boys, girls, kids, lifestyle + * @return {Object} */ -exports.getContent = type => { - return Promise.all([headerModel.requestHeaderData(type), requestContent(type)]).then(res => { +const getContent = type => { + return Promise.all([headerModel.requestHeaderData(type), _requestContent(type)]).then(res => { let headerData = res[0].data || res[0], contentData = res[1].data ? res[1].data.list : res[1]; let data = {}; - const processResult = processFloorData(contentData, type); + const processResult = _processFloorData(contentData, type); data = headerData; data.module = 'channel'; @@ -921,7 +667,7 @@ exports.getContent = type => { floorData: data, searchPromise: processResult.promise, singlehotFloorIndex: processResult.singlehotFloorIndex, - singlehotFloorTitile: processResult.singlehotFloorTitile, + singlehotFloorTitle: processResult.singlehotFloorTitle, channelType: type }; @@ -933,8 +679,12 @@ exports.getContent = type => { _.forEach(res, (data, index) => { result.floorData.channel .splice(result.singlehotFloorIndex[index], 0, - processFloorDataWithQueryReusult(result.rawData, - result.floorData, data, result.singlehotFloorTitile[index], result.channelType)); + _processFloorDataWithQueryReusult( + result.rawData, + data, + result.singlehotFloorTitle[index], + result.channelType + )); }); return result.floorData; @@ -947,8 +697,8 @@ exports.getContent = type => { // 优选品牌楼层floorData-ajax -exports.getbrandFloorDataAjax = type => { - return requestContent(type).then(res => { +const getbrandFloorDataAjax = type => { + return _requestContent(type).then(res => { let contentData = res.data ? res.data.list : []; let data = { @@ -974,3 +724,9 @@ exports.getbrandFloorDataAjax = type => { return data; }); }; + +module.exports = { + getNewArrival: getNewArrival, + getContent: getContent, + getbrandFloorDataAjax: getbrandFloorDataAjax +}; diff --git a/apps/channel/views/partials/ad-floor.hbs b/apps/channel/views/partials/ad-floor.hbs index 4ee43d9..29d2214 100644 --- a/apps/channel/views/partials/ad-floor.hbs +++ b/apps/channel/views/partials/ad-floor.hbs @@ -1,3 +1,3 @@ <div class="floor-ad"> - <a href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 1150 129}}"/></a> + <a href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image src 1150 129}}"/></a> </div> diff --git a/apps/channel/views/partials/big-slider.hbs b/apps/channel/views/partials/big-slider.hbs index 4447517..e84fc06 100644 --- a/apps/channel/views/partials/big-slider.hbs +++ b/apps/channel/views/partials/big-slider.hbs @@ -1,7 +1,7 @@ <div class="debris-slider clearfix"> <div class="left-col col"> {{# left}} - <a href="{{href}}" target="_blank"> + <a href="{{url}}" target="_blank"> <img class="lazy" data-original="{{image img 200 265}}"> </a> {{/ left}} @@ -10,7 +10,7 @@ <ul class="slide-wrapper"> {{# center}} <li> - <a href="{{href}}" target="_blank"> + <a href="{{url}}" target="_blank"> <img class="lazy" data-original="{{image img 570 633}}"> </a> </li> @@ -18,16 +18,16 @@ </ul> <div class="slide-switch"> <a class="prev" href="javascript:;"> - <span class="iconfont"></span> + <span class="iconfont"></span> </a> <a class="next" href="javascript:;"> - <span class="iconfont"></span> + <span class="iconfont"></span> </a> </div> </div> <div class="right-col col"> {{# right}} - <a href="{{href}}" target="_blank"> + <a href="{{url}}" target="_blank"> <img class="lazy" data-original="{{image img 200 265}}"> </a> {{/ right}} diff --git a/apps/channel/views/partials/boy-brands.hbs b/apps/channel/views/partials/boy-brands.hbs index 639be5e..a5d30b0 100644 --- a/apps/channel/views/partials/boy-brands.hbs +++ b/apps/channel/views/partials/boy-brands.hbs @@ -3,18 +3,18 @@ <ul class="img-list imgopacity clearfix"> {{# imgBrand}} <li class="img-item"> - <a href="{{href}}" target= "_blank"> - <img src="{{image img 378 175}}" alt=""> + <a href="{{url}}" target= "_blank"> + <img src="{{image src 378 175}}" alt=""> </a> </li> {{/ imgBrand}} </ul> <div class="img-brand-switch"> <a class="prev" href="javascript:;"> - <span class="iconfont"></span> + <span class="iconfont"></span> </a> <a class="next" href="javascript:;"> - <span class="iconfont"></span> + <span class="iconfont"></span> </a> </div> </div> diff --git a/apps/channel/views/partials/boy-recommend.hbs b/apps/channel/views/partials/boy-recommend.hbs index bae7339..4bb530a 100644 --- a/apps/channel/views/partials/boy-recommend.hbs +++ b/apps/channel/views/partials/boy-recommend.hbs @@ -5,26 +5,26 @@ <div class="tpl-nav"> <div class="tpl-keywords"> {{#each keyword}} - <a class="keywords{{@index}}" title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 185 152}}"/></a> + <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image img 185 152}}"/></a> {{/each}} </div> <div class="tpl-category clearfix"> {{#each category}} - <a href="{{href}}" target= "_blank">{{name}}</a> + <a href="{{url}}" target= "_blank">{{title}}</a> {{/each}} </div> </div> <div class="tpl-brands imgopacity clearfix"> <ul> {{#each brands}} - <li><a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li> + <li><a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li> {{/each}} </ul> </div> <div class="tpl-types imgopacity clearfix"> <ul> {{#each types}} - <li><a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li> + <li><a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li> {{/each}} </ul> </div> @@ -32,7 +32,7 @@ <div class="tpl-products imgopacity clearfix"> <ul> {{#each products}} - <li><a href="{{href}}" title="{{name}}" target= "_blank"><img class="lazy" src="{{image img 222 298}}"/></a></li> + <li><a href="{{url}}" title="{{title}}" target= "_blank"><img class="lazy" src="{{image src 222 298}}"/></a></li> {{/each}} </ul> </div> diff --git a/apps/channel/views/partials/boy-singlehot.hbs b/apps/channel/views/partials/boy-singlehot.hbs index 612f190..4c83184 100644 --- a/apps/channel/views/partials/boy-singlehot.hbs +++ b/apps/channel/views/partials/boy-singlehot.hbs @@ -3,9 +3,9 @@ <ul class="g-list imgopacity"> {{#each imgHot}} {{#if @last}} - <li><a class="impo{{@index}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li> + <li><a class="impo{{@index}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image src 378 248}}"/></a></li> {{^}} - <li><a class="impo{{@index}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li> + <li><a class="impo{{@index}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image src 185 248}}"/></a></li> {{/if}} {{/each}} </ul> diff --git a/apps/channel/views/partials/category-floor.hbs b/apps/channel/views/partials/category-floor.hbs index 302b155..46447d6 100644 --- a/apps/channel/views/partials/category-floor.hbs +++ b/apps/channel/views/partials/category-floor.hbs @@ -3,8 +3,8 @@ <ul class="clearfix"> {{# list}} <li class="cate-item{{@index}}"> - <a href="{{href}}" target= "_blank"> - <img class="lazy" data-original="{{image img w h}}" alt=""> + <a href="{{url}}" target= "_blank"> + <img class="lazy" data-original="{{image src w h}}" alt=""> </a> </li> {{/ list}} diff --git a/apps/channel/views/partials/commodity.hbs b/apps/channel/views/partials/commodity.hbs index ed729ef..5fc3a14 100644 --- a/apps/channel/views/partials/commodity.hbs +++ b/apps/channel/views/partials/commodity.hbs @@ -4,6 +4,6 @@ <div class="goods-container clearfix"> </div> <div class="loading"> - <a href="{{href}}" target= "_blank">Loading...</a> + <a href="{{url}}" target= "_blank">Loading...</a> </div> </div> diff --git a/apps/channel/views/partials/girl-brands.hbs b/apps/channel/views/partials/girl-brands.hbs index c2eae78..c6555c7 100644 --- a/apps/channel/views/partials/girl-brands.hbs +++ b/apps/channel/views/partials/girl-brands.hbs @@ -1,14 +1,14 @@ <div class="preference-brand imgopacity"> <div class="img-slider-wrapper clearfix" style="background-color:{{sliderColor}};"> <div class="img-brand-switch"> - <a class="prev iconfont" href="javascript:;"></a> - <a class="next iconfont" href="javascript:;"></a> + <a class="prev iconfont" href="javascript:;"></a> + <a class="next iconfont" href="javascript:;"></a> </div> <div class="img-container-landscape"> <ul class="img-list"> {{# imgBrand}} <li class="img-item"> - <a href="{{href}}" target= "_blank"> <img src="{{image img 320 430}}" alt="{{alt}}"></a> + <a href="{{url}}" target= "_blank"> <img src="{{image src 320 430}}" alt="{{alt}}"></a> </li> {{/ imgBrand}} </ul> diff --git a/apps/channel/views/partials/girl-recommend.hbs b/apps/channel/views/partials/girl-recommend.hbs index 7fadc9e..9601b8d 100644 --- a/apps/channel/views/partials/girl-recommend.hbs +++ b/apps/channel/views/partials/girl-recommend.hbs @@ -5,24 +5,24 @@ <div class="tpl-nav"> <div class="tpl-keywords"> {{#each keyword}} - <a class="keywords{{@index}}" title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 185 76}}"/></a> + <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 185 76}}"/></a> {{/each}} </div> <div class="tpl-category clearfix"> {{#each category}} - <a href="{{href}}" target= "_blank">{{name}}</a> + <a href="{{url}}" target= "_blank">{{title}}</a> {{/each}} </div> </div> <div class="tpl-brands imgopacity clearfix"> {{#each brands}} - <a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 377 504}}"/></a> + <a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 377 504}}"/></a> {{/each}} </div> <div class="tpl-types imgopacity clearfix"> <ul> {{#each types}} - <li><a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 185 504}}"/></a></li> + <li><a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 185 504}}"/></a></li> {{/each}} </ul> </div> diff --git a/apps/channel/views/partials/girl-singlehot.hbs b/apps/channel/views/partials/girl-singlehot.hbs index 96caabe..891b511 100644 --- a/apps/channel/views/partials/girl-singlehot.hbs +++ b/apps/channel/views/partials/girl-singlehot.hbs @@ -4,13 +4,13 @@ <ul class="g-list imgopacity clearfix"> {{#each imgHot}} <li> - <a href="{{href}}" target= "_blank"><div class="commodity-img"> + <a href="{{url}}" target= "_blank"><div class="commodity-img"> {{# tip}} <i class="top">{{.}}</i> {{/ tip}} - <img class="lazy" data-original="{{image img 280 373}}"/></div> + <img class="lazy" data-original="{{image thumb 280 373}}"/></div> <p class="commodity-name">{{name}}</p> - <p class="commodity-price"><span>¥{{price}}</span></p> + <p class="commodity-price"><span>¥{{salePrice}}</span></p> </a> </li> {{/each}} @@ -18,7 +18,7 @@ </div> <div class="commodity-brands imgopacity clearfix"> {{#each brands}} - <a href="{{href}}" title="{{name}}" target= "_blank"><img class="lazy" data-original="{{image img 185 86}}"/></a> + <a href="{{url}}" title="{{title}}" target= "_blank"><img class="lazy" data-original="{{image src 185 86}}"/></a> {{/each}} </div> </div> diff --git a/apps/channel/views/partials/newreport-floor.hbs b/apps/channel/views/partials/newreport-floor.hbs index 4f19259..131f4ab 100644 --- a/apps/channel/views/partials/newreport-floor.hbs +++ b/apps/channel/views/partials/newreport-floor.hbs @@ -6,11 +6,11 @@ {{#unless @last}} <li> - <a href="{{href}}" target= "_blank"> + <a href="{{url}}" target= "_blank"> {{#if @first}} - <img class="lazy" data-original="{{image img 377 504}}" alt="" > + <img class="lazy" data-original="{{image src 377 504}}" alt="" > {{^}} - <img class="lazy" data-original="{{image img 185 248}}" alt="" > + <img class="lazy" data-original="{{image src 185 248}}" alt="" > {{/if}} </a> </li> @@ -21,8 +21,8 @@ {{# list}} {{#if @last}} <div class="last-item"> - <a href="{{href}}" target= "_blank"> - <img class="lazy" data-original="{{image img 377 504}}" alt=""> + <a href="{{url}}" target= "_blank"> + <img class="lazy" data-original="{{image src 377 504}}" alt=""> </a> </div> {{/if}} diff --git a/apps/channel/views/partials/slide-accordion.hbs b/apps/channel/views/partials/slide-accordion.hbs index f0c6818..ee36675 100644 --- a/apps/channel/views/partials/slide-accordion.hbs +++ b/apps/channel/views/partials/slide-accordion.hbs @@ -2,7 +2,7 @@ <div class="slide-accordion clearfix"> <ul> {{#each slide}} - <li><a title="{{name}}" href="{{href}}" target= "_blank"><div class="g-mask"></div><img class="lazy" data-original="{{image img 650 400}}"/></a></li> + <li><a title="{{title}}" href="{{url}}" target= "_blank"><div class="g-mask"></div><img class="lazy" data-original="{{image src 650 400}}"/></a></li> {{/each}} </ul> </div> diff --git a/apps/passport/auth.js b/apps/passport/auth.js new file mode 100644 index 0000000..adf208a --- /dev/null +++ b/apps/passport/auth.js @@ -0,0 +1,27 @@ +/** + * passport 验证策略注册 + * @author: jiangfeng<jeff.jiang@yoho.cn> + * @date: 2016/5/31 + */ + +'use strict'; +const passport = require('passport'); +const WeixinStrategy = require('passport-weixin'); + +const config = require('../../config/common'); + +let siteUrl = config.siteUrl.indexOf('//') === 0 ? 'http:' + config.siteUrl : config.siteUrl; + +/** + * wechat登录 + */ + +passport.use('wechat', new WeixinStrategy({ + clientID: config.thirdLogin.wechat.appID, + clientSecret: config.thirdLogin.wechat.appSecret, + callbackURL: `${siteUrl}/passport/login/wechat/callback`, + requireState: true, + scope: 'snsapi_login' +}, function(accessToken, refreshToken, profile, done) { + done(null, profile); +})); diff --git a/apps/passport/controllers/back.js b/apps/passport/controllers/back.js new file mode 100644 index 0000000..374bd0d --- /dev/null +++ b/apps/passport/controllers/back.js @@ -0,0 +1,402 @@ +/** + * 找回密码 + * Created by Tao.Huang on 2016/6/12. + */ + +'use strict'; + +const helpers = global.yoho.helpers; +const service = require('../models/back-service'); +const passportHelper = require('../models/passport-helper'); +const _ = require('lodash'); + +helpers.urlFormat = (url, qs) => { + let localhost = 'http://localhost:6002'; + + if (_.isEmpty(qs)) { + return localhost + url; + } + + const queryString = require('queryString'); + + let str = queryString.stringify(qs); + + return localhost + url + '?' + str; + +}; + +/** + * 找回密码主页面 + */ +const index = (req, res, next) => { + service.indexPageDataAsync() + .then(result => { + res.render('back/index', Object.assign({ + module: 'passport', + page: 'back-index', + title: '找回密码' + }, result)); + }) + .catch(next); +}; + +/** + * 校验用户输入信息,是否是已经注册的用户 + */ +const validateInputAPI = (req, res, next) => { + let userInput = req.body.phoneNum || ''; + let areaCode = (req.body.area || '86').replace('+', ''); + + service.validateEmailOrMobileAsync(userInput, areaCode) + .then(result => { + req.inputInfo = result; + next(); + }) + .catch(err => { + res.json({ + code: 400, + message: err + }); + }); +}; + +/** + * 校验用户输入信息,是否是已经注册的用户 + */ +const validateUserPage = (req, res, next) => { + let userInput = req.body.phoneNum || ''; + let areaCode = (req.body.area || '86').replace('+', ''); + + service.validateEmailOrMobileAsync(userInput, areaCode) + .then(result => { + req.inputInfo = result; + next(); + }) + .catch(()=> { + res.redirect(helpers.urlFormat('/passport/back/index')); + }); +}; + +const getUserInfoAPI = (req, res, next) => { + let inputInfo = req.inputInfo; + + service.findUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area) + .then(result => { + res.json(result); + }) + .catch(next); +}; + +const sendCodePage = (req, res, next) => { + let inputInfo = req.inputInfo; + + service.sendCodeToUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area) + .then(result => { + + if (!(result.code && result.code === 200)) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + return next(); + }) + .catch(next); +}; + +const saveInSession = (req, res) => { + switch (req.inputInfo.type) { + case 'email': + { + req.session.email = req.inputInfo.phone; + res.redirect(helpers.urlFormat('/passport/back/sendEmail')); + break; + } + case 'mobile': + { + req.session.mobile = req.inputInfo.phone; + req.session.area = req.inputInfo.area; + res.redirect(helpers.urlFormat('/passport/back/verification')); + break; + } + default: + { + res.redirect(helpers.urlFormat('/passport/back/index')); + } + } +}; + +const sendBackMobileAPI = (req, res, next) => { + let mobile = req.body.mobile || ''; + let area = req.body.area || '86'; + + service.sendCodeToMobileAsync(area, mobile) + .then(result => { + res.json(result); + }) + .catch(next); +}; + +const validateMobileAPI = (req, res, next) => { + let mobile = req.body.mobile || ''; + let area = req.body.area || '86'; + const ERR = {code: 400, message: '验证失败'}; + + if (!passportHelper.validator.isAreaMobile(passportHelper.makeAreaMobile(area, mobile))) { + return res.json(ERR); + } + + next(); +}; + +const validateEmailInSession = (req, res, next) => { + let email = req.session.email || ''; + + if (!email) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + let isp = email.split('@')[1]; + const mapperEmailISP = { + 'yoho.cn': 'http://smail.yoho.cn' + }; + + req.body.emailUrl = mapperEmailISP[isp] || `http://mail.${isp}`; + next(); +}; + +const sendEmailPage = (req, res, next) => { + passportHelper.getLeftBannerAsync() + .then(result => { + res.render('back/send-email', Object.assign({ + module: 'passport', + page: 'back-send-email-ok', + title: '邮件发送成功' + }, { + sendEmail: { + coverHref: result.url, + coverImg: result.img, + email: req.body.emailUrl + } + })); + }) + .catch(next); + +}; + +const validateCodeByEmailPage = (req, res, next) => { + let code = req.query.code || ''; + + if (!_.isEmpty(req.mobileAuth)) { + return next(); + } + + service.checkEmailCodeAsync(code) + .then(result => { + if (!result) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + return next(); + }) + .catch(next); +}; + +const resetPasswordPage = (req, res, next) => { + let code = req.query.code || ''; + + passportHelper.getLeftBannerAsync() + .then(result => { + res.render('back/reset-pwd', Object.assign({ + module: 'passport', + page: 'back-reset-pwd', + title: '重置密码' + }, { + resetPwd: Object.assign({ + coverHref: result.url, + coverImg: result.img, + code: code + }, req.mobileAuth) + })); + }) + .catch(next); +}; + +/** + * 手机验证页面 + */ +const verifyCodeByMobilePage = (req, res, next) => { + + req.body.mobile = '15062219934'; + req.body.area = '86'; + req.body.verifyCode = '8933'; + + passportHelper.getLeftBannerAsync() + .then(result => { + res.render('back/verification', Object.assign({ + module: 'passport', + page: 'back-verify-mobile-code', + title: '手机验证' + }, { + verification: { + coverHref: result.url, + coverImg: result.img, + mobile: req.body.mobile, + area: req.body.area, + verifyCode: req.body.verifyCode + } + })); + }) + .catch(next); +}; + +const checkSuccessStatusPage = (req, res, next) => { + let successType = req.session.successType || ''; + + if (!successType) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + delete req.session.successType; + next(); +}; + +const resetPwdSuccessPage = (req, res, next) => { + passportHelper.getLeftBannerAsync() + .then(result => { + res.render('back/reset-success', Object.assign({ + module: 'passport', + page: 'back-index', + title: '重置密码成功' + }, { + resetSuccess: { + coverHref: result.url, + coverImg: result.img + } + })); + }) + .catch(next); +}; + +const verifyCodeByMobileAPI = (req, res) => { + let mobile = req.param('mobile', ''); + let area = req.param('area', '86'); + let mobileCode = req.param('code', ''); + + // const session = req.session; + + const ERR = { + code: 400, + message: '验证码错误!', + data: helpers.urlFormat('/passport/back/index') + }; + + // if (!code || mobile !== session.mobile || area !== session.area) { + // return res.json(ERR); + // } + + service.verifyCodyByMobileAsync(area, mobile, mobileCode) + .then(result => { + res.json(result); + }) + .catch(()=> { + res.json(ERR); + }); +}; + +const validateExistCodePage = (req, res, next) => { + let code = req.query.code || req.body.code; + + if (!code) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + next(); +}; + +const validateCodeByMobilePage = (req, res, next) => { + let code = req.query.code || req.body.code; + let mobile = req.query.mobile || req.body.mobile; + let area = req.query.area || req.body.area; + let token = req.query.token || req.body.token; + let createdAt = req.query.createdAt || req.body.createdAt; + + if (!mobile) { + req.mobileAuth = {}; + return next(); + } + + let data = { + mobile: mobile, + area: area, + token: token, + createdAt: createdAt + }; + + code = new Buffer(code, 'base64').toString(); + req.mobileAuth = service.authRequest(data, code); + + next(); +}; + +const validatePwdPage = (req, res, next) => { + let pwd = req.body.pwd || ''; + + if (!passportHelper.validator.isPassword(pwd)) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + next(); +}; + +const updatePwdAPI = (req, res, next) => { + let code = req.body.code || ''; + let mobileAuth = req.mobileAuth || {}; + let newPassword = req.body.pwd || ''; + + service.updatePwdAsync(code, mobileAuth, newPassword) + .then(result => { + if (result.status) { + req.session.successType = result.type; + res.redirect(helpers.urlFormat('/passport/back/resetSuccess')); + } else { + res.redirect(helpers.urlFormat('/passport/back/index')); + } + }) + .catch(next); +}; + +const validateMobileInSession = (req, res, next) => { + req.body.mobile = req.session.mobile || ''; + req.body.verifyCode = req.session.verifyCode || ''; + req.body.area = req.session.area || ''; + + if (!(req.body.mobile && req.body.verifyCode)) { + return res.redirect(helpers.urlFormat('/passport/back/index')); + } + + next(); +}; + +module.exports = { + index, + validateInputAPI, + validateUserPage, + getUserInfoAPI, + sendCodePage, + saveInSession, + sendBackMobileAPI, + validateMobileAPI, + validateEmailInSession, + sendEmailPage, + validateCodeByEmailPage, + resetPasswordPage, + verifyCodeByMobilePage, + checkSuccessStatusPage, + resetPwdSuccessPage, + verifyCodeByMobileAPI, + validateExistCodePage, + validateCodeByMobilePage, + validatePwdPage, + updatePwdAPI, + validateMobileInSession +}; + diff --git a/apps/passport/controllers/captcha.js b/apps/passport/controllers/captcha.js new file mode 100644 index 0000000..2c60ec2 --- /dev/null +++ b/apps/passport/controllers/captcha.js @@ -0,0 +1,35 @@ +/** + * Created by TaoHuang on 2016/6/18. + */ + +'use strict'; + +const helpers = global.yoho.helpers; + +const requiredAPI = (req, res, next) => { + let captchaToken = (req.body.verifyCode || '').toLowerCase(); + + if (captchaToken === req.session.captcha) { + return next(); + } else { + return res.json({ + code: 400, + message: '您输入的验证码不正确!' + }); + } +}; + +const requiredPage = (req, res, next) => { + let captchaToken = (req.body.verifyCode || '').toLowerCase(); + + if (captchaToken === req.session.captcha) { + return next(); + } else { + return res.redirect(helpers.urlFormat('/passport/back/index.html')); + } +}; + +module.exports = { + requiredAPI, + requiredPage +}; diff --git a/apps/passport/controllers/login.js b/apps/passport/controllers/login.js new file mode 100644 index 0000000..5dd3761 --- /dev/null +++ b/apps/passport/controllers/login.js @@ -0,0 +1,105 @@ +/** + * 登录 + * @author: Bi Kai<kai.bi@yoho.cn> + * @date: 2016/05/09 + */ +'use strict'; + +const passport = require('passport'); +const uuid = require('uuid'); +const cookie = global.yoho.cookie; +const helpers = global.yoho.helpers; +const log = global.yoho.logger; +const config = global.yoho.config; +const AuthHelper = require('../models/auth-helper'); + +const loginPage = `${config.siteUrl}/passport/login/index`; + +// 第三方登录回调 +function doPassportCallback(req, res, next, user) { + let shoppingKey = cookie.getShoppingKey(req); + let refer = req.cookies.refer; + + if (refer) { + refer = decodeURI(req.cookies.refer); + } else { + refer = config.siteUrl; + } + + if (/sign|login/.test(refer)) { + refer = config.siteUrl; + } + if (user.openId && user.nickname) { + let signinByOpenID; + + if (user.sourceType === 'wechat') { + + // PC 的微信登录之前使用了 open_id, 所以需要特别的接口处理 + signinByOpenID = AuthHelper.signinByWechat( + user.nickname, user.openId, user.unionId, user.sourceType, shoppingKey); + } else { + signinByOpenID = AuthHelper.signinByOpenID( + user.nickname, user.openId, user.sourceType, shoppingKey); + } + + signinByOpenID.then((result) => { + if (result.code !== 200) { + return Promise.reject(result); + } + if (result.data['is_bind'] && result.data['is_bind'] === 'N') { //eslint-disable-line + return helpers.urlFormat('/passport/thirdlogin/index', { + openId: user.unionId || user.openId, + sourceType: user.sourceType, + refer: refer + }); + } else if (result.code === 200 && result.data.uid) { + return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => { + return refer; + }).catch(next); + } + }).then((redirectTo) => { + res.redirect(redirectTo); + }).catch(() => { + res.redirect(loginPage); + }); + } else { + res.redirect(loginPage); + } +} + +const wechat = { + beforeLogin: (req, res, next) => { + let refer = req.query.refer; + + if (!refer) { + refer = req.get('Referer'); + } + refer && res.cookie('refer', encodeURI(refer), { + domain: 'yohobuy.com' + }); + next(); + }, + login: (req, res, next) => { + return passport.authenticate('wechat', { + state: uuid.v4() + })(req, res, next); + }, + callback: (req, res, next) => { + passport.authenticate('wechat', (err, user) => { + if (err) { + log.error(`wechat authenticate error : ${JSON.stringify(err)}`); + return res.redirect(loginPage); + } + + doPassportCallback(req, res, next, { + openId: user._json.openid, + unionId: user._json.unionid || user.id, + nickname: user._json.nickname || user.displayName, + sourceType: 'wechat', + rawUser: user + }); + })(req, res, next); + } +}; + +exports.wechat = wechat; diff --git a/apps/passport/index.js b/apps/passport/index.js new file mode 100644 index 0000000..3d6258a --- /dev/null +++ b/apps/passport/index.js @@ -0,0 +1,40 @@ +/** + * sub app channel + * @author: Bi Kai<kai.bi@yoho.cn> + * @date: 2016/05/09 + */ +'use strict'; +var express = require('express'), + path = require('path'), + hbs = require('express-handlebars'); + +var passport = require('passport'); + +var app = express(); + +// set view engin +var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root + +app.on('mount', function(parent) { + delete parent.locals.settings; // 不继承父 App 的设置 + Object.assign(app.locals, parent.locals); +}); + +app.set('views', path.join(__dirname, 'views/action')); +app.engine('.hbs', hbs({ + extname: '.hbs', + defaultLayout: 'layout', + layoutsDir: doraemon, + partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`], + helpers: global.yoho.helpers +})); + + +require('./auth'); +app.use(passport.initialize()); +app.use(passport.session()); + +// router +app.use(require('./router')); + +module.exports = app; diff --git a/apps/passport/models/auth-helper.js b/apps/passport/models/auth-helper.js new file mode 100644 index 0000000..5dbe52e --- /dev/null +++ b/apps/passport/models/auth-helper.js @@ -0,0 +1,72 @@ +'use strict'; + +const sign = global.yoho.sign; +const api = global.yoho.API; + +class Auth { + + static signinByOpenID(nickname, openId, sourceType, shoppingKey) { + let param = { + nickname: nickname, + openId: openId, + source_type: sourceType, + method: 'app.passport.signinByOpenID' + }; + + if (shoppingKey) { + param.shopping_key = shoppingKey; + } + + return api.get('', param); + } + + static signinByWechat(nickname, openId, unionId, sourceType, shoppingKey) { + let param = { + nickname: nickname, + openId: openId, + unionId: unionId, + source_type: sourceType, + method: 'app.passport.signinByWechat' + }; + + if (shoppingKey) { + param.shopping_key = shoppingKey; + } + + return api.get('', param); + } + + static profile(uid) { + let param = { + uid: uid, + method: 'app.passport.profile' + }; + + return api.get('', param); + } + + static syncUserSession(uid, req, res) { + return Auth.profile(uid).then((userInfo) => { + let token = sign.makeToken(uid); + let data = userInfo.data; + + if (data) { + let uidCookie = `${data.profile_name}::${data.uid}::${data.vip_info.title}::${token}`; + + req.session._TOKEN = token; + req.session._LOGIN_UID = uid; + + res.cookie('_UID', uidCookie, { + domain: 'yohobuy.com' + }); + } + req.session._TOKEN = token; // esline-disable-line + req.session._LOGIN_UID = uid; // esline-disable-line + res.cookie('_TOKEN', token, { + domain: 'yohobuy.com' + }); // esline-disable-line + }).catch(console.log); + } +} + +module.exports = Auth; diff --git a/apps/passport/models/back-api.js b/apps/passport/models/back-api.js new file mode 100644 index 0000000..ea791cf --- /dev/null +++ b/apps/passport/models/back-api.js @@ -0,0 +1,147 @@ +/** + * Created by TaoHuang on 2016/6/15. + */ + +'use strict'; + +const api = global.yoho.API; +const YOHOBUY_URL = 'http://www.yohobuy.com/'; + +/** + * 获取地区数据 + */ +const getAreaDataAsync = () => { + return api.get('', { + method: 'app.passport.getArea' + }).then(result => { + result.data = result.data.map(value => { + value.areaCode = `+${value.area}`; + + if (value.areaCode === '+86') { + value.selected = true; + } else { + value.selected = false; + } + + delete value.area; + return value; + }); + + return result; + }); +}; + +/** + * 通过邮箱找回密码 + * + * @param string mail 邮箱地址 + */ +const sendCodeToEmailAsync = (email) => { + return api.get('', { + method: 'app.register.backpwdByEmail', + email: email + }); +}; + +/** + * 根据邮箱验证码修改密码(调用www.yohobuy.com接口) + * + * @param string pwd 新密码 + * @param string code 邮箱验证码 + */ +const modifyPasswordByEmailAsync = (pwd, code) => { + const options = { + url: `${YOHOBUY_URL}passport/back/update`, + form: { + pwd: pwd, + 're-input': pwd, + code: code + }, + timeout: 3000 + }; + + return api._requestFromAPI(options); +}; + +/** + * 通过手机找回密码 + * + * @param string mobile 手机号 + * @param integer area 地区码ID + */ +const sendCodeToMobileAsync = (mobile, area) => { + area = area || 86; + + return api.get('', { + mobile: mobile, + area: area, + method: 'app.register.sendBackpwdCodeToMobile' + }); +}; + +/** + * 校验密码修改手机验证码 + * + * @param string mobile 手机号 + * @param string code 验证码 + * @param integer area 地区码ID + */ +const validateMobileCodeAsync = (mobile, code, area) => { + area = area || 86; + return api.get('', { + mobile: mobile, + code: code, + area: area, + method: 'app.register.validBackpwdCode' + }); +}; + +/** + * 根据手机验证码修改密码 + * + * @param string mobile 手机号 + * @param string token 验证手机验证码返回的token + * @param integer area 地区码ID + */ +const modifyPasswordByMobileAsync = (mobile, token, newpwd, area)=> { + area = area || 86; + return api.get('', { + mobile: mobile, + token: token, + newpwd: newpwd, + area: area, + method: 'app.register.changepwdByMobileCode' + }); +}; + +/** + * 验证找回邮件code + */ +const checkEmailCodeAsync = (code) => { + return api.get('', { + code: code, + method: 'web.passport.checkCodeValid' + }); +}; + +/** + * 根据邮箱code修改密码 + */ +const modifyPasswordByEmailCodeAsync = (code, password) => { + return api.get('', { + code: code, + newPwd: password, + method: 'app.register.resetPwdByCode' + }); +}; + +module.exports = { + getAreaDataAsync, + sendCodeToEmailAsync, + modifyPasswordByEmailAsync, + sendCodeToMobileAsync, + validateMobileCodeAsync, + modifyPasswordByMobileAsync, + checkEmailCodeAsync, + modifyPasswordByEmailCodeAsync +}; diff --git a/apps/passport/models/back-helper.js b/apps/passport/models/back-helper.js new file mode 100644 index 0000000..60bef86 --- /dev/null +++ b/apps/passport/models/back-helper.js @@ -0,0 +1,52 @@ +/** + * Created by TaoHuang on 2016/6/27. + */ + +'use strict'; + + +/** + * 签名算法参考微信支付加密算法 + * 参考链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3 + * + */ + +const _ = require('lodash'); +const SALT = '_+@#$%^'; + +/** + * 生成加密token + * @param data json + * @returns string + */ + +const _packageObject = (data) => { + return _.keys(data).sort().map(key => `${key}=${data[key]}`).join('&').toUpperCase(); +}; + +const _encodeMD5 = (str) => { + const md5 = require('md5'); + + return md5(str).toUpperCase(); +}; + +const makeToken = (data) => { + let saltData = Object.assign(data, {key: SALT}); + let str = _packageObject(saltData); + + return _encodeMD5(str); +}; + +const validateToken = (data, token) => { + let saltData = Object.assign(data, {key: SALT}); + let str = _packageObject(saltData); + + return _encodeMD5(str) === token; +}; + +module.exports = { + makeToken, + validateToken +}; + + diff --git a/apps/passport/models/back-service.js b/apps/passport/models/back-service.js new file mode 100644 index 0000000..1e69f8a --- /dev/null +++ b/apps/passport/models/back-service.js @@ -0,0 +1,203 @@ +/** + * Created by TaoHuang on 2016/6/14. + */ + +'use strict'; + +const helpers = global.yoho.helpers; +const api = require('./back-api'); +const Promise = require('bluebird'); +const co = Promise.coroutine; +const _ = require('lodash'); +const moment = require('moment'); + +const userService = require('./user-service'); +const passportHelper = require('./passport-helper'); +const backHelper = require('./back-helper'); + +const BACK_LEFT_BANNER_CODE = '3bbaf502c447a2ddad60879042e286d8'; // 找回密码左边的banner + +const validateEmailOrMobileAsync = (userInput, areaCode) => { + return new Promise(function(resolve, rejected) { + let result = {type: 'email', area: '', phone: ''}; + + if (passportHelper.validator.verifyEmail(userInput)) { + result.type = 'email'; + result.area = ''; + result.phone = userInput; + + resolve(result); + } else if (passportHelper.validator.isAreaMobile(passportHelper.makeAreaMobile(areaCode, userInput))) { + result.type = 'mobile'; + result.area = areaCode; + result.phone = userInput; + + resolve(result); + } else { + rejected('输入信息出错!'); + } + + }); + +}; + +const findUserAsync = (type, phone, area) => { + return co(function * () { + const MESSAGE = { + mobile: '您输入的手机号码尚未注册!', + email: '您输入的邮件账户尚未注册!', + ok: '验证成功' + }; + + const findBy = { + email: userService.findByEmailAsync, + mobile: (phone1, area1) => userService.findByMobileAsync(area1, phone1) // 交换参数 + }; + + const OK = {code: 200, message: MESSAGE.ok}; + + const user = yield findBy[type](phone, area); + + if (_.isEmpty(user)) { + return { + code: 402, + message: MESSAGE[type] + }; + } + + return OK; + })(); +}; + +const sendCodeToUserAsync = (type, mobile, areaCode) => { + let sendTo = { + email: api.sendCodeToEmailAsync, + mobile: api.sendCodeToMobileAsync + }; + + return sendTo[type](mobile, areaCode); +}; + +/** + * 发送找回手机号短信 + */ +const sendCodeToMobileAsync = (areaCode, mobile) => { + return api.sendCodeToMobileAsync(mobile, areaCode); +}; + +/** + * 获得首页的数据 + */ +const indexPageDataAsync = () => { + return co(function *() { + let banner = yield passportHelper.getLeftBannerAsync(BACK_LEFT_BANNER_CODE); + let countryList = passportHelper.getCountry(); + + return { + back: { + coverHref: banner.url, + coverImg: banner.img, + countryCode: 86, + countryName: '中国', + captchaUrl: helpers.urlFormat('/passport/images', {t: moment().unix()}), + countryList: countryList + } + }; + })(); +}; + +const verifyCodyByMobileAsync = (area, mobile, mobileCode) => { + const ERR = { + code: 400, + message: '验证码错误!', + data: helpers.urlFormat('/passport/back/index') + }; + + return api.validateMobileCodeAsync(mobile, mobileCode, area) + .then(result => { + if (!(result.code && result.code === 200)) { + return ERR; + } + + let data = { + mobile: mobile, + area: area, + token: result.data.token, + createdAt: moment().unix() + }; + + data.code = new Buffer(backHelper.makeToken(data)).toString('base64'); + + return { + code: 200, + message: '验证成功', + data: helpers.urlFormat('/passport/back/backcode', data) + }; + }); + +}; + +const authRequest = (data, token) => { + if (!backHelper.validateToken(data, token)) { + return {}; + } + + let existTime = moment.duration(1, 'hours').seconds(); + let isExpired = (moment().unix() - data.createdAt) > existTime; + + if (isExpired) { + return {}; + } else { + return data; + } +}; + +const updatePwdAsync = (emailToken, mobileToken, newPassword) => { + return co(function * () { + let result = {type: 'mobile', status: false}; + const ERR = {type: 'unknown', status: false}; + + if (!_.isEmpty(mobileToken)) { + if (!mobileToken.mobile || mobileToken.uid) { + return ERR; + } + + let mobile = mobileToken.mobile; + let area = mobileToken.area; + let token = mobileToken.token; + let modifyStatus = yield api.modifyPasswordByMobileAsync(mobile, token, newPassword, area); + + if (!modifyStatus.code || modifyStatus.code !== 200) { + return ERR; + } + + result.type = 'mobile'; + result.status = true; + } else { + let modifyStatus = yield api.modifyPasswordByEmailCodeAsync(emailToken, newPassword); + + if (!modifyStatus.code || modifyStatus.code !== 200) { + return ERR; + } + + result.type = 'email'; + result.status = true; + } + + return result; + })(); +}; + +const checkEmailCodeAsync = api.checkEmailCodeAsync; + +module.exports = { + validateEmailOrMobileAsync, + findUserAsync, + sendCodeToUserAsync, + sendCodeToMobileAsync, + indexPageDataAsync, + verifyCodyByMobileAsync, + authRequest, + updatePwdAsync, + checkEmailCodeAsync +}; diff --git a/apps/passport/models/index-api.js b/apps/passport/models/index-api.js new file mode 100644 index 0000000..e265d94 --- /dev/null +++ b/apps/passport/models/index-api.js @@ -0,0 +1,12 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ +'use strict'; + +const serviceAPI = global.yoho.ServiceAPI; + +module.exports.getResourceAsync = (resourceCode) => { + return serviceAPI.get('/operations/api/v5/resource/get', { + content_code: resourceCode + }); +}; diff --git a/apps/passport/models/index-service.js b/apps/passport/models/index-service.js new file mode 100644 index 0000000..577dfa8 --- /dev/null +++ b/apps/passport/models/index-service.js @@ -0,0 +1,19 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ + +const api = require('./index-api'); + +module.exports.getResourceAsync = (resourceCode) => { + return api.getResourceAsync(resourceCode) + .then(result => { + if (result.code === 200) { + return result.data; + } else { + return {}; + } + }) + .catch(() => { + return {}; + }); +}; diff --git a/apps/passport/models/passport-helper.js b/apps/passport/models/passport-helper.js new file mode 100644 index 0000000..dd850ee --- /dev/null +++ b/apps/passport/models/passport-helper.js @@ -0,0 +1,254 @@ +/** + * Created by TaoHuang on 2016/6/20. + */ + + +'use strict'; + +const helpers = global.yoho.helpers; +const Promise = require('bluebird'); +const co = Promise.coroutine; +const _ = require('lodash'); + +const indexService = require('./index-service'); + +const getLeftBannerAsync = (resourceCode) => { + const DEFAULT_VALUE = { + img: 'http://img12.static.yhbimg.com/' + + 'yhb-img01/2015/12/01/07/020a0b6e7ff908d0c2bc4045b4fef42b9f.png?imageView/2/w/252/h/190', + url: '' + }; + + return co(function * () { + let resource = yield indexService.getResourceAsync(resourceCode); + + if (_.isEmpty(resource)) { + return DEFAULT_VALUE; + } + + let value = {}; + + // 有点问题 // passport model 58 + value.img = helpers.image(resource[0].data[0].src, 252, 190); + value.url = resource[0].data[0].url; + + return value; + })(); +}; + +const getCountry = () => { + return [ + { + areaCode: '+61', + selected: false, + name: '澳大利亚' + }, + { + areaCode: '+82', + selected: false, + name: '韩国' + }, + { + areaCode: '+1', + selected: false, + name: '加拿大' + }, + { + areaCode: '+60', + selected: false, + name: '马来西亚' + }, + { + areaCode: '+1', + selected: false, + name: '美国' + }, + { + areaCode: '+81', + selected: false, + name: '日本' + }, + { + areaCode: '+65', + selected: false, + name: '新加坡' + }, + { + areaCode: '+44', + selected: false, + name: '英国' + }, + { + areaCode: '+86', + selected: true, + name: '中国' + }, + { + areaCode: '+853', + selected: false, + name: '中国澳门' + }, + { + areaCode: '+886', + selected: false, + name: '中国台湾' + }, + { + areaCode: '+852', + selected: false, + name: '中国香港' + } + ]; +}; + +/** + * 验证邮箱是否合法 + * + * @param string email + * @return boolean + */ +const verifyEmail = email => { + if (!email) { + return false; + } + + const emailRegExp = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; + + return emailRegExp.test(email); +}; + +/** + * 各国手机号规则 + */ +function _areaMobileVerify(phone, area) { + area = area || '86'; + phone = phone.trim(); + + let verify = { + 86: { + name: '中国', + match: /^1[3|4|5|8|7][0-9]{9}$/.test(phone) + }, + 852: { + name: '中国香港', + match: /^[9|6|5][0-9]{7}$/.test(phone) + }, + 853: { + name: '中国澳门', + match: /^[0-9]{8}$/.test(phone) + }, + 886: { + name: '中国台湾', + match: /^[0-9]{10}$/.test(phone) + }, + 65: { + name: '新加坡', + match: /^[9|8][0-9]{7}$/.test(phone) + }, + 60: { + name: '马来西亚', + match: /^1[1|2|3|4|6|7|9][0-9]{8}$/.test(phone) + }, + 1: { + name: '加拿大&美国', + match: /^[0-9]{10}$/.test(phone) + }, + 82: { + name: '韩国', + match: /^01[0-9]{9}$/.test(phone) + }, + 44: { + name: '英国', + match: /^7[7|8|9][0-9]{8}$/.test(phone) + }, + 81: { + name: '日本', + match: /^0[9|8|7][0-9]{9}$/.test(phone) + }, + 61: { + name: '澳大利亚', + match: /^[0-9]{11}$/.test(phone) + } + }; + + if (verify[area]) { + return verify[area].match; + } else { + return false; + } +} + +/** + * 验证国际手机号是否合法 + */ +const isAreaMobile = areaMobile => { + if (!areaMobile) { + return false; + } + + let mobile = { + area: '86', + phone: '' + }; + + let splitMobile = areaMobile.split('-'); + + if (splitMobile.length === 2) { + mobile.area = splitMobile[0]; + mobile.phone = splitMobile[1]; + } else { + mobile.phone = splitMobile[0]; + } + + return _areaMobileVerify(mobile.phone, mobile.area); +}; + +/** + * 验证手机是否合法 + */ +const verifyMobile = phone => { + if (!phone) { + return false; + } + + return /^1[3|4|5|8|7][0-9]{9}$/.test(phone); +}; + +const verifyPassword = password => { + if (!password) { + return false; + } + + return /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/.test(password); +}; + +const makeAreaMobile = (area, mobile) => { + if (!area || area === '86') { + return mobile; + } + + return `${area}-${mobile}`; +}; + +const isPassword = pwd => { + if (!pwd) { + return false; + } + + let pwdRegexp = /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/; + + return pwdRegexp.test(_.trim(pwd)); +}; + +module.exports = { + validator: { + verifyPassword, + verifyMobile, + isAreaMobile, + verifyEmail, + isPassword + }, + makeAreaMobile, + getCountry, + getLeftBannerAsync +}; diff --git a/apps/passport/models/user-api.js b/apps/passport/models/user-api.js new file mode 100644 index 0000000..fdd703d --- /dev/null +++ b/apps/passport/models/user-api.js @@ -0,0 +1,57 @@ +/** + * Created by TaoHuang on 2016/6/17. + */ +'use strict'; + +const _ = require('lodash'); +const api = global.yoho.API; +const EMPTY = {}; + +/** + * 根据手机号获取用户信息 + */ +const findByMobileAsync = (area, mobile) => { + + return api.get('', { + mobile: mobile, + area: area, + method: 'app.passport.getProfileByMobile' + }) + .then(result => { + if (!result.code || result.code !== 200 || !result.data || _.isEmpty(result.data)) { + return EMPTY; + } + + return result.data; + + }) + .catch(() => { + return EMPTY; + }); +}; + +/** + * 根据邮箱获取用户信息 + */ +const findByEmailAsync = (email) => { + return api.get('', { + email: email, + method: 'app.passport.getProfileByEmail' + }) + .then(result => { + if (!result.code || result.code !== 200 || !result.data || _.isEmpty(result.data)) { + return EMPTY; + } + + return result.data; + + }) + .catch(() => { + return EMPTY; + }); +}; + +module.exports = { + findByMobileAsync, + findByEmailAsync +}; diff --git a/apps/passport/models/user-service.js b/apps/passport/models/user-service.js new file mode 100644 index 0000000..f6ec65f --- /dev/null +++ b/apps/passport/models/user-service.js @@ -0,0 +1,8 @@ +/** + * Created by TaoHuang on 2016/6/17. + */ +'use strict'; + +const api = require('./user-api'); + +module.exports = api; diff --git a/apps/passport/router.js b/apps/passport/router.js new file mode 100644 index 0000000..bfab5fd --- /dev/null +++ b/apps/passport/router.js @@ -0,0 +1,105 @@ +/** + * router of sub app channel + * @author: Bi Kai<kai.bi@yoho.cn> + * @date: 2016/05/09 + */ + +'use strict'; + +const express = require('express'); +const cRoot = './controllers'; +const login = require(cRoot + '/login'); + +const captcha = require(cRoot + '/captcha'); +const back = require(cRoot + '/back'); + +const router = express.Router(); // eslint-disable-line + +router.get('/autosign/wechat', login.wechat.beforeLogin, login.wechat.login); // 微信登录, 兼容 PHP 的路径 +router.get('/login/wechat/callback', login.wechat.callback); + +/** + * 找回密码首页信息 + */ +// 找回密码首页 +router.get('/back/index', back.index); + +// 实时验证输入是否正确 +router.post('/back/authcode', + + // captcha.requiredAPI, + back.validateInputAPI, + back.getUserInfoAPI); + +// 提交按钮邮件API +router.post('/back/email', + + // Captcha.requiredPage, + back.validateUserPage, + back.sendCodePage, + back.saveInSession); + +// 提交按钮手机API +router.post('/back/mobile', + + captcha.requiredPage, + back.validateUserPage, + back.sendCodePage, + back.saveInSession); + +/** + * 邮件找回密码 + */ +// 发送邮件成功页面 +router.get('/back/sendEmail', + back.validateEmailInSession, + back.sendEmailPage); + +/** + * 短信找回密码 + */ +// 验证手机短信页面 +router.get('/back/verification', + + // Back.validateMobileInSession, + // Captcha.requiredPage, + back.verifyCodeByMobilePage); + +// 重新发送短信接口 +router.post('/back/sendBackMobile', + + // Captcha.requiredAPI, + back.validateMobileAPI, + back.sendBackMobileAPI); + +// 验证手机验证码接口 +router.post('/back/backMobile', + + // Captcha.requiredAPI, + back.verifyCodeByMobileAPI); + +/** + * 重置密码 + */ +// 重置密码页面 +router.get('/back/backcode', + back.validateExistCodePage, + back.validateCodeByMobilePage, + back.validateCodeByEmailPage, + back.resetPasswordPage); + +// 重置密码接口 +router.post('/back/update', + back.validateExistCodePage, + back.validateCodeByMobilePage, + + // Back.validatePwdPage, + back.updatePwdAPI); + +// 重置密码成功页面 +router.get('/back/resetSuccess', + + // Back.checkSuccessStatusPage, + back.resetPwdSuccessPage); + +module.exports = router; diff --git a/apps/passport/views/action/back/index.hbs b/apps/passport/views/action/back/index.hbs new file mode 100644 index 0000000..7e4646c --- /dev/null +++ b/apps/passport/views/action/back/index.hbs @@ -0,0 +1,44 @@ +<div class="back-page passport-page yoho-page clearfix"> + {{# back}} + {{> back/cover}} + <div class="content"> + <div class="back-header clearfix"> + <h2 class="title">找回密码</h2> + <span id="country-code" class="country-code"> + <em>{{countryName}} +{{countryCode}}</em> + <i class="iconfont"></i> + </span> + <ul id="country-code-list" class="country-code-list"> + {{# countryList}} + <li data-cc="{{areaCode}}">{{name}} {{areaCode}}</li> + {{/ countryList}} + </ul> + </div> + <form id="back-form" class="back-form" action="/passport/back/email" method="post"> + <input id="country-code-hide" type="hidden" name="area" value="+86"> + <ul> + <li class="input-container-li clearfix"> + <input id="phone-num" class="input va phone-num" type="text" name="phoneNum" placeholder="邮箱/手机号码" autocomplete="off"> + <span id="account-err" class="err-tip hide"> + <i></i> + <em>账户名不能为空</em> + </span> + </li> + <li class="input-container-li clearfix"> + <input id="captcha" class="input va captcha" type="text" name="verifyCode" placeholder="验证码" autocomplete="off" maxlength="4"> + <img id="captcha-img" class="captcha-img" src="{{captchaUrl}}" alt=""> + <a id="change-captcha" class="link change-captcha">换一张</a> + <span id="captcha-err" class="err-tip captcha-err hide"> + <i></i> + <em>验证码不能为空</em> + </span> + </li> + <li class="input-container-li clearfix"> + <input name="refer" id="refer" type="hidden" value="http%3A%2F%2Fwww.yohobuy.com%2F"> + <input id="find-btn" class="btn find-btn disable" type="submit" value="下一步" disabled=""> + </li> + </ul> + </form> + </div> + {{/ back}} +</div> diff --git a/apps/passport/views/action/back/reset-pwd.hbs b/apps/passport/views/action/back/reset-pwd.hbs new file mode 100644 index 0000000..85397ac --- /dev/null +++ b/apps/passport/views/action/back/reset-pwd.hbs @@ -0,0 +1,51 @@ +<div class="reset-pwd-page back-page passport-page yoho-page clearfix"> + {{# resetPwd}} + {{> back/cover}} + <div class="content"> + <h2 class="title2">重置密码</h2> + <form id="reset-pwd-form" class="reset-pwd-form" method="POST" action="/passport/back/update"> + <ul> + <li class="input-container-li po-re"> + <input id="pwd" class="input va pwd" type="password" name="pwd" placeholder="新密码" + maxlength="20"> + <div class="pwd-intensity-container"> + <span class="pwd-intensity low">低</span> + <span class="pwd-intensity mid">中</span> + <span class="pwd-intensity high">高</span> + </div> + <div id="pwd-tips" class="pwd-tips hide"> + <div class="default" id="pwd-tip1"> + <i></i> + 密码只支持6-20位字符 + </div> + <div class="default" id="pwd-tip2"> + <i></i> + 由字母、 数字组合,不能包含特殊符号 + </div> + </div> + <span id="pwd-err" class="err-tip hide"> + <i></i> + <em>请输入密码</em> + </span> + </li> + <li class="input-container-li clearfix po-re"> + <input id="re-input" class="input va re-input repwd" type="password" name="re-input" + placeholder="再次输入" maxlength="20"> + <span id="repwd-err" class="err-tip hide"> + <i></i> + <em>请输入密码确认</em> + </span> + </li> + <li class="input-container-li clearfix"> + <input type="hidden" name="code" value="{{code}}"> + <input type="hidden" name="mobile" value="{{mobile}}"> + <input type="hidden" name="area" value="{{area}}"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="create_time" value="{{create_time}}"> + <input id="reset-pwd-btn" class="btn reset-pwd-btn" type="submit" value="提交" disabled=""> + </li> + </ul> + </form> + </div> + {{/ resetPwd}} +</div> diff --git a/apps/passport/views/action/back/reset-success.hbs b/apps/passport/views/action/back/reset-success.hbs new file mode 100644 index 0000000..ca0d71e --- /dev/null +++ b/apps/passport/views/action/back/reset-success.hbs @@ -0,0 +1,27 @@ +<div class="reset-success-page back-page passport-page yoho-page clearfix"> + {{# resetSuccess}} + {{> back/cover}} + <div class="content"> + <div class="success-text"> + <i class="iconfont"></i><span>恭喜!</span>密码修改成功, <span id="count-down">5</span> 秒后将跳转至首页 + </div> + <a class="success-btn" href="/">随便逛逛</a> + </div> + {{/ resetSuccess}} +</div> +<script type="text/javascript"> + (function() { + var count = 5, + countDown = document.getElementById('count-down'); + + + var timer = setInterval(function(){ + if (count > 1) { + count--; + countDown.innerHTML = count; + } else { + location.href = '/'; + } + }, 1000); + })(); +</script> diff --git a/apps/passport/views/action/back/send-email.hbs b/apps/passport/views/action/back/send-email.hbs new file mode 100644 index 0000000..aa85741 --- /dev/null +++ b/apps/passport/views/action/back/send-email.hbs @@ -0,0 +1,13 @@ +<div class="send-email-page passport-page yoho-page clearfix"> + {{# sendEmail}} + {{> back/cover}} + <div class="content"> + <div class="send-tips"><i class="iconfont"></i>我们已经把验证邮件发送至您的邮箱,请在24小时内通过邮件内的<br>链接继续设置新的密码。</div> + <div class="no-find">没有收到?到您邮箱的垃圾邮件里找找。</div> + <div class="to-my-email"> + <a href="{{email}}" target="_blank" class="btn_b_ar_r">去我的邮箱></a> + </div> + + </div> + {{/ sendEmail}} +</div> diff --git a/apps/passport/views/action/back/verification.hbs b/apps/passport/views/action/back/verification.hbs new file mode 100644 index 0000000..9933306 --- /dev/null +++ b/apps/passport/views/action/back/verification.hbs @@ -0,0 +1,34 @@ +<div class="verification-page back-page passport-page yoho-page clearfix"> + {{# verification}} + {{> back/cover}} + <div class="content"> + <form id="verification-form" class="verification-form" method="POST" action="/passport/back/backmobile"> + <ul> + <li class="head-title">验证身份</li> + <li class="po-re"> + <label class="pn-label">手机号码</label> + <span class="country-code">+{{area}}</span> + <span class="phone-num">{{mobile}}</span> + </li> + <li class="po-re"> + <input id="captcha" class="input va captcha" type="text" name="code" maxlength="4"> + <input id="send-captcha" class="btn send-captcha" type="button" value="发送验证码" disabled=""> + <div id="captcha-tip" class="captcha-tips"><i class="iconfont"></i>验证码已发送至您的手机,请查收</div> + <span id="err-tip" class="err-tip hide"> + <i></i> + <em>请输入验证码</em> + </span> + </li> + <li> + <input name="area" id="area" type="hidden" value="{{area}}"> + <input name="mobile" id="mobile" type="hidden" value="{{mobile}}"> + <input name="verifyCode" id="captchaPic" type="hidden" value="{{verifyCode}}"> + <input name="refer" id="refer" type="hidden" value=""> + <a id="next-step" class="btn next-step disable" href="javascript:;">下一步</a> + <!-- <input id="next-step" class="btn next-step disable" type="submit" value="下一步" disabled=""> --> + </li> + </ul> + </form> + </div> + {{/ verification}} +</div> diff --git a/apps/passport/views/partial/back/cover.hbs b/apps/passport/views/partial/back/cover.hbs new file mode 100644 index 0000000..4da629b --- /dev/null +++ b/apps/passport/views/partial/back/cover.hbs @@ -0,0 +1,11 @@ +<div class="passport-cover"> + <div class="cover-content"> + {{#if coverHref}} + <a href="{{coverHref}}" target="_bank"> + <img class="cover-img" src="{{coverImg}}"> + </a> + {{^}} + <img class="cover-img" src="{{coverImg}}"> + {{/if}} + </div> +</div> diff --git a/apps/product/controllers/detail.js b/apps/product/controllers/detail.js index fbae45d..96d9d50 100644 --- a/apps/product/controllers/detail.js +++ b/apps/product/controllers/detail.js @@ -6,10 +6,7 @@ 'use strict'; - -const library = '../../../library'; -const helpers = require(`${library}/helpers`); - +const helpers = global.yoho.helpers; const mRoot = '../models'; const service = require(`${mRoot}/detail-service`); const detailHelper = require('../models/detail-helper'); @@ -17,13 +14,11 @@ const detailHelper = require('../models/detail-helper'); /** * 单个商品详情 */ -module.exports.showMain = (req, res, next) => { +const showMain = (req, res, next) => { // TODO: vipLevel = 0; // 用户等级 let pid = 204503; - let uid = req.user.uid || ''; - let channel = detailHelper.COOKIE_NAME_BOYS; if (req.cookies._Channel) { @@ -41,67 +36,70 @@ module.exports.showMain = (req, res, next) => { gender: gender, uid: uid, vipLevel: 0 - }).then((result) => { - res.render('product/detail', Object.assign({ - module: 'product', - page: 'detail' - }, result)); - }).catch(next); + }) + .then(result => { + res.render('product/detail', Object.assign({ + module: 'product', + page: 'detail' + }, result)); + }) + .catch(next); }; /** * 获取热区图 */ -module.exports.indexHotArea = (req, res, next) => { +const indexHotArea = (req, res, next) => { let pid = req.query.productId || 0; - service.indexHotAreaAsync(pid).then(result => { - res.render('product/hotarea', { - hotArea: result, - layout: false - }); - }).catch(next); + service.indexHotAreaAsync(pid) + .then(result => { + res.render('product/hotarea', { + hotArea: result, + layout: false + }); + }) + .catch(next); }; /** * 获得评论列表 * json */ -module.exports.indexComment = (req, res, next) => { +const indexComment = (req, res, next) => { let pid = req.query.productId || 0; - let page = req.query.page || 1; - let size = req.query.size || 10; - service.indexCommentAsync(pid, page, size).then(result => { - res.json(result); - }).catch(next); + service.indexCommentAsync(pid, page, size) + .then(result => { + res.json(result); + }) + .catch(next); }; /** * 获得咨询列表 * json */ -module.exports.indexConsult = (req, res, next) => { +const indexConsult = (req, res, next) => { let uid = req.user.uid || ''; - let pid = req.query.productId || 0; - let page = req.query.page || 1; - let size = req.query.size || 10; - service.indexConsultAsync(uid, pid, page, size).then(result => { - res.json(result); - }).catch(next); + service.indexConsultAsync(uid, pid, page, size) + .then(result => { + res.json(result); + }) + .catch(next); }; /** * 新建咨询 * json */ -module.exports.createConsult = (req, res, next) => { +const createConsult = (req, res, next) => { let uid = req.user.uid || ''; let pid = req.body.productId || 0; @@ -109,9 +107,11 @@ module.exports.createConsult = (req, res, next) => { let content = req.body.content; if (content && uid) { - service.createConsultAsync(uid, pid, content).then(result => { - res.json(result); - }).catch(next); + service.createConsultAsync(uid, pid, content) + .then(result => { + res.json(result); + }) + .catch(next); } else if (!content) { res.json({ @@ -124,7 +124,7 @@ module.exports.createConsult = (req, res, next) => { code: 403, message: '用户没有登录', data: { - url: helpers.urlFormat('/signin.html') + url: helpers.urlFormat('/signin') } }); @@ -138,4 +138,11 @@ module.exports.createConsult = (req, res, next) => { }; +module.exports = { + showMain, + indexHotArea, + indexComment, + indexConsult, + createConsult +}; diff --git a/apps/product/controllers/favorite.js b/apps/product/controllers/favorite.js index 3723f99..2390290 100644 --- a/apps/product/controllers/favorite.js +++ b/apps/product/controllers/favorite.js @@ -3,30 +3,29 @@ */ 'use strict'; -const library = '../../../library'; -const helpers = require(`${library}/helpers`); - +const helpers = global.yoho.helpers; const brandService = require('../models/favorite-brand-service'); const productService = require('../models/favorite-product-service'); /** * 收藏品牌ajax请求 */ -module.exports.changeFavoriteBrand = (req, res, next) => { +const changeFavoriteBrand = (req, res, next) => { let uid = req.user.uid || ''; - let brandId = req.body.brandId; if (uid && brandId) { - brandService.changeAsync(uid, brandId).then(result => { - res.json(result); - }).catch(next); + brandService.changeAsync(uid, brandId) + .then(result => { + res.json(result); + }) + .catch(next); } else if (!uid) { res.json({ code: 403, message: '用户ID不存在', data: { - url: helpers.urlFormat('signin.html') + url: helpers.urlFormat('/signin') } }); } else { @@ -37,24 +36,24 @@ module.exports.changeFavoriteBrand = (req, res, next) => { } }; -module.exports.collectProduct = (req, res, next) => { +const collectProduct = (req, res, next) => { let uid = req.user.uid || ''; - let pid = req.body.productId; - let type = req.body.type || 'add'; if (uid && pid) { switch (type) { case 'add': { - productService.createAsync(uid, pid).then(result => { + productService.createAsync(uid, pid) + .then(result => { if (result.code === 413) { result.message = '该商品已经收藏'; } res.json(result); - }).catch(next); + }) + .catch(next); break; } case 'cancel': @@ -77,7 +76,7 @@ module.exports.collectProduct = (req, res, next) => { code: 403, message: '用户没有登录', data: { - url: helpers.urlFormat('signin.html') + url: helpers.urlFormat('/signin') } }); } else { @@ -87,3 +86,8 @@ module.exports.collectProduct = (req, res, next) => { }); } }; + +module.exports = { + changeFavoriteBrand, + collectProduct +}; diff --git a/apps/product/controllers/list.js b/apps/product/controllers/list.js index 9daa350..b4c3d38 100644 --- a/apps/product/controllers/list.js +++ b/apps/product/controllers/list.js @@ -23,7 +23,7 @@ exports.getProductPic = (req, res) => { * @param {[type]} res [description] * @return {[type]} [description] */ -exports.index = (req, res) => { +exports.index = (req, res, next) => { let params = Object.assign({ order: 's_t_asc,s_s_asc' }, req.query); @@ -49,9 +49,6 @@ exports.index = (req, res) => { responseData.resultShow = JSON.stringify(result, null, 4); responseData.headerData = headerData; res.render('sale/other', responseData); - }).catch(() => { - responseData.pageErr = true; - res.render('error', responseData); - }); + }).catch(next); }; diff --git a/apps/product/controllers/outlets.js b/apps/product/controllers/outlets.js index 9c2616d..70c57d3 100644 --- a/apps/product/controllers/outlets.js +++ b/apps/product/controllers/outlets.js @@ -14,23 +14,18 @@ const outlets = require(`${mRoot}/outlets`); * @param {[type]} res [description] * @return {[type]} [description] */ -exports.index = (req, res) => { +exports.index = (req, res, next) => { let resData = { module: 'product', page: 'outlets' }; - let channel = req.query.channel || req.cookies._Channel || 'boys'; + let channel = req.query.channel || req.cookies._Channel || 'otltIdxDflt'; outlets.getOutletsIndexData(req.query, channel).then(result => { - resData.result = result; - resData.headerData = result.headerData; - resData.resultShow = JSON.stringify(result, null, 4); + Object.assign(resData, result); res.render('outlets/index', resData); - }).catch(() => { - resData.pageErr = true; - res.render('error', resData); - }); + }).catch(next); }; @@ -40,18 +35,16 @@ exports.index = (req, res) => { * @param {[type]} res [description] * @return {[type]} [description] */ -exports.channel = (req, res) => { +exports.channel = (req, res, next) => { let resData = { module: 'product', page: 'outlets' }; + let channel = req.params.channel || req.query.channel || req.cookies._Channel || 'boys'; - outlets.getOutletsChannelData(req.query, req.params.channel).then(result => { + outlets.getOutletsChannelData(req.query, channel).then(result => { res.render('outlets/channel', Object.assign(resData, result)); - }).catch(() => { - resData.pageErr = true; - res.render('error', resData); - }); + }).catch(next); }; /** @@ -60,7 +53,7 @@ exports.channel = (req, res) => { * @param {[type]} res [description] * @return {[type]} [description] */ -exports.special = (req, res) => { +exports.special = (req, res, next) => { let params = req.query; let channel = req.query.channel || req.cookies._Channel || 'boys'; let resData = { @@ -72,15 +65,9 @@ exports.special = (req, res) => { resData.pageErr = true; } - // 模拟数据 - // resData = outletsSimulation.special(); - outlets.getOutletsSpecialData(params, channel).then(result => { res.render('outlets/special', Object.assign(resData, result)); - }).catch(() => { - resData.pageErr = true; - res.render('error', resData); - }); + }).catch(next); }; /** @@ -89,7 +76,7 @@ exports.special = (req, res) => { * @param {[type]} res [description] * @return {[type]} [description] */ -exports.list = (req, res) => { +exports.list = (req, res, next) => { let params = req.query; let channel = req.query.channel || req.cookies._Channel || 'boys'; @@ -102,11 +89,7 @@ exports.list = (req, res) => { }; outlets.getOutletsCategoryData(params, channel).then((result) => { - responseData.resultShow = JSON.stringify(result, null, 4); res.render('sale/other', Object.assign(responseData, result)); - }).catch(() => { - responseData.pageErr = true; - res.render('error', responseData); - }); + }).catch(next); }; diff --git a/apps/product/controllers/sale.js b/apps/product/controllers/sale.js index e5740da..ce8b865 100644 --- a/apps/product/controllers/sale.js +++ b/apps/product/controllers/sale.js @@ -20,8 +20,7 @@ exports.index = (req, res) => { let responseData = { module: 'product', - page: 'sale', - footerTop: true + page: 'sale' }; // 真实数据输出 @@ -52,8 +51,7 @@ exports.discount = (req, res) => { let responseData = { module: 'product', - page: 'sale', - footerTop: true + page: 'sale' }; sale.getSaleDiscountData(params, channel).then((result) => { @@ -86,8 +84,7 @@ exports.vip = (req, res) => { let responseData = { module: 'product', - page: 'sale', - footerTop: true + page: 'sale' }; sale.getSaleOthersData(params, channel).then((result) => { @@ -110,7 +107,6 @@ exports.vip = (req, res) => { */ exports.newSale = (req, res) => { let params = Object.assign({ - saleType: '3', order: 's_t_desc' }, req.query); @@ -118,8 +114,7 @@ exports.newSale = (req, res) => { let responseData = { module: 'product', - page: 'sale', - footerTop: true + page: 'sale' }; sale.getSaleOthersData(params, channel).then((result) => { @@ -148,8 +143,7 @@ exports.breakingYards = (req, res) => { let responseData = { module: 'product', - page: 'sale', - footerTop: true + page: 'sale' }; sale.getSalebreakingYardsData(params, channel).then((result) => { diff --git a/apps/product/index.js b/apps/product/index.js index 53e26b1..2f3d33f 100644 --- a/apps/product/index.js +++ b/apps/product/index.js @@ -10,22 +10,21 @@ var express = require('express'), var app = express(); +// set view engin var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root -var partials = path.join(__dirname, './views'); -app.on('mount', function (parent) { +app.on('mount', function(parent) { delete parent.locals.settings; // 不继承父 App 的设置 Object.assign(app.locals, parent.locals); }); -// set view engin app.set('views', path.join(__dirname, 'views/action')); app.engine('.hbs', hbs({ extname: '.hbs', defaultLayout: 'layout', layoutsDir: doraemon, - partialsDir: [`${partials}/partial`, `${doraemon}/partial`], - helpers: require('../../library/helpers') + partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`], + helpers: global.yoho.helpers })); // router diff --git a/apps/product/models/brand-api.js b/apps/product/models/brand-api.js index 33ad04c..2c3152e 100644 --- a/apps/product/models/brand-api.js +++ b/apps/product/models/brand-api.js @@ -1,25 +1,29 @@ -'use strict'; +/** + * Created by TaoHuang on 2016/6/14. + */ -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); +'use strict'; -const api = new API(); +const api = global.yoho.API; -module.exports.getBannerInfoAsync = (bid) => { - return api.get('', sign.apiSign({ +const getBannerInfoAsync = bid => { + return api.get('', { method: 'web.brand.banner', brand_id: bid - })); + }); }; -module.exports.getBrandLogoByDomainAsync = (domain) => { - return api.get('', sign.apiSign({ +const getBrandLogoByDomainAsync = domain => { + return api.get('', { domain: domain, method: 'web.brand.byDomain' - })); + }); }; +module.exports = { + getBannerInfoAsync, + getBrandLogoByDomainAsync +}; diff --git a/apps/product/models/brand-service.js b/apps/product/models/brand-service.js index d97e877..ac2e2fb 100644 --- a/apps/product/models/brand-service.js +++ b/apps/product/models/brand-service.js @@ -5,10 +5,9 @@ const Promise = require('bluebird'); const co = Promise.coroutine; - const api = require('./brand-api'); -module.exports.getBrandByDomainAsync = (domain) => { +const getBrandByDomainAsync = domain => { return co(function*() { let brandInfo = yield api.getBrandLogoByDomainAsync(domain); @@ -33,4 +32,7 @@ module.exports.getBrandByDomainAsync = (domain) => { })(); }; -module.exports.getBannerInfoAsync = api.getBannerInfoAsync; +module.exports = { + getBrandByDomainAsync, + getBannerInfoAsync: api.getBannerInfoAsync +}; diff --git a/apps/product/models/detail-comment-api.js b/apps/product/models/detail-comment-api.js index d85ee66..16d6b4b 100644 --- a/apps/product/models/detail-comment-api.js +++ b/apps/product/models/detail-comment-api.js @@ -4,25 +4,21 @@ 'use strict'; -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); - -const api = new API(); - +const api = global.yoho.API; /** * 获取评论 */ -module.exports.indexAsync = function(pid, page, size) { - return api.get('', sign.apiSign({ +const indexAsync = (pid, page, size) => { + return api.get('', { method: 'app.comment.li', product_id: pid, page: page, limit: size - })).catch(log.error); + }); }; - +module.exports = { + indexAsync +}; diff --git a/apps/product/models/detail-comment-service.js b/apps/product/models/detail-comment-service.js index 10495aa..24e3143 100644 --- a/apps/product/models/detail-comment-service.js +++ b/apps/product/models/detail-comment-service.js @@ -8,23 +8,19 @@ const Promise = require('bluebird'); const co = Promise.coroutine; const _ = require('lodash'); -const library = '../../../library'; -const helpers = require(`${library}/helpers`); - +const helpers = global.yoho.helpers; const api = require('./detail-comment-api'); - const detailHelper = require('./detail-helper'); -module.exports.indexAsync = (pid, page, size) => { +const indexAsync = (pid, page, size) => { return co(function *() { let commentList = yield api.indexAsync(pid, page, size); - if (!commentList.code || !commentList.code !== 200) { + if (!commentList.code && commentList.code === 200) { return []; } - return commentList.data.map(value => { let item = {}; @@ -48,3 +44,7 @@ module.exports.indexAsync = (pid, page, size) => { })(); }; + +module.exports = { + indexAsync +}; diff --git a/apps/product/models/detail-consult-api.js b/apps/product/models/detail-consult-api.js index a37af46..c4221a5 100644 --- a/apps/product/models/detail-consult-api.js +++ b/apps/product/models/detail-consult-api.js @@ -4,18 +4,12 @@ 'use strict'; - -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); - -const api = new API(); +const api = global.yoho.API; /** * 咨询内容列表 */ -module.exports.indexAsync = function (uid, pid, page, size) { +const indexAsync = function(uid, pid, page, size) { let param = {}; param.method = 'app.consult.li'; @@ -28,17 +22,22 @@ module.exports.indexAsync = function (uid, pid, page, size) { param.page = page; param.limit = size; - return api.get('', sign.apiSign(param)).catch(log.error); + return api.get('', param); }; /** * 添加咨询操作 */ -module.exports.createAsync = function (uid, pid, content) { - return api.post('', sign.apiSign({ +const createAsync = function(uid, pid, content) { + return api.post('', { method: 'h5.consult.add', product_id: pid, content: content, uid: uid - })).catch(log.error); + }); +}; + +module.exports = { + indexAsync, + createAsync }; diff --git a/apps/product/models/detail-consult-service.js b/apps/product/models/detail-consult-service.js index daa5256..c9e259f 100644 --- a/apps/product/models/detail-consult-service.js +++ b/apps/product/models/detail-consult-service.js @@ -10,8 +10,7 @@ const co = Promise.coroutine; const api = require('./detail-consult-api'); const detailHelper = require('./detail-helper'); - -module.exports.indexAsync = (uid, pid, page, size) => { +const indexAsync = (uid, pid, page, size) => { return co(function *() { let consultList = yield api.indexAsync(uid, pid, page, size); @@ -37,4 +36,7 @@ module.exports.indexAsync = (uid, pid, page, size) => { })(); }; -module.exports.createAsync = api.createAsync; +module.exports = { + indexAsync, + createAsync: api.createAsync +}; diff --git a/apps/product/models/detail-helper.js b/apps/product/models/detail-helper.js index dc14b8e..f7df998 100644 --- a/apps/product/models/detail-helper.js +++ b/apps/product/models/detail-helper.js @@ -7,22 +7,21 @@ const moment = require('moment'); /* COOKIE标识访问的是男生频道 */ -const COOKIE_NAME_BOYS = module.exports.COOKIE_NAME_BOYS = 'boys'; -const COOKIE_DOMAIN = module.exports.COOKIE_DOMAIN = '.yohobuy.com'; +const COOKIE_NAME_BOYS = 'boys'; +const COOKIE_DOMAIN = '.yohobuy.com'; // 商品详情页的默认头像 -module.exports.DEFAULT_AVATAR_ICO = 'http://static.yohobuy.com/images/v3/boy.jpg'; +const DEFAULT_AVATAR_ICO = 'http://static.yohobuy.com/images/v3/boy.jpg'; +const IMAGE_SERVICE_URL = 'http://head.static.yhbimg.com/yhb-head/'; -module.exports.IMAGE_SERVICE_URL = 'http://head.static.yhbimg.com/yhb-head/'; - -module.exports.setSwitchToCookie = (res) => { +const setSwitchToCookie = (res) => { res.cookie('_Channel', COOKIE_NAME_BOYS, { domain: COOKIE_DOMAIN, maxAge: moment.duration(300, 'days').seconds() }); }; -module.exports.getGenderByCookie = (req) => { +const getGenderByCookie = (req) => { let gender = null; let channel = req.cookies._Channel || 'boys'; @@ -46,3 +45,13 @@ module.exports.getGenderByCookie = (req) => { return gender; }; + +module.exports = { + COOKIE_NAME_BOYS, + COOKIE_DOMAIN, + DEFAULT_AVATAR_ICO, + IMAGE_SERVICE_URL, + setSwitchToCookie, + getGenderByCookie +}; + diff --git a/apps/product/models/detail-hotarea-api.js b/apps/product/models/detail-hotarea-api.js index 928bbd1..d4b36b4 100644 --- a/apps/product/models/detail-hotarea-api.js +++ b/apps/product/models/detail-hotarea-api.js @@ -2,19 +2,20 @@ * Created by TaoHuang on 2016/6/13. */ -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); +'use strict'; -const api = new API(); +const api = global.yoho.API; /** * 获取商品的热区 */ -module.exports.indexAsync = (pid) => { - return api.get('', sign.apiSign({ +const indexAsync = pid => { + return api.get('', { method: 'web.productCollocation.list', product_id: pid - })).catch(log.error); + }); +}; + +module.exports = { + indexAsync }; diff --git a/apps/product/models/detail-hotarea-service.js b/apps/product/models/detail-hotarea-service.js index cf6587c..af7ee52 100644 --- a/apps/product/models/detail-hotarea-service.js +++ b/apps/product/models/detail-hotarea-service.js @@ -7,16 +7,13 @@ const Promise = require('bluebird'); const co = Promise.coroutine; const _ = require('lodash'); - -const library = '../../../library'; -const helpers = require(`${library}/helpers`); - +const helpers = global.yoho.helpers; const api = require('./detail-hotarea-api'); /** * 获取某一个商品的热区数据 */ -module.exports.indexAsync = (pid) => { +const indexAsync = pid => { return co(function *() { let data = yield api.indexAsync(pid); @@ -80,3 +77,7 @@ module.exports.indexAsync = (pid) => { })(); }; + +module.exports = { + indexAsync +}; diff --git a/apps/product/models/detail-product-api.js b/apps/product/models/detail-product-api.js index 3ec6ad2..d2c4aee 100644 --- a/apps/product/models/detail-product-api.js +++ b/apps/product/models/detail-product-api.js @@ -1,52 +1,49 @@ -'use strict'; - - -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); +/** + * Created by TaoHuang on 2016/6/14. + */ -const api = new API(); +'use strict'; +const api = global.yoho.API; -module.exports.getProductBannerAsync = function(pid, clientType) { +const getProductBannerAsync = (pid, clientType) => { clientType = clientType || 'web'; - return api.get('', sign.apiSign({ + return api.get('', { method: 'web.productBanner.data', product_id: pid, client_type: clientType - })).catch(log.error); + }); }; -module.exports.sizeInfoAsync = function(skn) { - return api.get('', sign.apiSign({ +const sizeInfoAsync = skn => { + return api.get('', { method: 'h5.product.intro', productskn: skn - })).catch(log.error); + }); }; -module.exports.getProductComfortAsync = function(pid) { - return api.get('', sign.apiSign({ +const getProductComfortAsync = pid => { + return api.get('', { method: 'web.productComfort.data', product_id: pid - })).catch(log.error); + }); }; -module.exports.getProductModelCardAsync = function(pid) { - return api.get('', sign.apiSign({ +const getProductModelCardAsync = pid => { + return api.get('', { method: 'web.productModelcard.list', product_id: pid - })).catch(log.error); + }); }; -module.exports.getProductModelTryAsync = function(skn) { - return api.get('', sign.apiSign({ +const getProductModelTryAsync = skn => { + return api.get('', { method: 'web.productModelTry.data', product_skn: skn - })).catch(log.error); + }); }; /** @@ -54,14 +51,21 @@ module.exports.getProductModelTryAsync = function(skn) { * @param pid * @returns {Promise.<type>} */ -module.exports.getProductInfo = function(pid) { - return api.get('', sign.apiSign({ +const getProductInfo = pid => { + return api.get('', { method: 'h5.product.data', productId: pid - })).catch(console.log); + }); }; - +module.exports = { + getProductBannerAsync, + sizeInfoAsync, + getProductComfortAsync, + getProductModelCardAsync, + getProductModelTryAsync, + getProductInfo +}; diff --git a/apps/product/models/favorite-brand-api.js b/apps/product/models/favorite-brand-api.js index 1044e35..edca2f6 100644 --- a/apps/product/models/favorite-brand-api.js +++ b/apps/product/models/favorite-brand-api.js @@ -1,22 +1,26 @@ -'use strict'; +/** + * Created by TaoHuang on 2016/6/14. + */ -const library = '../../../library'; -const ServiceAPI = require(`${library}/api`).ServiceAPI; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); +'use strict'; -const serviceAPI = new ServiceAPI(); +const serviceAPI = global.yoho.ServiceAPI; -module.exports.isFavoriteAsync = function(uid, bid) { - return serviceAPI.get('shops/service/v1/favorite/getUidBrandFav', sign.apiSign({ +const isFavoriteAsync = (uid, bid) => { + return serviceAPI.get('shops/service/v1/favorite/getUidBrandFav', { uid: uid, brandId: bid - })).catch(log.error); + }); }; -module.exports.changeAsync = function(uid, brandId) { - return serviceAPI.get('guang/service/v2/favorite/toggleBrand', sign.apiSign({ +const changeAsync = (uid, brandId) => { + return serviceAPI.get('guang/service/v2/favorite/toggleBrand', { uid: uid, brand_id: brandId - })).catch(log.error); + }); +}; + +module.exports = { + isFavoriteAsync, + changeAsync }; diff --git a/apps/product/models/favorite-brand-service.js b/apps/product/models/favorite-brand-service.js index 94b2d83..10fd121 100644 --- a/apps/product/models/favorite-brand-service.js +++ b/apps/product/models/favorite-brand-service.js @@ -4,9 +4,7 @@ 'use strict'; -const favoriteBrandAPI = require('./favorite-brand-api'); +const api = require('./favorite-brand-api'); -module.exports.changeAsync = favoriteBrandAPI.changeAsync; - -module.exports.isFavoriteAsync = favoriteBrandAPI.isFavoriteAsync; +module.exports = api; diff --git a/apps/product/models/favorite-product-api.js b/apps/product/models/favorite-product-api.js index 59d3ac0..19b977b 100644 --- a/apps/product/models/favorite-product-api.js +++ b/apps/product/models/favorite-product-api.js @@ -2,36 +2,39 @@ * Created by TaoHuang on 2016/6/13. */ -const library = '../../../library'; -const API = require(`${library}/api`).API; -const sign = require(`${library}/sign`); -const log = require(`${library}/logger`); +'use strict'; -const api = new API(); +const api = global.yoho.API; -module.exports.isFavoriteAsync = function(uid, pid) { - return api.get('', sign.apiSign({ +const isFavoriteAsync = (uid, pid) => { + return api.get('', { method: 'app.favorite.isFavorite', id: pid, uid: uid, type: 'product' - })).catch(log.error); + }); }; -module.exports.createAsync = function(uid, pid) { - return api.get('', sign.apiSign({ +const createAsync = (uid, pid) => { + return api.get('', { method: 'app.favorite.add', id: pid, uid: uid, type: 'product' - })).catch(log.error); + }); }; -module.exports.deleteAsync = function(uid, pid) { - return api.get('', sign.apiSign({ +const deleteAsync = (uid, pid) => { + return api.get('', { method: 'app.favorite.cancel', fav_id: pid, uid: uid, type: 'product' - })).catch(log.error); + }); +}; + +module.exports = { + isFavoriteAsync, + createAsync, + deleteAsync }; diff --git a/apps/product/models/home-service.js b/apps/product/models/home-service.js index fe27299..1ee69fd 100644 --- a/apps/product/models/home-service.js +++ b/apps/product/models/home-service.js @@ -1,13 +1,16 @@ +/** + * Created by TaoHuang on 2016/6/14. + */ + 'use strict'; -const library = '../../../library'; -const helpers = require(`${library}/helpers`); +const helpers = global.yoho.helpers; /** * 获取首页频道nav */ -// index home -module.exports.getHomeChannelNav = function(channel) { + +const getHomeChannelNav = (channel) => { let home = null; switch (channel) { @@ -44,3 +47,7 @@ module.exports.getHomeChannelNav = function(channel) { pathTitle: 'YOHO!有货' }; }; + +module.exports = { + getHomeChannelNav +}; diff --git a/apps/product/models/list.js b/apps/product/models/list.js index 90f4792..3ae7a23 100644 --- a/apps/product/models/list.js +++ b/apps/product/models/list.js @@ -6,46 +6,54 @@ */ 'use strict'; -const library = '../../../library'; const utils = '../../../utils'; -const API = require(`${library}/api`).API; -const api = new API(); +const api = global.yoho.API; +const saleApi = require('./sale-api'); const outletsApi = require('./outlets-api'); const productProcess = require(`${utils}/product-process`); const publicHandler = require('./public-handler'); -// const headerModel = require('../../../doraemon/models/header'); - /** * 获取商品列表商品数据 Controller 调用 * @param {[type]} params [常规参数] * @param {[type]} extra [左侧列表额外要拼接的参数] * @return {[type]} [description] */ -exports.getSaleOthersData = (params, channel) => { - - return api.all([ - // headerModel.requestHeaderData(channel), - outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel })), - outletsApi.getOutletsGoodsList({limit: '1', channel: channel }) - ]).then(result => { +exports.getListData = (params, channel) => { + let apiArr = []; + + if (params.productPool) { + // 奥莱活动页调用app.search.sales + apiArr = [ + saleApi.getSaleGoodsList({limit: '1', channel: channel }), + saleApi.getSaleGoodsList(Object.assign(params, { channel: channel })) + ]; + } else { + // 奥莱品类页调用app.search.li + apiArr = [ + outletsApi.getOutletsGoodsList({limit: '1', channel: channel }), + outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel })) + ]; + } + return api.all(apiArr).then(result => { let finalResult = {}; // 获取商品数据和顶部筛选条件 if (result[0].code === 200) { - finalResult.goods = productProcess.processProductList(result[0].data.product_list); + finalResult.leftContent = publicHandler.handleSaleSortData(result[0].data.filter.group_sort, params); + finalResult.pathNav = publicHandler.handlePathNavData(result[0].data.filter.group_sort, params); + } // 获取左侧类目数据 if (result[1].code === 200) { - finalResult.leftContent = publicHandler.handleSaleSortData(result[1].data.filter.group_sort, params); - finalResult.filters = publicHandler.handleSaleFilterData(result[1].data.filter, params); - finalResult.pathNav = publicHandler.handlePathNavData(result[1].data.filter.group_sort, params); - - // 处理排序数据 - finalResult.opts = publicHandler.handleSaleOptsData(params, result[1].data.total); - finalResult.totalCount = result[1].data.total; - finalResult.pager = publicHandler.handleSalePagerData(result[1].data.total, params); + Object.assign(finalResult, { + filters: publicHandler.handleSaleFilterData(result[1].data.filter, params), + opts: publicHandler.handleSaleOptsData(params, result[1].data.total), + totalCount: result[1].data.total, + footPager: publicHandler.handlePagerData(result[1].data.total, params), + goods: productProcess.processProductList(result[1].data.product_list) + }); } return finalResult; diff --git a/apps/product/models/outlets-api.js b/apps/product/models/outlets-api.js index 713bf7a..c7d7378 100644 --- a/apps/product/models/outlets-api.js +++ b/apps/product/models/outlets-api.js @@ -6,12 +6,9 @@ */ 'use strict'; -const library = '../../../library'; -const API = require(`${library}/api`).API; -const ServiceAPI = require(`${global.library}/api`).ServiceAPI; -const serviceApi = new ServiceAPI(); -const api = new API(); -const sign = require(`${library}/sign`); + +const serviceApi = global.yoho.ServiceAPI; +const api = global.yoho.API; const _ = require('lodash'); const yhChannel = { @@ -26,6 +23,9 @@ const yhChannel = { }, lifestyle: { channel: '4' + }, + otltIdxDflt: { + channel: null } }; @@ -40,17 +40,16 @@ const yhChannel = { */ exports.getOutletsActivityOrigin = (params) => { - let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel; + let tempChannel = params.channel || 'boys'; - return api.get('', sign.apiSign({ + return api.get('', { method: 'app.outlets.activityGet', - id: params.id || null, platform: params.platform || 1, size: params.size || 0, yh_channel: yhChannel[tempChannel].channel, type: params.type || 0 - })); + }); }; /** @@ -59,7 +58,7 @@ exports.getOutletsActivityOrigin = (params) => { * @return {[type]} */ exports.getChannelResouceData = (params) => { - return serviceApi.get('operations/api/v5/resource/home', sign.apiSign(params)); + return serviceApi.get('operations/api/v5/resource/home', params); }; /** @@ -68,15 +67,17 @@ exports.getChannelResouceData = (params) => { * @return {[type]} [description] */ exports.getOutletsTrendData = (params) => { - return api.get('', sign.apiSign({ + let tempChannel = params.channel || 'boys'; + + return api.get('', { method: 'app.search.trend', - yh_channel: params.yh_channel || '1', + yh_channel: yhChannel[tempChannel].channel, order: params.order || 's_s_desc,s_n_desc', gender: params.gender || '1,3', stocknumber: 1, // 过滤出库存 > 1的商品 limit: params.limit || 5, outlets: params.outlets || 1 // 默认取奥莱商品 - })); + }); }; @@ -85,39 +86,29 @@ exports.getOutletsTrendData = (params) => { * @return {[type]} [description] */ exports.getOutletsGoodsList = (params) => { + // 频道 + let tempChannel = params.channel || 'boys'; - let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel; + // 接口可接收的参数 + let apiParams = ['outlets', 'page', 'limit', 'order', 'productSize', 'yh_channel', 'query', + 'p_d', 'gender', 'msort', 'misort', 'sort', 'brand', 'color', 'size', 'saleType', + 'breakSize', 'breakSort', 'productPool', 'price', 'method']; + // 初始化必填的接口参数 let tempParams = { method: 'app.search.li', - query: _.isEmpty(params.query) ? null : params.query, - p_d: _.isEmpty(params.p_d) ? null : params.p_d, - limit: _.isEmpty(params.limit) ? '60' : params.limit, - order: _.isEmpty(params.order) ? 's_t_desc' : params.order, - page: _.isEmpty(params.page) ? 1 : params.page, - gender: _.isEmpty(params.gender) ? null : params.gender, - sort: _.isEmpty(params.sort) ? null : params.sort, - msort: _.isEmpty(params.msort) ? null : params.msort, - misort: _.isEmpty(params.misort) ? null : params.misort, - brand: _.isEmpty(params.brand) ? null : params.brand, - color: _.isEmpty(params.color) ? null : params.color, - size: _.isEmpty(params.size) ? null : params.size, - saleType: _.isEmpty(params.saleType) ? null : params.saleType, - breakSize: _.isEmpty(params.breakSize) ? null : params.breakSize, - breakSort: _.isEmpty(params.breakSort) ? null : params.breakSort, - productPool: _.isEmpty(params.productPool) ? null : params.productPool, - price: _.isEmpty(params.price) ? null : params.price, - outlets: _.isEmpty(params.outlets) ? 1 : params.outlets, + outlets: 1, + page: params.page || 1, + limit: params.limit || 60, + order: params.order || 's_t_desc', + productSize: '384x511', yh_channel: yhChannel[tempChannel].channel }; - let finalParams = {}; - - _.forEach(tempParams, function(value, key) { - if (!_.isEmpty(value)) { - finalParams[key] = value; + _.forEach(apiParams, (paramsName) => { + if (params[paramsName]) { + tempParams[paramsName] = params[paramsName]; } }); - - return api.get('', sign.apiSign(finalParams)); + return api.get('', tempParams); }; diff --git a/apps/product/models/outlets-handler.js b/apps/product/models/outlets-handler.js index 54fa7c7..c6df88c 100644 --- a/apps/product/models/outlets-handler.js +++ b/apps/product/models/outlets-handler.js @@ -1,7 +1,12 @@ +/** + * + * @Author: zhoushaofeng + * @Date: 2016-06-02 15:50:47 + * @Last Modified time: 2016-06-08 19:31:52 + */ 'use strict'; -const library = '../../../library'; const utils = '../../../utils'; -const helpers = require(`${library}/helpers`); +const helpers = global.yoho.helpers; const _ = require('lodash'); const camelCase = require('../../../library/camel-case'); const productProcess = require(`${utils}/product-process`); @@ -9,33 +14,6 @@ const url = require('url'); const queryString = require('querystring'); /** - * NL2R图片轮播 - */ -const nl2r = (data) => { - const result = { - left: [], - right: [] - }; - - // 左侧 - _.forEach(data.left, (value) => { - result.left.push({ - img: value.src, - url: value.url - }); - }); - - // 右侧 - _.forEach(data.right, (value) => { - result.right.push({ - img: value.src, - url: value.url - }); - }); - return result; -}; - -/** * 热门分类 */ const hotCategory = (data) => { @@ -76,17 +54,17 @@ const discountSplit = (text) => { * @return {[type]} [description] */ const handleOutletsGoodsMenuData = (origin, params) => { - let dest = {}; - - var oldParam = _.cloneDeep(params); - - dest.title = '最新折扣'; - dest.more = '/product/outlets/list'; - dest.menuList = []; + let dest = { + title: '最新折扣', + more: '/product/outlets/list', + menuList: [], + msort: [], + misort: [] + }; _.forEach(origin, subValue => { + let oldParam = _.cloneDeep(params); let goodsmenu = {}; - let urlSuffix = {}; goodsmenu.name = subValue.categoryName; @@ -96,22 +74,24 @@ const handleOutletsGoodsMenuData = (origin, params) => { if (!_.isEmpty(urlSuffix.msort) && urlSuffix.msort === oldParam.msort && urlSuffix.misort === oldParam.misort) { goodsmenu.cur = true; } - + delete oldParam.msort; + delete oldParam.misort; if (urlSuffix.msort) { - Object.assign(params, {msort: urlSuffix.msort}); + Object.assign(oldParam, {msort: urlSuffix.msort}); + dest.msort.push(urlSuffix.msort); } if (urlSuffix.misort) { - Object.assign(params, {misort: urlSuffix.misort}); + Object.assign(oldParam, {misort: urlSuffix.misort}); + dest.misort.push(urlSuffix.misort); } - goodsmenu.href = '?' + queryString.stringify(params); + goodsmenu.href = '?' + queryString.stringify(oldParam) + '#otspool'; dest.menuList.push(goodsmenu); }); return dest; }; - /** * 分类导航 */ @@ -138,7 +118,7 @@ exports.processFloor = (list, params) => { _.forEach(list, (floor) => { switch (floor.templateName) { case 'NL2R': - floorData = nl2r(floor.data); + floorData = {topBanner: floor.data}; break; case 'hotCategory': floorData = hotCategory(floor.data); @@ -171,8 +151,9 @@ exports.handleOutletsBannersData = (origin, params) => { // 处理焦点图数据 if (value.template_name === 'focus') { - dest.mainBanner = {}; - dest.mainBanner.list = value.data; + dest.mainBanner = { + list: value.data + }; } // 处理三张小图数据 @@ -182,17 +163,18 @@ exports.handleOutletsBannersData = (origin, params) => { // 处理右侧一张图片 if (value.template_name === 'single_image') { - dest.limitedBuy.extra.sourceImg = {}; - dest.limitedBuy.extra.sourceImg.href = value.data[0].url; - dest.limitedBuy.extra.sourceImg.img = value.data[0].src; - console.log(value.data[0].src); + dest.limitedBuy.extra.sourceImg = { + href: value.data[0].url, + img: value.data[0].src + }; } // 处理热销推荐数据 if (value.template_name === 'recommendCategory') { - dest.limitedBuy.extra.hotType = {}; - dest.limitedBuy.extra.hotType.title = _.isEmpty(value.data.title) ? '热销推荐' : value.data.title; - dest.limitedBuy.extra.hotType.classify = []; + dest.limitedBuy.extra.hotType = { + title: _.isEmpty(value.data.title) ? '热销推荐' : value.data.title, + classify: [] + }; _.forEach(value.data.categoryList, subValue => { let category = {}; @@ -208,9 +190,9 @@ exports.handleOutletsBannersData = (origin, params) => { // 处理品类导航数据 if (value.template_name === 'categoryNavigation') { - dest.goodsBoard = {}; - - dest.goodsBoard.goodsMenu = handleOutletsGoodsMenuData(value.data, params); + dest.goodsBoard = { + goodsMenu: handleOutletsGoodsMenuData(value.data, params) + }; } }); @@ -224,23 +206,20 @@ exports.handleOutletsBannersData = (origin, params) => { * @return {[type]} [description] */ exports.handleOutletsActivityData = (origin, name) => { - - let dest = {}; - - let nowTime = Math.round(new Date().getTime() / 1000); - - dest.name = name || '限时嗨购'; // 需要根据 name 传值修改 - dest.topic = []; + let dest = { + name: name || '限时嗨购', + topic: [] + }; // 处理奥莱活动列表数据 _.forEach(origin, value => { - let activity = {}; - - activity.href = helpers.urlFormat('/product/outlets/special/detail', { id: value.id }); - activity.img = value.webCoverUrl; - activity.logo = value.logoUrl; - activity.title = value.title; - activity.limit = (value.endTime - nowTime) * 1000; + let activity = { + href: helpers.urlFormat('/product/outlets/special/detail', {id: value.id}), + img: value.webCoverUrl, + logo: value.logoUrl, + title: value.title, + limit: parseInt(value.endLeftTime, 10) * 1000 + }; if (value.promotionName) { Object.assign(activity, discountSplit(value.promotionName)); @@ -261,7 +240,7 @@ exports.handleOutletsSpecilData = (origin) => { let dest = {}; dest.mainBanner = { - src: origin.webUrl + src: helpers.image(origin.webUrl, 1920, 360) }; dest.specialHead = { @@ -289,7 +268,27 @@ exports.handleOutletstrendGoodData = (origin) => { dest.title = '潮品推荐'; dest.goods = productProcess.processProductList(origin.product_list); _.forEach(dest.goods, (value, key) => { - dest.goods[key].discount = (value.salesPrice / value.marketPrice).toFixed(2) * 10; + dest.goods[key].discount = (value.salesPrice / value.marketPrice * 10).toFixed(1) * 1; + }); + + return dest; +}; + +/** + * 处理即将上线品牌数据 + * @param origin + * @returns {{}} + */ +exports.handleComeSoonData = (origin) => { + let dest = { + title: '上线预告' + }; + + dest.brands = []; + _.forEach(origin, value => { + dest.brands.push({ + logo: value.logoUrl + }); }); return dest; diff --git a/apps/product/models/outlets.js b/apps/product/models/outlets.js index 9d887de..a8ebdd9 100644 --- a/apps/product/models/outlets.js +++ b/apps/product/models/outlets.js @@ -6,10 +6,8 @@ */ 'use strict'; -const library = '../../../library'; const utils = '../../../utils'; -const API = require(`${library}/api`).API; -const api = new API(); +const api = global.yoho.API; const list = require('./list'); const outletsProcess = require('./outlets-handler'); const outletsApi = require('./outlets-api'); @@ -18,6 +16,7 @@ const headerModel = require('../../../doraemon/models/header'); const _ = require('lodash'); const publicHandler = require('./public-handler'); +const log = global.yoho.logger; // 奥莱频道资源码 const channelCode = { @@ -37,54 +36,91 @@ exports.getOutletsIndexData = (params, channel) => { return api.all([ headerModel.requestHeaderData('outlets'), - outletsApi.getChannelResouceData({ content_code: channelCode.index }), - outletsApi.getOutletsActivityOrigin({ type: '1', channel: channel }), // 获取限时活动列表 - outletsApi.getOutletsActivityOrigin({ type: '2', channel: channel }), // 获取即将结束列表 - outletsApi.getOutletsTrendData({ limit: '30' }), // 获取潮流速递商品数据 - outletsApi.getOutletsGoodsList({ limit: params.limit || '100' }) // 获取底部商品数据 - + outletsApi.getChannelResouceData({content_code: channelCode.index}), + outletsApi.getOutletsActivityOrigin({type: '1', channel: channel}), // 获取限时活动列表 + outletsApi.getOutletsActivityOrigin({type: '2', channel: channel}), // 获取即将结束列表 + outletsApi.getOutletsTrendData({limit: '30', channel: channel}), // 获取潮流速递商品数据 + outletsApi.getOutletsActivityOrigin({type: '3', channel: channel}) // tar add 16171552 即将上线数据 ]).then(result => { - let finalResult = {}; - - finalResult.headerData = {}; - finalResult.headerData.header = true; - finalResult.headerData.headType = 'outlets'; - finalResult.headerData.yohoGroup = []; - finalResult.headerData.navbars = []; - finalResult.headerData.subNav = result[0]; + let finalResult = { + headerData: Object.assign(result[0].headerData, { + header: true, + headType: 'outlets' + }) + }; // 处理资源位数据 - if (result[1].code === 200) { + if (result[1].code === 200 && !_.isEmpty(result[1].data)) { finalResult = Object.assign(finalResult, outletsProcess.handleOutletsBannersData(result[1].data, params)); } // 处理限时嗨购列表数据 - if (result[2].code === 200) { + if (result[2].code === 200 && !_.isEmpty(result[2].data)) { finalResult.limitedBuy = Object.assign(finalResult.limitedBuy, outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购')); } // 处理即将结束列表数据 - if (result[3].code === 200) { + if (result[3].code === 200 && !_.isEmpty(result[3].data)) { finalResult.nearOver = outletsProcess.handleOutletsActivityData(result[3].data, '即将结束'); } // 处理潮品推荐数据 - if (result[4].code === 200) { + if (result[4].code === 200 && !_.isEmpty(result[4].data)) { finalResult.limitedBuy.extra.trendGood = outletsProcess.handleOutletstrendGoodData(result[4].data); } - // 处理底部商品数据 - if (result[5].code === 200) { - finalResult.goodsBoard.list = productProcess.processProductList(result[5].data.product_list); - finalResult.goodsBoard.sort = publicHandler.handleSaleOptsData(params, result[5].data.total); - finalResult.goodsBoard.sort.newPage = true; - finalResult.pager = publicHandler.handleSalePagerData(result[5].data.total, params); + // 处理即将上架品牌数据 + if (result[5].code === 200 && !_.isEmpty(result[5].data)) { + finalResult.limitedBuy.extra.comeSoon = outletsProcess.handleComeSoonData(result[5].data); + } + + // 如果后台没配分类,不显示商品列表 + if (!finalResult.goodsBoard.goodsMenu.msort && !finalResult.goodsBoard.goodsMenu.msort) { + log.info('no config index sort'); + return finalResult; } - return finalResult; + // 获取底部商品数据 + + if (!params.msort && !params.misort) { + Object.assign( + params, + {msort: _.uniq(finalResult.goodsBoard.goodsMenu.msort).join()} + ); + } + return api.all([ + outletsApi.getOutletsGoodsList(Object.assign( + params, + {limit: params.limit || '100', channel: channel, method: 'app.search.category'} + )) + ]).then(data => { + // 处理底部商品数据 + if (data[0].code === 200 && !_.isEmpty(data[0].data)) { + Object.assign(finalResult.goodsBoard, { + sort: Object.assign(publicHandler.handleSaleOptsData(params, data[0].data.total), {newPage: true}), + list: productProcess.processProductList(data[0].data.product_list) + }); + + // 添加锚点 + if (finalResult.goodsBoard.sort.sortType) { + _.forEach(finalResult.goodsBoard.sort.sortType, (value, key) => { + finalResult.goodsBoard.sort.sortType[key].href += '#otspool'; + }); + if (finalResult.goodsBoard.sort.preHref) { + finalResult.goodsBoard.sort.preHref += '#otspool'; + } + if (finalResult.goodsBoard.sort.nextHref) { + finalResult.goodsBoard.sort.nextHref += '#otspool'; + } + } + + finalResult.goodsBoard.footPager = publicHandler.handlePagerData(data[0].data.total, params); + } + return finalResult; + }); }); }; @@ -94,59 +130,94 @@ exports.getOutletsIndexData = (params, channel) => { * @return {[type]} */ exports.getOutletsChannelData = (params, channel) => { + // 频道资源位不存在 + if (!channelCode[channel]) { + throw new Error('outlets channel resource not found'); + } + let channelData = {}; let apiArr = [ - headerModel.requestHeaderData('outlets') - ]; + // 获取头部数据 + headerModel.requestHeaderData('outlets'), + + // 获取频道资源位 + outletsApi.getChannelResouceData({content_code: channelCode[channel]}), - if (channelCode[channel]) { - apiArr.push(outletsApi.getChannelResouceData({ - content_code: channelCode[channel] - })); - apiArr.push(outletsApi.getOutletsActivityOrigin({ + // 获取奥莱活动 + outletsApi.getOutletsActivityOrigin({ platform: 1, size: 0, channel: channel, type: 1 - })); - apiArr.push(outletsApi.getOutletsGoodsList(Object.assign(params, {channel: channel}))); - } else { - // 错误页面 - channelData.pageErr = true; - } + }) + ]; return api.all(apiArr).then(result => { - let finalResult = {}; - - finalResult.headerData = {}; - finalResult.headerData = result[0].headerData; - finalResult.headerData.header = true; - finalResult.headerData.headType = 'outlets'; + // 返回页面的数据 + let finalResult = { + headerData: Object.assign(result[0].headerData, { + header: true, + headType: 'outlets' + }) + }; Object.assign(channelData, finalResult); - if (!channelData.pageErr) { - // 资源楼层 - if (result[1].code === 200) { - Object.assign(channelData, outletsProcess.processFloor(result[1].data.list, params)); - } + // 资源楼层 + if (result[1].code === 200) { + Object.assign(channelData, outletsProcess.processFloor(result[1].data.list, params)); + } - // 限时嗨购 - if (result[2].code === 200) { - channelData.nearOver = outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购'); - } + // 限时嗨购 + if (result[2].code === 200 && !_.isEmpty(result[2].data)) { + channelData.nearOver = outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购'); + } - // 商品列表 - if (result[3].code === 200) { - channelData.goodsBoard.sort = publicHandler.handleSaleOptsData(params, result[3].data.total); - channelData.goodsBoard.sort.newPage = true; - channelData.goodsBoard.list = productProcess.processProductList(result[3].data.product_list); - channelData.pager = publicHandler.handleSalePagerData(result[3].data.total, params); - } + // 如果后台没配分类,不显示商品列表 + if (!channelData.goodsBoard || !channelData.goodsBoard.goodsMenu || + (!channelData.goodsBoard.goodsMenu.msort && !channelData.goodsBoard.goodsMenu.msort)) { + log.info('no config ' + channel + 'channel sort'); + return channelData; } - return channelData; + // 获取底部商品数据 + if (!params.msort || !params.misort) { + Object.assign( + params, + {msort: _.uniq(channelData.goodsBoard.goodsMenu.msort).join()} + ); + } + return api.all([ + outletsApi.getOutletsGoodsList(Object.assign( + params, + {limit: params.limit || '100', channel: channel, method: 'app.search.category'} + )) + ]).then(data => { + if (data[0].code === 200) { + if (!channelData.goodsBoard) { + channelData.goodsBoard = {}; + } + channelData.goodsBoard.sort = publicHandler.handleSaleOptsData(params, data[0].data.total); + channelData.goodsBoard.sort.newPage = true; + channelData.goodsBoard.list = productProcess.processProductList(data[0].data.product_list); + channelData.goodsBoard.pager = publicHandler.handlePagerData(data[0].data.total, params); + + // 添加锚点 + if (channelData.goodsBoard.sort.sortType) { + _.forEach(channelData.goodsBoard.sort.sortType, (value, key) => { + channelData.goodsBoard.sort.sortType[key].href += '#otspool'; + }); + if (channelData.goodsBoard.sort.preHref) { + channelData.goodsBoard.sort.preHref += '#otspool'; + } + if (channelData.goodsBoard.sort.nextHref) { + channelData.goodsBoard.sort.nextHref += '#otspool'; + } + } + } + return channelData; + }); }); }; @@ -158,36 +229,33 @@ exports.getOutletsChannelData = (params, channel) => { exports.getOutletsSpecialData = (params, channel) => { return api.all([ headerModel.requestHeaderData('outlets'), - outletsApi.getOutletsActivityOrigin({ + outletsApi.getOutletsActivityOrigin({ // 获取活动信息 id: params.id }) ]).then(result => { let specialData = {}; - specialData.headerData = {}; - specialData.headerData = result[0].headerData; - specialData.headerData.header = true; + Object.assign(specialData, result[0]); specialData.headerData.headType = 'outlets'; - specialData.pageErr = true; - if (result[1].code === 200) { - delete specialData.pageErr; - Object.assign(specialData, - outletsProcess.handleOutletsSpecilData(result[1].data[0])); - - return api.all([ - list.getSaleOthersData(Object.assign({ - productPool: result[1].data[0].productPoolId, - saleType: 4 - }, params), channel) - ]).then(data => { - specialData.specialHead.count = data[0].totalCount; - Object.assign(specialData, data[0]); - return specialData; - }); + // 活动信息获取异常 + if (result[1].code !== 200) { + throw new Error('outlets special info not found-(ID:' + params.id + ')'); } - return specialData; + Object.assign(specialData, + outletsProcess.handleOutletsSpecilData(result[1].data[0])); + + return api.all([ + list.getListData(Object.assign({ + productPool: result[1].data[0].productPoolId, + saleType: 4 + }, params), channel) + ]).then(data => { + specialData.specialHead.count = data[0].totalCount; + Object.assign(specialData, data[0]); + return specialData; + }); }); }; @@ -201,23 +269,26 @@ exports.getOutletsCategoryData = (params, channel) => { return api.all([ headerModel.requestHeaderData('outlets') ]).then(result => { - let finalResult = {}; - - finalResult.headerData = {}; - finalResult.headerData = result[0].headerData; - finalResult.headerData.header = true; - finalResult.headerData.headType = 'outlets'; + let finalResult = { + headerData: Object.assign(result[0].headerData, { + header: true, + headType: 'outlets' + }) + }; return api.all([ - list.getSaleOthersData(params, channel) + list.getListData(params, channel) ]).then(listResult => { finalResult.saleList = listResult[0]; if (!_.isEmpty(params.bannerImage)) { - finalResult.saleList.topBanner = {}; - finalResult.saleList.topBanner.list = []; - finalResult.saleList.topBanner.list[0] = {}; - finalResult.saleList.topBanner.list[0].img = params.bannerImage; + finalResult.saleList.topBanner = { + list: [ + { + img: params.bannerImage + } + ] + }; } return finalResult; }); diff --git a/apps/product/models/public-handler.js b/apps/product/models/public-handler.js index 1637b71..acb74c8 100644 --- a/apps/product/models/public-handler.js +++ b/apps/product/models/public-handler.js @@ -2,42 +2,26 @@ * @Author: Targaryen * @Date: 2016-06-02 15:50:47 * @Last Modified by: Targaryen - * @Last Modified time: 2016-06-08 19:31:52 + * @Last Modified time: 2016-06-22 18:36:26 */ 'use strict'; const _ = require('lodash'); -const library = '../../../library'; -const helpers = require(`${library}/helpers`); +const helpers = global.yoho.helpers; +const queryString = require('querystring'); /** - * 处理用于筛选的 URL - * @param {[type]} originParam [description] - * @param {[type]} newParam [description] - * @return {[type]} [description] + * 处理用于筛选的 URL , 拼接 URL 参数 + * @param originParam 当前 URL 中的参数 + * @param newParam 要拼接的 参数 + * @returns {string} */ const handleFilterUrl = (originParam, newParam) => { let dest = '?'; let tempOriginParam = {}; - // 创建 originParam、newParam 键的数组 - let originParamArray = _.keys(originParam); - let newParamArray = _.keys(newParam); - - // 判断参数是否已经存在 - let isExist = !_.isEmpty(_.find(originParamArray, function(o) { - return o === newParamArray[0]; - })); - - if (isExist) { - tempOriginParam = Object.assign(tempOriginParam, originParam); - - _.forEach(newParam, function(value, key) { - tempOriginParam[key] = value; - }); - } else { - tempOriginParam = Object.assign(tempOriginParam, originParam, newParam); - } + tempOriginParam = Object.assign(tempOriginParam, originParam, newParam); + delete tempOriginParam.uid; _.forEach(tempOriginParam, function(value, key) { dest = dest + key + '=' + value + '&'; @@ -48,26 +32,23 @@ const handleFilterUrl = (originParam, newParam) => { /** * 处理最新降价折扣信息 - * @return {[type]} [description] + * @param params 当前 URL 的参数 + * @returns {Array|*[]} */ const handleSaleNewSaleSortData = (params) => { - var dest; - - dest = [{ + return [{ name: '1~3折', - href: handleFilterUrl(params, {p_d: '0.1,0.3'}), - checked: (params.p_d === '0.1,0.3') ? true : false + href: handleFilterUrl(params, { p_d: '0.1,0.3' }), + checked: params.p_d === '0.1,0.3' }, { name: '4~6折', - href: handleFilterUrl(params, {p_d: '0.4,0.6'}), - checked: (params.p_d === '0.4,0.6') ? true : false + href: handleFilterUrl(params, { p_d: '0.4,0.6' }), + checked: params.p_d === '0.4,0.6' }, { name: '7折以上', - href: handleFilterUrl(params, {p_d: '0.7,1'}), - checked: (params.p_d === '0.7,1') ? true : false + href: handleFilterUrl(params, { p_d: '0.7,1' }), + checked: params.p_d === '0.7,1' }]; - - return dest; }; /** @@ -75,13 +56,13 @@ const handleSaleNewSaleSortData = (params) => { * @return {[type]} [description] */ const handleSalebreakingYardsSortData = (origin, params) => { - var dest = []; + let dest = []; if (!_.isEmpty(params.sort)) { // 是否有分类筛选参数,如果有 - _.forEach(params.sort.split(','), function(sortParam) { - _.forEach(origin, function(value) { + _.forEach(params.sort.split(','), sortParam => { + _.forEach(origin, value => { // 判断是否在这组数据里面 if (!_.isEmpty(_.find(value.sort_id.split(','), o => { @@ -89,30 +70,29 @@ const handleSalebreakingYardsSortData = (origin, params) => { }))) { // 如果在某组数据里面,组合数据退出循环 - _.forEach(value.sub, function(subValue) { - let size = {}; - - size.checked = - (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false; - size.href = handleFilterUrl(params, {size: subValue.size_id}); - size.name = subValue.size_name; - - dest.push(size); + _.forEach(value.sub, subValue => { + dest.push({ + checked: +params.size === +subValue.size_id, + href: handleFilterUrl(params, { + size: subValue.size_id + }), + name: subValue.size_name + }); }); return false; } }); }); } else { // 如果没有筛选参数,返回所有分类 - _.forEach(origin, function(value) { - _.forEach(value.sub, function(subValue) { - let size = {}; - - size.checked = (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false; - size.href = handleFilterUrl(params, {size: subValue.size_id}); - size.name = subValue.size_name; - - dest.push(size); + _.forEach(origin, value => { + _.forEach(value.sub, subValue => { + dest.push({ + checked: +params.size === +subValue.size_id, + href: handleFilterUrl(params, { + size: subValue.size_id + }), + name: subValue.size_name + }); }); }); } @@ -128,23 +108,20 @@ const handleSalebreakingYardsSortData = (origin, params) => { * @return {[type]} [description] */ const handleCheckedData = (params, origin, param) => { - var dest = []; + let dest = []; // 品牌选中数据 if (!_.isEmpty(origin)) { - _.forEach(origin, (value) => { + _.forEach(origin, value => { if (value.checked) { - let checked = {}; + let tempPatam = {}; - checked.name = value.name; + tempPatam[param] = ''; - let tempParam = {}; - - tempParam[param] = ''; - - checked.href = handleFilterUrl(params, tempParam); - - dest.push(checked); + dest.push({ + name: value.name, + href: handleFilterUrl(params, tempPatam) + }); } }); } @@ -153,119 +130,123 @@ const handleCheckedData = (params, origin, param) => { }; /** - * 处理分页数据 - * @param {[type]} total [description] - * @param {[type]} params [description] - * @return {[type]} [description] + * 处理品牌筛选数据 + * @param params + * @param origin + * @returns {{}} */ -exports.handleSalePagerData = (total, params) => { - - - // 当前页 - let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10); - let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); - let totalPage = parseInt(total / perPageCount, 10) + 1; +const handleBrandCheckedData = (params, origin) => { + let dest = []; - let dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage)}) + - '" class="cur">' + currentPage + '</a>'; + // 分拆品牌参数 + let brands = _.split(params.brand, ','); + let intBrands = []; - // 先处理大多数情况 - if ((currentPage > 2) && (currentPage < (parseInt(total, 10) / perPageCount) - 1)) { + _.forEach(brands, value => { + intBrands.push(parseInt(value, 10)); + }); - for (let i = 1; i < 3; i++) { - dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage - i)}) + '">' + - (currentPage - i) + '</a> ' + dest + ' <a href ="' + - handleFilterUrl(params, {page: (currentPage + i)}) + - '">' + (currentPage + i) + '</a>'; - } + let checkedCount = 0; - // 处理页码小于2的情况 - } else if (currentPage <= 2) { - for (let i = currentPage - 1; i > 0; i--) { - dest = '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>' + dest; - } + // 遍历品牌数据,如果在参数中,那么加 checked,将此数据加入到 checked 数组中 + if (!_.isEmpty(origin)) { + _.forEach(origin, (value) => { + if (typeof _.find(intBrands, o => { + return _.isEqual(o, value.id); + }) !== 'undefined') { - for (let i = currentPage + 1; i < (totalPage < 6 ? totalPage : 6); i++) { - dest += '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>'; - } + let checked = { + name: value.name + }; // push 到已选择数组 - // 处理页码大于最大页-2的情况 - } else if (currentPage > totalPage - 2) { - for (let i = currentPage + 1; i < totalPage + 1; i++) { - dest += '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>'; - } + // 为了不污染原始数据 + let tempIntBrands = _.cloneDeep(intBrands); - for (let i = currentPage - 1; i > (currentPage - 5 > 1 ? currentPage - 5 : 1); i--) { - dest = '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>' + dest; - } - } + // 去掉当前选项 + _.remove(tempIntBrands, n => { + return n === value.id; + }); - // 处理后省略号的情况 - if ((totalPage > 5) && (currentPage < (totalPage - 2))) { + // 拼接参数 + let brand = ''; - dest += ' ... <a href ="' + handleFilterUrl(params, {page: totalPage}) + - '">' + totalPage + '</a>'; + // 建议保留,需要品牌可以单个删除时放开注释即可 + // _.forEach(tempIntBrands, subValue => { + // brand += subValue + ','; + // }); - } + // 清除参数,保留没有去掉的参数 + let tempParam = { + brand: brand + }; - // 处理前省略号的情况 - if (currentPage > 3) { - dest = '<a href ="' + handleFilterUrl(params, {page: 1}) + - '">1</a> ... ' + dest; - } - - // 处理上一页下一页 - if (currentPage !== 1) { - dest = '<a href="' + handleFilterUrl(params, {page: currentPage - 1}) + - '"><span class="iconfont">上一页</span></a>' + dest; - } + checked.href = handleFilterUrl(params, tempParam); + if (checkedCount === 0) { + dest[0] = checked; + } else if (checkedCount === 1) { + dest[0].name += '、' + checked.name.substring(0, 3) + '...'; + } + checkedCount++; - if (currentPage !== totalPage) { - dest += '<a href="' + handleFilterUrl(params, {page: currentPage + 1}) + - '"><span class="iconfont">下一页</span></a>'; + // 建议保留,需要品牌可以单个删除时放开注释即可 + // dest.push(checked); + } + }); } - return dest; }; - /** * 处理 opts 排序数据 - * @param {[type]} origin [description] - * @return {[type]} [description] + * @param params + * @param total + * @param extra 什么都可以传进来,多个参数传Object + * @returns {{}} */ -exports.handleSaleOptsData = (params, total) => { - var dest = {}; +exports.handleSaleOptsData = (params, total, extra) => { + let dest = { + sortType: [] + }; - dest.sortType = []; + // 用来标记是否是折扣专场,折扣专场只需要前三个排序参数 + let count = (extra === 'discont') ? 3 : 4; - for (let i = 0; i < 4; i++) { + for (let i = 0; i < count; i++) { let opt = {}; switch (i) { case 0: - opt.href = handleFilterUrl(params, {order: 's_t_desc'}); - opt.name = '最新'; - opt.hasSortOrient = true; - opt.active = true; - opt.desc = true; + opt.href = handleFilterUrl(params, { order: 's_t_desc' }); + if (extra === 'discont') { // 如果是折扣专场 + opt.name = '全部'; + if (_.isEmpty(params.order) || params.order === 's_t_desc') { + opt.active = true; + } else { + opt.active = false; + } + } else { + opt.name = '最新'; + opt.hasSortOrient = true; + if (_.isEmpty(params.order) || params.order === 's_t_desc') { + opt.active = true; + } else { + opt.active = false; + } + opt.desc = true; + } break; case 1: if (params.order !== 's_p_desc' && params.order !== 's_p_asc') { - opt.href = handleFilterUrl(params, {order: 's_p_desc'}); + opt.href = handleFilterUrl(params, { order: 's_p_desc' }); opt.hasSortOrient = true; } else { opt.hasSortOrient = true; opt.active = true; if (params.order === 's_p_desc') { - opt.href = handleFilterUrl(params, {order: 's_p_asc'}); + opt.href = handleFilterUrl(params, { order: 's_p_asc' }); opt.desc = false; } else { - opt.href = handleFilterUrl(params, {order: 's_p_desc'}); + opt.href = handleFilterUrl(params, { order: 's_p_desc' }); opt.desc = true; } } @@ -274,16 +255,16 @@ exports.handleSaleOptsData = (params, total) => { break; case 2: if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') { - opt.href = handleFilterUrl(params, {order: 'p_d_desc'}); + opt.href = handleFilterUrl(params, { order: 'p_d_desc' }); opt.hasSortOrient = true; } else { opt.hasSortOrient = true; opt.active = true; if (params.order === 'p_d_desc') { - opt.href = handleFilterUrl(params, {order: 'p_d_asc'}); + opt.href = handleFilterUrl(params, { order: 'p_d_asc' }); opt.desc = false; } else { - opt.href = handleFilterUrl(params, {order: 'p_d_desc'}); + opt.href = handleFilterUrl(params, { order: 'p_d_desc' }); opt.desc = true; } } @@ -292,16 +273,16 @@ exports.handleSaleOptsData = (params, total) => { break; case 3: if (params.order !== 's_n_desc' && params.order !== 's_n_asc') { - opt.href = handleFilterUrl(params, {order: 's_n_desc'}); + opt.href = handleFilterUrl(params, { order: 's_n_desc' }); opt.hasSortOrient = true; } else { opt.hasSortOrient = true; opt.active = true; if (params.order === 's_n_desc') { - opt.href = handleFilterUrl(params, {order: 's_n_asc'}); + opt.href = handleFilterUrl(params, { order: 's_n_asc' }); opt.desc = false; } else { - opt.href = handleFilterUrl(params, {order: 's_n_desc'}); + opt.href = handleFilterUrl(params, { order: 's_n_desc' }); opt.desc = true; } } @@ -317,25 +298,18 @@ exports.handleSaleOptsData = (params, total) => { // 上下翻页数据处理 dest.pageCounts = [{ - href: handleFilterUrl(params, {limit: 200}), + href: handleFilterUrl(params, { limit: 200 }), count: 200 }, { - href: handleFilterUrl(params, {limit: 100}), + href: handleFilterUrl(params, { limit: 100 }), count: 100 }, { - href: handleFilterUrl(params, {limit: 60}), + href: handleFilterUrl(params, { limit: 60 }), count: 60 }]; dest.curPage = _.isEmpty(params.page) ? 1 : params.page; // 当前页码数 - // 上一页下一页 - let preHref = (!_.isEmpty(params.page) && params.page > 1) ? params.page - 1 : 1; - let nextHref = (!_.isEmpty(params.page)) ? params.page + 1 : 2; - - dest.preHref = handleFilterUrl(params, {page: preHref}); - dest.nextHref = handleFilterUrl(params, {page: nextHref}); - // 每页商品数量 dest.countPerPage = _.isEmpty(params.limit) ? 60 : params.limit; @@ -345,48 +319,86 @@ exports.handleSaleOptsData = (params, total) => { // 每页多少商品 let paramsLimit = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); + // 上一页下一页 + let preHref = (!_.isEmpty(params.page) && parseInt(params.page, 10) > 1) ? + parseInt(params.page, 10) - 1 : 1; + let nextHref = (!_.isEmpty(params.page)) ? parseInt(params.page, 10) + 1 : 2; + + if (dest.pageCount > 1 && (parseInt(params.page, 10) !== 1) && + (parseInt(params.page, 10) !== dest.pageCount)) { + dest.preHref = handleFilterUrl(params, { page: preHref }); + dest.nextHref = handleFilterUrl(params, { page: nextHref }); + } else if (dest.pageCount > 1 && (parseInt(params.page, 10) === 1)) { + dest.nextHref = handleFilterUrl(params, { page: nextHref }); + } else if (dest.pageCount > 1 && (parseInt(params.page, 10) === dest.pageCount)) { + dest.preHref = handleFilterUrl(params, { page: preHref }); + } + + // 全部商品数 + dest.totalCount = total; + // 商品开始结束数 dest.start = (!_.isEmpty(params.page) ? (params.page - 1) : 0) * paramsLimit + 1; - dest.end = parseInt(dest.start, 10) + paramsLimit - 1; + if (total < paramsLimit) { + dest.end = total; + } else { + dest.end = (dest.pageCount === parseInt(params.page, 10)) ? + total : parseInt(dest.start, 10) + paramsLimit - 1; + } return dest; }; /** * 处理页面左侧分类筛选数据 - * @return {[type]} [description] + * @param origin 分类原始数据,一般是接口返回数据中的 group_sort 字段 + * @param params 当前 URL 中已有的参数 + * @param extra 可以任意传值用来处理特殊情况 + * @returns {{}} */ exports.handleSaleSortData = (origin, params, extra) => { - var leftContent = {}; + let leftContent = {}; leftContent.allSort = {}; leftContent.allSort.list = []; - let perAllSort = { - name: '全部品类', - href: handleFilterUrl(params), - all: true, - num: extra - }; + // 删除 msort misort + // delete params.msort; + // delete params.misort; - leftContent.allSort.list.push(perAllSort); + if (extra === 'discount') { + let tempParams = _.cloneDeep(params); + delete tempParams.sort; - _.forEach(origin, function(value) { + leftContent.allSort.all = { + name: '全部品类', + href: handleFilterUrl(tempParams), + active: _.isEmpty(params.sort) + }; + } else { + leftContent.allSort.all = { + name: '全部品类', + href: handleFilterUrl(params) + }; + } + + _.forEach(origin, value => { - let category = {}; + let category = { + name: value.category_name, + num: value.node_count, + childList: [], + href: handleFilterUrl(params, { sort: value.relation_parameter.sort }), + active: params.sort === value.relation_parameter.sort + }; - category.name = value.category_name; - category.num = value.node_count; - category.childList = []; - category.href = handleFilterUrl(params, {sort: value.relation_parameter.sort}); - category.active = false; - _.forEach(value.sub, function(subValue) { + _.forEach(value.sub, subValue => { category.childList.push({ name: subValue.category_name, num: subValue.node_count, - href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}), - childActive: (params.sort === subValue.relation_parameter.sort) ? true : false + href: handleFilterUrl(params, { sort: subValue.relation_parameter.sort }), + childActive: params.sort === subValue.relation_parameter.sort }); if (params.sort === subValue.relation_parameter.sort) { category.active = true; @@ -401,43 +413,34 @@ exports.handleSaleSortData = (origin, params, extra) => { }; /** - * 处理筛选数据 - * @param {[type]} origin [description] - * @return {[type]} [description] + * 处理一般筛选数据 + * @param origin 要处理的筛选数据 filter + * @param params 当前 URL 中已有的参数,处理选中状态使用 + * @returns {{}} */ exports.handleSaleFilterData = (origin, params) => { - - var dest = {}; - - dest.brand = {}; - dest.price = []; - dest.gender = []; - - dest.brand.default = []; - dest.brand.brandsShow = []; - - dest.brand.brandIndex = []; - - dest.brand.showMore = true; - dest.brand.showMulti = true; - - dest.checkedConditions = {}; - dest.checkedConditions.conditions = []; - - - // 品牌索引数据处理 - dest.brand.brandIndex = []; - - dest.brand.brandIndex[0] = { - index: 'all', - name: '全部' - }; - - dest.brand.brandIndex[1] = { - index: '0-9', - name: '0~9' + let dest = { + brand: { + default: [], + brandsShow: [], + brandIndex: [{ + index: 'all', + name: '全部' + }, { + index: '0-9', + name: '0~9' + }], + showMore: true, + showMulti: true + }, + price: [], + gender: [], + checkedConditions: { + conditions: [] + } }; + // 品牌索引数据处理 for (let i = 65; i < 91; i++) { dest.brand.brandIndex.push({ index: String.fromCharCode(i).toLowerCase(), @@ -446,16 +449,26 @@ exports.handleSaleFilterData = (origin, params) => { } // 品牌数据处理 + // 分拆品牌参数 + let brands = _.split(params.brand, ','); + let intBrands = []; + + _.forEach(brands, value => { + intBrands.push(parseInt(value, 10)); + }); if (!_.isEmpty(origin.brand)) { let count = 0; _.forEach(origin.brand, function(value) { - let brand = {}; - - brand.checked = (parseInt(params.brand, 10) === parseInt(value.id, 10)) ? true : false; - brand.href = handleFilterUrl(params, {brand: value.id}); - brand.name = value.brand_name; - brand.key = value.brand_domain; + let brand = { + checked: (typeof _.find(intBrands, o => { + return _.isEqual(o, value.id); + }) !== 'undefined'), + href: handleFilterUrl(params, { brand: value.id }), + name: value.brand_name, + key: value.brand_domain, + id: value.id + }; if (!_.isEmpty(value.brand_alif)) { if (!_.isNaN(parseInt(value.brand_alif, 10))) { @@ -475,16 +488,21 @@ exports.handleSaleFilterData = (origin, params) => { } // 来排排序 - dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, function(o) { + dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, o => { return o.index; }); - // 处理 价格 筛选数据 + // 处理价格筛选数据 + let priceRangechecked = false; + if (!_.isEmpty(origin.priceRange)) { - _.forEach(origin.priceRange, function(value, key) { + _.forEach(origin.priceRange, (value, key) => { + if (params.price === key) { + priceRangechecked = true; + } let price = { - checked: (params.price === key) ? true : false, - href: handleFilterUrl(params, {price: key}), + checked: params.price === key, + href: handleFilterUrl(params, { price: key }), name: value }; @@ -492,19 +510,32 @@ exports.handleSaleFilterData = (origin, params) => { }); } - // 处理频道数据 - for (let i = 0; i < 2; i++) { - dest.gender[i] = {}; + // 处理用户自主填写的价格区间 + if (!priceRangechecked && params.price) { + let customPrice = _.split(params.price, ','); - dest.gender[i].checked = false; + if (customPrice[1] !== '99999') { + dest.customPrice = { + min: customPrice[0], + max: customPrice[1] + }; + dest.checkedConditions.conditions.push({ + name: '¥ ' + customPrice[0] + '-' + customPrice[1], + href: handleFilterUrl(params, { price: '' }) + }); + } } - dest.gender[0].name = 'BOYS'; - dest.gender[0].href = handleFilterUrl(params, {gender: '1,3'}); - dest.gender[0].checked = (params.gender === '1,3') ? true : false; - dest.gender[1].name = 'GIRLS'; - dest.gender[1].href = handleFilterUrl(params, {gender: '2,3'}); - dest.gender[1].checked = (params.gender === '2,3') ? true : false; + // 处理性别数据 + dest.gender = [{ + name: 'BOYS', + href: handleFilterUrl(params, { gender: '1,3' }), + checked: params.gender === '1,3' + }, { + name: 'GIRLS', + href: handleFilterUrl(params, { gender: '2,3' }), + checked: params.gender === '2,3' + }]; // 最新降价数据处理 if (parseInt(params.saleType, 10) === 3) { @@ -515,31 +546,47 @@ exports.handleSaleFilterData = (origin, params) => { handleCheckedData(params, dest.discount, 'p_d')); } - // 奥莱尺码处理 + // 尺码处理 if (!_.isEmpty(origin.size)) { - dest.size = []; - _.forEach(origin.size, (value) => { - let size = { - checked: (params.size === value.size_id) ? true : false, - href: handleFilterUrl(params, {size: value.size_id}), - name: value.size_name - }; - - dest.size.push(size); - }); - } - // 断码区尺码数据处理 - if (!_.isEmpty(origin.size) && params.saleType === '1') { - dest.size = handleSalebreakingYardsSortData(origin.size, params); + if (params.saleType === '1') { + + // 断码区尺码处理 + dest.size = handleSalebreakingYardsSortData(origin.size, params); + } else { + dest.size = []; + if (_.isArray(origin.size)) { + _.forEach(origin.size, value => { + dest.size.push({ + checked: parseInt(params.size, 10) === parseInt(value.size_id, 10), + href: handleFilterUrl(params, { + size: value.size_id + }), + name: value.size_name + }); + }); + } else { + dest.size.push({ + checked: parseInt(params.size, 10) === parseInt(origin.size.size_id, 10), + href: handleFilterUrl(params, { + size: origin.size.size_id + }), + name: origin.size.size_name + }); + } + } - // 最新降价筛选数据处理 dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, handleCheckedData(params, dest.size, 'size')); } // 清除所有选中数据 - dest.checkedConditions.clearUrl = '?'; + let remainParams = {}; + + if (params.id) { + remainParams.id = params.id; + } + dest.checkedConditions.clearUrl = '?' + queryString.stringify(remainParams); // 处理频道筛选数据 dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, @@ -547,7 +594,7 @@ exports.handleSaleFilterData = (origin, params) => { // 处理品牌筛选数据 dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.brand.brandsShow, 'brand')); + handleBrandCheckedData(params, dest.brand.brandsShow)); // 处理价格筛选数据 dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, @@ -562,19 +609,18 @@ exports.handleSaleFilterData = (origin, params) => { * @return {[type]} [description] */ exports.handleBannerData = (origin) => { - var dest = {}; + let dest = {}; dest.list = []; _.forEach(origin, function(value) { if (value.template_name === 'focus') { - _.forEach(value.data, function(subValue) { - let banner = {}; - - banner.bannerHeight = 450; - banner.href = subValue.url; - banner.img = subValue.src; + _.forEach(value.data, subValue => { - dest.list.push(banner); + dest.list.push({ + bannerHeight: 450, + href: subValue.url, + img: subValue.src + }); }); } @@ -584,44 +630,26 @@ exports.handleBannerData = (origin) => { }; /** - * 筛选类链接处理的对外接口 - * @type {[type]} - */ -exports.handleFilterUrl = handleFilterUrl; - -/** - * 处理选中数据的对外接口 - * @type {[type]} - */ -exports.handleCheckedData = handleCheckedData; - -/** * 面包屑导航 TODO * @type {[type]} */ exports.handlePathNavData = (data, params) => { - let pathNav = [ - { - href: '/', // TODO - name: 'OUTLETS', - pathTitle: 'OUTLETS' - } - ]; + let pathNav = [{ + href: '/product/outlets', // TODO + name: 'OUTLET', + pathTitle: 'OUTLET' + }]; _.forEach(data, (sort) => { - if (sort.relation_parameter.sort === params.sort) { - pathNav.push({ - href: helpers.urlFormat('outlets/list', {sort: params.sort}), - name: sort.category_name, - pathTitle: sort.category_name - }); - } - if (!_.isEmpty(sort.sub)) { - _.forEach(sort.sub, (misort) => { - if (misort.relation_parameter.sort === params.sort) { + _.forEach(sort.sub, misort => { + if (misort.relation_parameter.sort === params.sort || misort.category_id === params.misort) { pathNav.push({ - href: helpers.urlFormat('outlets/list', {sort: params.sort}), + href: helpers.urlFormat('/product/outlets/list', { sort: params.sort }), + name: sort.category_name, + pathTitle: sort.category_name + }, { + href: helpers.urlFormat('/product/outlets/list', { sort: params.sort }), name: misort.category_name, pathTitle: misort.category_name }); @@ -631,5 +659,127 @@ exports.handlePathNavData = (data, params) => { }); - return {pathNav: pathNav}; + return { + pathNav: pathNav + }; +}; + +/** + * 分页 + * @param {[type]} total 总页数 + * @param {[type]} params 筛选条件 + * @return {[type]} [description] + */ +exports.handlePagerData = (total, params) => { + let dest = { + prePage: { + url: '' + }, + nextPage: { + url: '' + }, + pages: [] + }; + + let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10); // 当前页 + let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); // 每页商品数 + let totalPage = parseInt(total / perPageCount, 10) + 1; // 总页数 + + if (currentPage === 1) { + // 当前页为 1,一定没有上一页 + delete dest.prePage; + } else { + dest.prePage.url = handleFilterUrl(params, { page: currentPage - 1 }); + } + + if (currentPage === totalPage) { + + // 当前页为最后一页,一定没有下一页 + delete dest.nextPage; + } else { + dest.nextPage.url = handleFilterUrl(params, { page: currentPage + 1 }); + } + + // 页码临时数据 + let pages = []; + + if (currentPage > 2 && currentPage <= totalPage - 2) { + for (let i = currentPage - 2; i <= ((currentPage + 2) > totalPage ? totalPage : (currentPage + 2)); i++) { + pages.push({ + url: handleFilterUrl(params, { page: i }), + num: i, + cur: currentPage === i + }); + } + + // 处理页码小于等于 2 的情况 + } else if (currentPage <= 2) { + for (let i = 1; i <= (totalPage < 5 ? totalPage : 5); i++) { + pages.push({ + url: handleFilterUrl(params, { page: i }), + num: i, + cur: currentPage === i + }); + } + } else if (currentPage > totalPage - 2) { + for (let i = totalPage; i >= totalPage - 4; i--) { + pages.push({ + url: handleFilterUrl(params, { page: i }), + num: i, + cur: currentPage === i + }); + } + pages = _.sortBy(pages, ['num']); + } + + let prevPages = []; + let nextPages = []; + + if (_.size(pages) === 5) { + if (currentPage > 4) { + prevPages.push({ + url: handleFilterUrl(params, { page: 1 }), + num: 1 + }); + prevPages.push({ + num: '...' + }); + } + if (currentPage < totalPage - 2) { + nextPages.push({ + num: '...' + }); + nextPages.push({ + url: handleFilterUrl(params, { page: totalPage }), + num: totalPage + }); + } + } + + // 商品开始结束数 + dest.tip = { + total: total, + start: (currentPage ? currentPage - 1 : 0) * perPageCount + 1 + }; + + let endPageNum = (totalPage === currentPage) ? + total : parseInt(dest.tip.start, 10) + perPageCount - 1; + + dest.tip.end = (total < perPageCount) ? total : endPageNum; + dest.pages = _.concat(prevPages, pages, nextPages); + + return dest; + }; + +/** + * 筛选类链接处理的对外接口 + * @type {[type]} + */ +exports.handleFilterUrl = handleFilterUrl; + +/** + * 处理选中数据的对外接口 + * @type {[type]} + */ +exports.handleCheckedData = handleCheckedData; diff --git a/apps/product/models/sale-api.js b/apps/product/models/sale-api.js index da7bad3..1e0792d 100644 --- a/apps/product/models/sale-api.js +++ b/apps/product/models/sale-api.js @@ -6,12 +6,9 @@ */ 'use strict'; -const library = '../../../library'; -const API = require(`${library}/api`).API; -const ServiceAPI = require(`${library}/api`).ServiceAPI; -const api = new API(); -const serviceAPI = new ServiceAPI(); -const sign = require(`${library}/sign`); + +const serviceAPI = global.yoho.ServiceAPI; +const api = global.yoho.API; const _ = require('lodash'); const yhChannel = { @@ -37,35 +34,17 @@ exports.getSaleGoodsList = (params) => { let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel; - let tempParams = { + let finalParams = { method: 'app.search.sales', - p_d: _.isEmpty(params.p_d) ? null : params.p_d, - limit: _.isEmpty(params.limit) ? '60' : params.limit, - order: _.isEmpty(params.order) ? 's_t_desc' : params.order, - page: _.isEmpty(params.page) ? 1 : params.page, - gender: _.isEmpty(params.gender) ? null : params.gender, - sort: _.isEmpty(params.sort) ? null : params.sort, - brand: _.isEmpty(params.brand) ? null : params.brand, - color: _.isEmpty(params.color) ? null : params.color, - size: _.isEmpty(params.size) ? null : params.size, - saleType: _.isEmpty(params.saleType) ? null : params.saleType, - breakSize: _.isEmpty(params.breakSize) ? null : params.breakSize, - breakSort: _.isEmpty(params.breakSort) ? null : params.breakSort, - productPool: _.isEmpty(params.productPool) ? null : params.productPool, - price: _.isEmpty(params.price) ? null : params.price, + limit: 60, + order: 's_t_desc', productSize: '384x511', yh_channel: yhChannel[tempChannel].channel }; - let finalParams = {}; - - _.forEach(tempParams, function(value, key) { - if (!_.isEmpty(value)) { - finalParams[key] = value; - } - }); + Object.assign(finalParams, params); - return api.get('', sign.apiSign(finalParams)); + return api.get('', finalParams); }; /** @@ -75,10 +54,10 @@ exports.getSaleGoodsList = (params) => { exports.getSalebreakingYardsSortList = (params) => { let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel; - return api.get('', sign.apiSign({ + return api.get('', { method: 'app.sale.getBreakingSort', yh_channel: yhChannel[tempChannel].channel - })); + }); }; /** @@ -88,13 +67,13 @@ exports.getSalebreakingYardsSortList = (params) => { exports.getSaleActivityList = (params, channel) => { let tempChannel = _.isEmpty(channel) ? 'boys' : channel; - return api.get('', sign.apiSign({ + return api.get('', { id: params.id || null, method: 'app.activity.get', sort: '2', plateform: '1', yh_channel: yhChannel[tempChannel].channel - })); + }); }; /** @@ -102,9 +81,9 @@ exports.getSaleActivityList = (params, channel) => { * @return {[type]} [description] */ exports.getSaleBannerList = (cCode) => { - return serviceAPI.get('operations/api/v5/resource/get', sign.apiSign({ + return serviceAPI.get('operations/api/v5/resource/get', { content_code: cCode - })); + }); }; /** @@ -112,9 +91,9 @@ exports.getSaleBannerList = (cCode) => { * @return {[type]} [description] */ exports.getLeftContentList = () => { - return api.get('', sign.apiSign({ + return api.get('', { method: 'app.sort.get' - })); + }); }; /** @@ -129,8 +108,8 @@ exports.getUserProfile = (uid) => { data: {} }); } - return api.get('', sign.apiSign({ + return api.get('', { method: 'app.passport.profile', uid: uid - }), true); + }, true); }; diff --git a/apps/product/models/sale-handler.js b/apps/product/models/sale-handler.js index 750d4a4..4cf6c4b 100644 --- a/apps/product/models/sale-handler.js +++ b/apps/product/models/sale-handler.js @@ -2,15 +2,12 @@ * @Author: Targaryen * @Date: 2016-05-25 18:16:59 * @Last Modified by: Targaryen - * @Last Modified time: 2016-06-08 19:35:20 + * @Last Modified time: 2016-06-20 21:31:11 */ 'use strict'; -const library = '../../../library'; -const helpers = require(`${library}/helpers`); +const helpers = global.yoho.helpers; const _ = require('lodash'); - -// const aMinute = 60000; const anHour = 3600000; const aDay = anHour * 24; const timeFormat = { @@ -50,34 +47,6 @@ const processTime = (time) => { }; /** - * 折扣专场专题详情过期时间处理 - * @param {[string]} time - * @return {[boject]} - */ -// const processTimes = (time) => { -// let data = {}; -// let type = ''; -// -// if (time > aDay) { -// type = 'dhms'; -// } else { -// if (time > anHour) { -// type = 'hms'; -// } else { -// if (time > aMinute) { -// type = 'ms'; -// } else { -// type = 's'; -// } -// } -// } -// -// data.time = helpers.dateDiffFormat(timeFormat[type], time, 'ms'); -// -// return data.time; -// }; - -/** * 折扣文本切割 * @param text 要切割的文本 * @returns {{discount: *, discountText: *}} @@ -99,501 +68,31 @@ const discountSplit = (text) => { }; /** - * 处理用于筛选的 URL , 拼接 URL 参数 - * @param originParam 当前 URL 中的参数 - * @param newParam 要拼接的 参数 - * @returns {string} - */ -const handleFilterUrl = (originParam, newParam) => { - let dest = '?'; - let tempOriginParam = {}; - - // 创建 originParam、newParam 键的数组 - let originParamArray = _.keys(originParam); - let newParamArray = _.keys(newParam); - - // 判断参数是否已经存在 - let isExist = !_.isEmpty(_.find(originParamArray, function(o) { - return o === newParamArray[0]; - })); - - if (isExist) { - tempOriginParam = Object.assign(tempOriginParam, originParam); - - _.forEach(newParam, function(value, key) { - tempOriginParam[key] = value; - }); - } else { - tempOriginParam = Object.assign(tempOriginParam, originParam, newParam); - } - - _.forEach(tempOriginParam, function(value, key) { - dest = dest + key + '=' + value + '&'; - }); - - return _.trim(dest, '&'); -}; - -/** - * 处理最新降价折扣信息 - * @param params 当前 URL 的参数 - * @returns {Array|*[]} - */ -const handleSaleNewSaleSortData = (params) => { - var dest; - - dest = [{ - name: '1~3折', - href: handleFilterUrl(params, {p_d: '0.1,0.3'}), - checked: (params.p_d === '0.1,0.3') ? true : false - }, { - name: '4~6折', - href: handleFilterUrl(params, {p_d: '0.4,0.6'}), - checked: (params.p_d === '0.4,0.6') ? true : false - }, { - name: '7折以上', - href: handleFilterUrl(params, {p_d: '0.7,1'}), - checked: (params.p_d === '0.7,1') ? true : false - }]; - - return dest; -}; - -/** - * 处理选中数据 - * @param params 当前 URL 中已有的参数 - * @param origin 要处理的数据 - * @param param 此组数据的键名 - * @returns {Array} - */ -const handleCheckedData = (params, origin, param) => { - var dest = []; - - if (!_.isEmpty(origin)) { - _.forEach(origin, (value) => { - if (value.checked) { - let checked = {}; - - checked.name = value.name; - - let tempParam = {}; - - tempParam[param] = ''; - checked.href = handleFilterUrl(params, tempParam); - - dest.push(checked); - } - }); - } - - return dest; -}; - -/** - * 处理断码区尺码筛选数据 - * @param origin 尺码原始数据 - * @param params 当前 URL 中已有的参数 - * @returns {Array} - */ -const handleSalebreakingYardsSortData = (origin, params) => { - var dest = []; - - if (!_.isEmpty(params.sort)) { - - // 是否有分类筛选参数,如果有 - _.forEach(params.sort.split(','), function(sortParam) { - _.forEach(origin, function(value) { - - // 判断是否在这组数据里面 - if (!_.isEmpty(_.find(value.sort_id.split(','), o => { - return o === sortParam; - }))) { - - // 如果在某组数据里面,组合数据退出循环 - _.forEach(value.sub, function(subValue) { - let size = {}; - - size.checked = - (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false; - size.href = handleFilterUrl(params, {size: subValue.size_id}); - size.name = subValue.size_name; - - dest.push(size); - }); - return false; - } - }); - }); - } else { // 如果没有筛选参数,返回所有分类 - _.forEach(origin, function(value) { - _.forEach(value.sub, function(subValue) { - let size = {}; - - size.checked = (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false; - size.href = handleFilterUrl(params, {size: subValue.size_id}); - size.name = subValue.size_name; - - dest.push(size); - }); - }); - } - - return _.uniqWith(dest, _.isEqual); -}; - -/** - * 处理一般筛选数据 - * @param origin 要处理的筛选数据 filter - * @param params 当前 URL 中已有的参数,处理选中状态使用 - * @returns {{}} - */ -exports.handleSaleFilterData = (origin, params) => { - - var dest = {}; - - dest.brand = {}; - dest.price = []; - dest.gender = []; - - dest.brand.default = []; - dest.brand.brandsShow = []; - - dest.brand.brandIndex = []; - - dest.brand.showMore = true; - dest.brand.showMulti = true; - - dest.checkedConditions = {}; - dest.checkedConditions.conditions = []; - - - // 品牌索引数据处理 - dest.brand.brandIndex = []; - - dest.brand.brandIndex[0] = { - index: 'all', - name: '全部' - }; - - dest.brand.brandIndex[1] = { - index: '0-9', - name: '0~9' - }; - - for (let i = 65; i < 91; i++) { - dest.brand.brandIndex.push({ - index: String.fromCharCode(i).toLowerCase(), - name: String.fromCharCode(i) - }); - } - - // 品牌数据处理 - if (!_.isEmpty(origin.brand)) { - let count = 0; - - _.forEach(origin.brand, function(value) { - let brand = {}; - - brand.checked = (parseInt(params.brand, 10) === parseInt(value.id, 10)) ? true : false; - brand.href = handleFilterUrl(params, {brand: value.id}); - brand.name = value.brand_name; - brand.key = value.brand_domain; - brand.id = value.id; - - if (!_.isEmpty(value.brand_alif)) { - if (!_.isNaN(parseInt(value.brand_alif, 10))) { - brand.index = '0-9'; - } else { - brand.index = value.brand_alif.toLowerCase(); - } - } - - if (count < 10) { - dest.brand.default.push(brand); - } - - dest.brand.brandsShow.push(brand); - count++; - }); - } - - // 来排排序 - dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, function(o) { - return o.index; - }); - - // 处理 价格 筛选数据 - if (!_.isEmpty(origin.priceRange)) { - _.forEach(origin.priceRange, function(value, key) { - let price = { - checked: (params.price === key) ? true : false, - href: handleFilterUrl(params, {price: key}), - name: value - }; - - dest.price.push(price); - }); - } - - // 处理频道数据 - for (let i = 0; i < 2; i++) { - dest.gender[i] = {}; - - dest.gender[i].checked = false; - } - - dest.gender[0].name = 'BOYS'; - dest.gender[0].href = handleFilterUrl(params, {gender: '1,3'}); - dest.gender[0].checked = (params.gender === '1,3') ? true : false; - dest.gender[1].name = 'GIRLS'; - dest.gender[1].href = handleFilterUrl(params, {gender: '2,3'}); - dest.gender[1].checked = (params.gender === '2,3') ? true : false; - - // 最新降价数据处理 - if (parseInt(params.saleType, 10) === 3) { - dest.discount = handleSaleNewSaleSortData(params); - - // 最新降价筛选数据处理 - dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.discount, 'p_d')); - } - - // 断码区尺码数据处理 - if (!_.isEmpty(origin.size) && params.saleType === '1') { - dest.size = handleSalebreakingYardsSortData(origin.size, params); - - // 最新降价筛选数据处理 - dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.size, 'size')); - } - - // 清除所有选中数据 - dest.checkedConditions.clearUrl = '?'; - - // 处理频道筛选数据 - dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.gender, 'gender')); - - // 处理品牌筛选数据 - dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.brand.brandsShow, 'brand')); - - // 处理价格筛选数据 - dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions, - handleCheckedData(params, dest.price, 'price')); - - return dest; -}; - -/** - * 处理 opts 排序数据 - * @param params - * @param total - * @param extra 什么都可以传进来,多个参数传Object - * @returns {{}} - */ -exports.handleSaleOptsData = (params, total, extra) => { - var dest = {}; - - dest.sortType = []; - - // 用来标记是否是折扣专场,折扣专场只需要前三个排序参数 - let count = (extra === 'discont') ? 3 : 4; - - for (let i = 0; i < count; i++) { - let opt = {}; - - switch (i) { - case 0: - opt.href = handleFilterUrl(params, {order: 's_t_desc'}); - if (extra === 'discont') { // 如果是折扣专场 - opt.name = '全部'; - if (_.isEmpty(params.order) || params.order === 's_t_desc') { - opt.active = true; - } else { - opt.active = false; - } - } else { - opt.name = '最新'; - opt.hasSortOrient = true; - opt.active = true; - opt.desc = true; - } - break; - case 1: - if (params.order !== 's_p_desc' && params.order !== 's_p_asc') { - opt.href = handleFilterUrl(params, {order: 's_p_desc'}); - opt.hasSortOrient = true; - } else { - opt.hasSortOrient = true; - opt.active = true; - if (params.order === 's_p_desc') { - opt.href = handleFilterUrl(params, {order: 's_p_asc'}); - opt.desc = false; - } else { - opt.href = handleFilterUrl(params, {order: 's_p_desc'}); - opt.desc = true; - } - } - - opt.name = '价格'; - break; - case 2: - if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') { - opt.href = handleFilterUrl(params, {order: 'p_d_desc'}); - opt.hasSortOrient = true; - } else { - opt.hasSortOrient = true; - opt.active = true; - if (params.order === 'p_d_desc') { - opt.href = handleFilterUrl(params, {order: 'p_d_asc'}); - opt.desc = false; - } else { - opt.href = handleFilterUrl(params, {order: 'p_d_desc'}); - opt.desc = true; - } - } - - opt.name = '折扣'; - break; - case 3: - if (params.order !== 's_n_desc' && params.order !== 's_n_asc') { - opt.href = handleFilterUrl(params, {order: 's_n_desc'}); - opt.hasSortOrient = true; - } else { - opt.hasSortOrient = true; - opt.active = true; - if (params.order === 's_n_desc') { - opt.href = handleFilterUrl(params, {order: 's_n_asc'}); - opt.desc = false; - } else { - opt.href = handleFilterUrl(params, {order: 's_n_desc'}); - opt.desc = true; - } - } - - opt.name = '销量'; - break; - default: - break; - } - - dest.sortType.push(opt); - } - - // 上下翻页数据处理 - dest.pageCounts = [{ - href: handleFilterUrl(params, {limit: 200}), - count: 200 - }, { - href: handleFilterUrl(params, {limit: 100}), - count: 100 - }, { - href: handleFilterUrl(params, {limit: 60}), - count: 60 - }]; - - dest.curPage = _.isEmpty(params.page) ? 1 : params.page; // 当前页码数 - - // 上一页下一页 - let preHref = (!_.isEmpty(params.page) && params.page > 1) ? params.page - 1 : 1; - let nextHref = (!_.isEmpty(params.page)) ? params.page + 1 : 2; - - dest.preHref = handleFilterUrl(params, {page: preHref}); - dest.nextHref = handleFilterUrl(params, {page: nextHref}); - - // 每页商品数量 - dest.countPerPage = _.isEmpty(params.limit) ? 60 : params.limit; - - // 全部页码数量 - dest.pageCount = parseInt(total / (_.isEmpty(params.limit) ? 60 : params.limit), 10) + 1; - - // 每页多少商品 - let paramsLimit = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); - - // 商品开始结束数 - dest.start = (!_.isEmpty(params.page) ? (params.page - 1) : 0) * paramsLimit + 1; - dest.end = parseInt(dest.start, 10) + paramsLimit - 1; - - return dest; -}; - -/** - * 处理页面左侧分类筛选数据 - * @param origin 分类原始数据,一般是接口返回数据中的 group_sort 字段 - * @param params 当前 URL 中已有的参数 - * @param extra 可以任意传值用来处理特殊情况 - * @returns {{}} - */ -exports.handleSaleSortData = (origin, params, extra) => { - var leftContent = {}; - - leftContent.allSort = {}; - leftContent.allSort.list = []; - - let perAllSort = { - name: '全部品类', - href: handleFilterUrl(params), - all: true, - num: extra - }; - - leftContent.allSort.list.push(perAllSort); - - - _.forEach(origin, function(value) { - - let category = {}; - - category.name = value.category_name; - category.num = value.node_count; - category.childList = []; - category.href = handleFilterUrl(params, {sort: value.relation_parameter.sort}); - category.active = false; - _.forEach(value.sub, function(subValue) { - category.childList.push({ - name: subValue.category_name, - num: subValue.node_count, - href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}), - childActive: (params.sort === subValue.relation_parameter.sort) ? true : false - }); - if (params.sort === subValue.relation_parameter.sort) { - category.active = true; - } - - }); - - leftContent.allSort.list.push(category); - }); - - return leftContent; -}; - -/** * 处理折扣专区活动数据 * @param origin 原始数据 * @param channel 频道 boys girls kids lifestyle * @returns {{}} */ exports.handleSaleActivityData = (origin, channel) => { - var dest = {}; + let dest = { + big: [], + normal: [] + }; - dest.big = []; - dest.normal = []; _.forEach(origin, function(value, key) { - let activity = {}; - - activity.link = - helpers.urlFormat('/sale/discount/detail', {id: value.id, channel: channel}); - activity.img = value.cover_url; - activity.time = processTime(value.left_time); - activity.brand = value.logo_url; - activity.title = value.title; + let activity = { + link: helpers.urlFormat('/product/sale/discount/detail', {id: value.id, channel: channel}), + img: value.web_cover_url, + time: processTime(parseInt(value.left_time, 10) * 1000), + brand: value.logo_url, + title: value.title + }; + activity = Object.assign(activity, discountSplit(value.promotion_name)); if (key < 3) { dest.big.push(activity); - } else if (key < 15) { + } else if (key < 27) { dest.normal.push(activity); } }); @@ -606,13 +105,12 @@ exports.handleSaleActivityData = (origin, channel) => { * @returns {{}} */ exports.handleDiscountTitleData = (origin) => { - var dest = {}; - - dest.title = origin.title; - dest.up = true; + let dest = { + title: origin.title, + up: true, + time: parseInt(origin.left_time, 10) * 1000 + }; - // dest.time = processTimes(origin.left_time); - dest.time = origin.left_time; Object.assign(dest, discountSplit(origin.promotion_name)); return dest; @@ -624,22 +122,22 @@ exports.handleDiscountTitleData = (origin) => { * @returns {{}} */ exports.handleSaleBannerData = (origin) => { - var dest = {}; + let dest = { + list: [] + }; - dest.list = []; _.forEach(origin, function(value) { if (value.template_name === 'focus') { _.forEach(value.data, function(subValue) { - let banner = {}; - - banner.bannerHeight = 450; - banner.href = subValue.url; - banner.img = subValue.src; + let banner = { + bannerHeight: 450, + href: subValue.url, + img: subValue.src + }; dest.list.push(banner); }); } - }); return dest; @@ -651,19 +149,19 @@ exports.handleSaleBannerData = (origin) => { * @returns {Array} */ exports.handleSaleBannerSmallData = (origin) => { - var dest = []; + let dest = []; let count = 0; _.forEach(origin, function(value) { - if (value.template_name === 'small_pic') { + if (value.template_name === 'threePicture') { _.forEach(value.data, function(picList) { if (count++ < 3) { - let smallPic = {}; - - smallPic.link = picList.url; - smallPic.icon = picList.src; - smallPic.title = picList.title; - smallPic.desc = picList.alt; + let smallPic = { + link: picList.url, + icon: picList.src, + title: picList.title, + desc: picList.alt + }; dest.push(smallPic); } @@ -680,17 +178,19 @@ exports.handleSaleBannerSmallData = (origin) => { * @param origin 要处理的原始数据 * @param saleType 获取数据分属哪个类目:断码区,会员专享,折扣专场等 * @param channel 频道 + * @param breakingSizeSort 为断码去额外拼接参数,接口比较垃圾嘛,没办法 * @returns {{}} */ -exports.handleSaleCategoryData = (origin, saleType, channel) => { +exports.handleSaleCategoryData = (origin, saleType, channel, breakingSizeSort) => { - let dest = {}; - - // navItem 处理 - dest.navItem = []; - dest.navItem[0] = {}; - dest.navItem[0].title = '今日推荐'; - dest.navItem[0].vip = true; + let dest = { + navItem: [ + { + title: '今日推荐', + vip: true + } + ] + }; let urlLocation = {}; @@ -698,37 +198,42 @@ exports.handleSaleCategoryData = (origin, saleType, channel) => { switch (saleType) { case '1': dest.title = '断码区'; - urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel; - urlLocation.limit = 14; - dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`; + urlLocation = { + url: '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel + + '&breakSize=' + breakingSizeSort.breakSize + '&breakSort=' + breakingSizeSort.breakSort, + limit: 14 + }; break; case '2': dest.title = 'VIP会员专享'; - urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel; - urlLocation.limit = 11; - dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`; + urlLocation = { + url: '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel, + limit: 11 + }; break; case '3': dest.title = '最新降价'; - urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel; - urlLocation.limit = 14; - dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`; + urlLocation = { + url: '?saleType=0&order=s_t_desc&channel=' + channel, + limit: 14 + }; break; default: break; } + dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`; let count = 0; _.forEach(origin, (value) => { if (count++ < 4) { - let nav = {}; - - nav.urlLocation = urlLocation.url + '&sort=' + value.relation_parameter.sort + - `&limit=${(urlLocation.limit + 1)}`; - nav.title = value.category_name; - nav.newDiscount = true; + let nav = { + urlLocation: urlLocation.url + '&sort=' + value.relation_parameter.sort + + `&limit=${(urlLocation.limit + 1)}`, + title: value.category_name, + newDiscount: true + }; dest.navItem.push(nav); } @@ -738,81 +243,22 @@ exports.handleSaleCategoryData = (origin, saleType, channel) => { }; /** - * 处理分页数据 - * @param total 商品总数目 - * @param params 当前 URL 中已有的参数 - * @returns {string} + * 处理断码区尺码数据,输出整合后的筛选条件 + * @param origin */ -exports.handleSalePagerData = (total, params) => { - - - // 当前页 - let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10); - let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); - let totalPage = parseInt(total / perPageCount, 10) + 1; - - let dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage)}) + - '" class="cur">' + currentPage + '</a>'; - - // 先处理大多数情况 - if ((currentPage > 2) && (currentPage < (parseInt(total, 10) / perPageCount) - 1)) { - - for (let i = 1; i < 3; i++) { - dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage - i)}) + '">' + - (currentPage - i) + '</a> ' + dest + ' <a href ="' + - handleFilterUrl(params, {page: (currentPage + i)}) + - '">' + (currentPage + i) + '</a>'; - } - - // 处理页码小于2的情况 - } else if (currentPage <= 2) { - for (let i = currentPage - 1; i > 0; i--) { - dest = '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>' + dest; - } - - for (let i = currentPage + 1; i < (totalPage < 6 ? totalPage : 6); i++) { - dest += '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>'; - } - - // 处理页码大于最大页-2的情况 - } else if (currentPage > totalPage - 2) { - for (let i = currentPage + 1; i < totalPage + 1; i++) { - dest += '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>'; - } - - for (let i = currentPage - 1; i > (currentPage - 5 > 1 ? currentPage - 5 : 1); i--) { - dest = '<a href ="' + handleFilterUrl(params, {page: i}) + - '">' + i + '</a>' + dest; - } - } - - // 处理后省略号的情况 - if ((totalPage > 5) && (currentPage < (totalPage - 2))) { - - dest += ' ... <a href ="' + handleFilterUrl(params, {page: totalPage}) + - '">' + totalPage + '</a>'; - - } - - // 处理前省略号的情况 - if (currentPage > 3) { - dest = '<a href ="' + handleFilterUrl(params, {page: 1}) + - '">1</a> ... ' + dest; - } +exports.handleSaleBreakingSizeData = (origin) => { + let dest = { + breakSize: '', + breakSort: '' + }; - // 处理上一页下一页 - if (currentPage !== 1) { - dest = '<a href="' + handleFilterUrl(params, {page: currentPage - 1}) + - '"><span class="iconfont">上一页</span></a>' + dest; - } + _.forEach(origin, value => { + dest.breakSort += value.sort_id; - if (currentPage !== totalPage) { - dest += '<a href="' + handleFilterUrl(params, {page: currentPage + 1}) + - '"><span class="iconfont">下一页</span></a>'; - } + _.forEach(value.sub, subValue => { + dest.breakSize += subValue.size_id + ','; + }); + }); return dest; }; diff --git a/apps/product/models/sale.js b/apps/product/models/sale.js index 60f0d93..fccd09a 100644 --- a/apps/product/models/sale.js +++ b/apps/product/models/sale.js @@ -2,15 +2,16 @@ * @Author: Targaryen * @Date: 2016-05-19 10:20:08 * @Last Modified by: Targaryen - * @Last Modified time: 2016-06-08 10:02:13 + * @Last Modified time: 2016-06-20 21:13:00 */ 'use strict'; -const library = '../../../library'; const utils = '../../../utils'; -const API = require(`${library}/api`).API; -const api = new API(); +const logger = global.yoho.logger; +const camelCase = global.yoho.camelCase; +const api = global.yoho.API; const saleApi = require('./sale-api'); +const publicHandler = require('./public-handler'); const saleHandler = require('./sale-handler'); const productProcess = require(`${utils}/product-process`); const _ = require('lodash'); @@ -61,38 +62,47 @@ exports.getSaleGoodsData = (params) => { if (result[0].code === 200) { finalResult.goods = productProcess.processProductList(result[0].data.product_list); + _.forEach(finalResult.goods, (value, key) => { + delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签 + delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签 + delete finalResult.goods[key].discount; // 屏蔽折扣信息 + }); + } else { + logger.error('search sale api code no 200'); } // 处理 VIP 商品数据 if (result[1].code === 200) { + let userInfo = result[1].data.vip_info ? camelCase(result[1].data.vip_info) : {}; + + if (_.isEmpty(userInfo)) { + logger.info('no user info'); + } + if (params.saleType === '2') { _.forEach(finalResult.goods, (value, key) => { - switch (result[1].curLevel) { + switch (userInfo.curLevel) { case '1': - finalResult.goods[key].vipPrice = value.vip1Price; + finalResult.goods[key].salePrice = value.vip1_price; finalResult.goods[key].vip1 = true; break; case '2': - finalResult.goods[key].vipPrice = value.vip2Price; + finalResult.goods[key].salePrice = value.vip2_price; finalResult.goods[key].vip2 = true; break; case '3': - finalResult.goods[key].vipPrice = value.vip3Price; + finalResult.goods[key].salePrice = value.vip3_price; finalResult.goods[key].vip3 = true; break; default: finalResult.goods[key].vip = true; + delete finalResult.goods[key].salesPrice; break; } }); } - if (params.saleType === '3') { - _.forEach(finalResult.goods, (value, key) => { - finalResult.goods[key].tags.isNew = false; // 屏蔽 new 标签 - }); - } } // 需要判断是否为今日推荐,今日推荐需要添加最后的全部商品图片 @@ -104,20 +114,20 @@ exports.getSaleGoodsData = (params) => { case '1': finalResult.goods.push({ thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/027f2ebe0f35a0f6dc29ffb11d40d58c68.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90', - url: '/sale/breakingYards?channel=' + params.channel + url: '/product/sale/breakingYards?channel=' + params.channel }); break; case '2': finalResult.goods.push({ thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/02c513694df76e78449781997d1ae2a67e.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90', - url: '/sale/vip?channel=' + params.channel, + url: '/product/sale/vip?channel=' + params.channel, vipPicture: true // 为了处理首页最后一张图片 }); break; - case '3': + case '0': finalResult.goods.push({ thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/02161115728d763520bd4695d2530b2132.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90', - url: '/sale/newSale?channel=' + params.channel + url: '/product/sale/newSale?channel=' + params.channel }); break; default: @@ -140,18 +150,26 @@ exports.getSaleIndexData = (channel) => { saleApi.getSaleActivityList('', channel), saleApi.getSaleBannerList(contentCode[channel].sale), saleApi.getSaleGoodsList({channel: channel, saleType: '2', limit: '1'}), // 会员专享分类 - saleApi.getSaleGoodsList({channel: channel, saleType: '1', limit: '1'}), // 断码区分类 - saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'}) // 最新降价分类 + saleApi.getSalebreakingYardsSortList({channel: channel}), // 断码区尺码数据 + saleApi.getSaleGoodsList({channel: channel, limit: '1'}) // 最新降价分类 ]).then(result => { var finalResult = result[0]; + // 折扣专场活动处理 if (result[1].code === 200) { - finalResult.brandSale = saleHandler.handleSaleActivityData(result[1].data, channel); + if (result[1].data.length > 0) { + finalResult.brandSale = saleHandler.handleSaleActivityData(result[1].data, channel); + } + } else { + logger.error('discount activities api code no 200'); } - if (result[2].code === 200) { + // 资源位数据处理 + if (result[2].code === 200 && !_.isEmpty(result[2].data)) { finalResult.topBanner = saleHandler.handleSaleBannerData(result[2].data); finalResult.activityEnter = saleHandler.handleSaleBannerSmallData(result[2].data); + } else { + logger.error('content code api code no 200 or no data'); } // 分类处理 @@ -161,24 +179,49 @@ exports.getSaleIndexData = (channel) => { if (result[3].code === 200) { finalResult.saleCategory.push( - saleHandler.handleSaleCategoryData(result[3].data.filter.group_sort, '2', channel) + Object.assign( + saleHandler.handleSaleCategoryData(result[3].data.filter.group_sort, '2', channel), + {forVip: true} + ) ); + } else { + logger.error('index vip category api code no 200'); } // 断码区分类处理 if (result[4].code === 200) { + let breakingSizeSort = saleHandler.handleSaleBreakingSizeData(result[4].data); + + return api.all([saleApi.getSaleGoodsList({ + channel: channel, + saleType: '1', + limit: '1' + })]).then(subResult => { + if (subResult[0].code === 200) { + finalResult.saleCategory.push( + saleHandler.handleSaleCategoryData( + subResult[0].data.filter.group_sort, + '1', + channel, + breakingSizeSort + ) + ); + } + + // 最新降价分类处理 + if (result[5].code === 200) { + + finalResult.saleCategory.push( + saleHandler.handleSaleCategoryData(result[5].data.filter.group_sort, '3', channel) + ); + } else { + logger.error('newSale category api code no 200'); + } + return finalResult; + }); - finalResult.saleCategory.push( - saleHandler.handleSaleCategoryData(result[4].data.filter.group_sort, '1', channel) - ); - } - - // 最新降价分类处理 - if (result[5].code === 200) { - - finalResult.saleCategory.push( - saleHandler.handleSaleCategoryData(result[5].data.filter.group_sort, '3', channel) - ); + } else { + logger.error('breakYards category api code no 200'); } return finalResult; }); @@ -192,85 +235,118 @@ exports.getSaleOthersData = (params, channel) => { let promiseObject; - // saleType: 1表示断码区,2表示会员专区,3 折扣专区,4表示奥莱 - if (!_.isEmpty(params) && params.saleType === '2') { - promiseObject = [ - headerModel.requestHeaderData(channel), - saleApi.getSaleGoodsList(params), - saleApi.getSaleBannerList(contentCode[channel].vip), - saleApi.getSaleGoodsList({saleType: '2', limit: '1', channel: channel}), - saleApi.getUserProfile(params.uid) - ]; - } else { - promiseObject = [ - headerModel.requestHeaderData(channel), - saleApi.getSaleGoodsList(params), - saleApi.getSaleBannerList(contentCode[channel].vip), - saleApi.getSaleGoodsList({saleType: '3', limit: '1', channel: channel}) - ]; + // saleType: 1表示断码区,2表示会员专区,3 折扣专区,4表示奥莱,0最新降价 + if (!_.isEmpty(params)) { + if (params.saleType === '2') { + promiseObject = [ + headerModel.requestHeaderData(channel), + saleApi.getSaleGoodsList(params), + saleApi.getSaleBannerList(contentCode[channel].vip), + saleApi.getSaleGoodsList({saleType: '2', limit: '1', channel: channel}), + saleApi.getUserProfile(params.uid) + ]; + } else { + promiseObject = [ + headerModel.requestHeaderData(channel), + saleApi.getSaleGoodsList(params), + saleApi.getSaleBannerList(contentCode[channel].vip), + saleApi.getSaleGoodsList({limit: '1', channel: channel}) + ]; + } } - return api.all(promiseObject).then(result => { let finalResult = result[0]; // 获取商品数据 if (result[1].code === 200) { finalResult.goods = productProcess.processProductList(result[1].data.product_list); + + if (!_.isEmpty(result[1].data.filter)) { + // 顶部筛选条件 + finalResult.filters = publicHandler.handleSaleFilterData(result[1].data.filter, params); + } else { + logger.error('data filter is empty'); + } + + // 处理排序数据 + finalResult.opts = publicHandler.handleSaleOptsData(params, result[1].data.total); + finalResult.totalCount = result[1].data.total; + finalResult.footPager = publicHandler.handlePagerData(result[1].data.total, params); + + // 处理所有商品标题数据 + finalResult.saleTitle = { + name: '所有商品', + count: result[1].data.total + }; + + _.forEach(finalResult.goods, (value, key) => { + delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签 + delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签 + delete finalResult.goods[key].discount; // 屏蔽折扣信息 + }); + } else { + logger.error('goods list api code no 200'); } // 获取焦点图数据 if (result[2].code === 200) { finalResult.topBanner = saleHandler.handleSaleBannerData(result[2].data); + if (params.saleType !== '2') { + _.forEach(finalResult.topBanner.list, (value, key) => { + delete finalResult.topBanner.list[key].href; + }); + } + } else { + logger.error('content code api code no 200'); } // 获取分类筛选数据 if (result[3].code === 200) { // 获取左侧类目数据 - finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params); - - // 顶部筛选条件 - finalResult.filters = saleHandler.handleSaleFilterData(result[3].data.filter, params); - - // 处理排序数据 - finalResult.opts = saleHandler.handleSaleOptsData(params, result[3].data.total); - finalResult.totalCount = result[3].data.total; - finalResult.pager = saleHandler.handleSalePagerData(result[3].data.total, params); - - // 处理所有商品标题数据 - finalResult.saleTitle = {}; + finalResult.leftContent = publicHandler.handleSaleSortData(result[3].data.filter.group_sort, params); - finalResult.saleTitle.name = '所有商品'; - finalResult.saleTitle.count = finalResult.totalCount; + } else { + logger.error('left content category api code no 200'); } if (!_.isEmpty(result[4])) { // 处理 VIP 商品数据 if (result[4].code === 200 && parseInt(params.saleType, 10) === 2) { + let userInfo = result[4].data.vip_info ? camelCase(result[4].data.vip_info) : {}; + + if (_.isEmpty(userInfo)) { + logger.info('no user info'); + } + _.forEach(finalResult.goods, (value, key) => { - switch (result[4].curLevel) { + switch (userInfo.curLevel) { case '1': - finalResult.goods[key].vipPrice = value.vip1_price; + finalResult.goods[key].salePrice = value.vip1_price; finalResult.goods[key].vip1 = true; break; case '2': - finalResult.goods[key].vipPrice = value.vip2_price; + finalResult.goods[key].salePrice = value.vip2_price; finalResult.goods[key].vip2 = true; break; case '3': - finalResult.goods[key].vipPrice = value.vip3_price; + finalResult.goods[key].salePrice = value.vip3_price; finalResult.goods[key].vip3 = true; break; default: - finalResult.goods[key].vipPrice = value.vip_price; finalResult.goods[key].vip = true; + delete finalResult.goods[key].salesPrice; break; } }); + } else { + logger.error('user api code no 200 or no vip category'); } + } else { + logger.info('no user info get from api'); } return finalResult; @@ -284,96 +360,151 @@ exports.getSaleOthersData = (params, channel) => { exports.getSaleDiscountData = (params, channel) => { return api.all([ headerModel.requestHeaderData(channel), - saleApi.getSaleGoodsList(params), - saleApi.getSaleActivityList(params, channel), - saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'}) + saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'}), + saleApi.getSaleActivityList(params, channel) ]).then(result => { let finalResult = result[0]; - // 处理商品数据,顶部分类 + // 处理分页等筛选信息 if (result[1].code === 200) { - finalResult.saleList = {}; - finalResult.saleList.goods = productProcess.processProductList(result[1].data.product_list); - + Object.assign(finalResult, { + leftContent: publicHandler.handleSaleSortData(result[1].data.filter.group_sort, params, 'discount'), + saleList: { + footPager: publicHandler.handlePagerData(result[1].data.total, params), + opts: publicHandler.handleSaleOptsData(params, result[1].data.total) + } + }); + } else { + logger.error('category api no 200'); } // 处理折扣专场标题 banner 数据 if (result[2].code === 200) { + if (_.size(result[2].data) === 1) { finalResult.saleTitle = saleHandler.handleDiscountTitleData(result[2].data[0]); - finalResult.topBanner = {}; - finalResult.topBanner.list = []; - finalResult.topBanner.list[0] = {}; - finalResult.topBanner.list[0].img = result[2].data[0].web_url; + if (result[2].data[0].web_url) { + finalResult.topBanner = { + list: [ + { + img: result[2].data[0].web_url + } + ] + }; + } else { + logger.error('discount activity data[0] web_url empty'); + } } - } - - // 处理分页等筛选信息 - if (result[3].code === 200) { - finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params); - finalResult.saleList.totalCount = result[3].data.total; - finalResult.saleList.pager = saleHandler.handleSalePagerData(result[3].data.total, params); - finalResult.saleList.opts = saleHandler.handleSaleOptsData(params, result[3].data.total); - } + return api.all([ + saleApi.getSaleGoodsList(Object.assign(params, {productPool: result[2].data[0].product_pool})) + ]).then(subResult => { + // 处理商品数据,顶部分类 + if (subResult[0].code === 200) { + finalResult.saleList.goods = productProcess.processProductList(subResult[0].data.product_list); + finalResult.saleList.totalCount = subResult[0].data.total; + + _.forEach(finalResult.saleList.goods, (value, key) => { + delete finalResult.saleList.goods[key].tags.isNew; // 屏蔽 new 标签 + delete finalResult.saleList.goods[key].tags.isSale;// 屏蔽 sale 标签 + delete finalResult.saleList.goods[key].discount; // 屏蔽折扣信息 + }); + } else { + logger.error('discount goods list api code no 200'); + } + return finalResult; + }); + } else { + logger.error('discount activity api code no 200'); + } return finalResult; }); }; /** * 获取断码区数据 Controller 调用 - * @param {[type]} params [description] - * @return {[type]} [description] + * @param params + * @param channel + * @returns {*|Promise.<TResult>} */ exports.getSalebreakingYardsData = (params, channel) => { return api.all([ headerModel.requestHeaderData(channel), saleApi.getSaleBannerList(contentCode[channel].breakCode), - saleApi.getSalebreakingYardsSortList(params), - saleApi.getSaleGoodsList({channel: channel, saleType: '1', limit: '1'}), - saleApi.getSaleGoodsList(params) + saleApi.getSalebreakingYardsSortList(params) ]).then(result => { let finalResult = result[0]; // 处理 banner 数据 if (result[1].code === 200) { finalResult.topBanner = saleHandler.handleSaleBannerData(result[1].data); + _.forEach(finalResult.topBanner.list, (value, key) => { + delete finalResult.topBanner.list[key].href; + }); + } else { + logger.error('content code api code no 200'); } - // 处理筛选条件数据 - if (result[3].code === 200) { - finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params); - - // 这边整合了尺码数据处理 - if (result[2].code === 200) { - finalResult.filters = saleHandler.handleSaleFilterData( - Object.assign(result[3].data.filter, { size: result[2].data }), - params); - } - - finalResult.opts = saleHandler.handleSaleOptsData(params, result[3].data.total); - finalResult.totalCount = result[3].data.total; - finalResult.pager = saleHandler.handleSalePagerData(result[3].data.total, params); - - // 处理所有商品标题数据 - finalResult.saleTitle = {}; - - finalResult.saleTitle.name = '所有商品'; - finalResult.saleTitle.count = finalResult.totalCount; - } + // 断码区产品筛选需要断码区尺码数据,改为串行处理 + if (result[2].code === 200) { + let breakingSizeSort = saleHandler.handleSaleBreakingSizeData(result[2].data); + let breakParam = {}; // 为断码区筛选参数存储,为了不影响 params ,否则会导致链接过长 + + return api.all([ + saleApi.getSaleGoodsList({ + channel: channel, + saleType: '1', + limit: '1', + breakSize: breakingSizeSort.breakSize, + breakSort: breakingSizeSort.breakSort + }), + saleApi.getSaleGoodsList(Object.assign(breakParam, params, { + breakSize: breakingSizeSort.breakSize, + breakSort: breakingSizeSort.breakSort + })) + ]).then(subResult => { + // 处理筛选条件数据 + if (subResult[0].code === 200) { + finalResult.leftContent = + publicHandler.handleSaleSortData(subResult[0].data.filter.group_sort, params); + } else { + logger.error('breakYards left content api code no 200'); + } + + // 处理商品数据 + if (subResult[1].code === 200) { + + if (!_.isEmpty(subResult[1].data.filter)) { + finalResult.filters = publicHandler.handleSaleFilterData( + Object.assign(subResult[1].data.filter, {size: result[2].data}), + params); + } + Object.assign(finalResult, { + goods: productProcess.processProductList(subResult[1].data.product_list), + opts: publicHandler.handleSaleOptsData(params, subResult[1].data.total), + totalCount: subResult[1].data.total, + footPager: publicHandler.handlePagerData(subResult[1].data.total, params) + }); - // 处理商品数据 - if (result[4].code === 200) { - finalResult.goods = productProcess.processProductList(result[4].data.product_list); + // 处理所有商品标题数据 + finalResult.saleTitle = { + name: '所有商品', + count: subResult[1].data.total + }; - _.forEach(finalResult.goods, (value, key) => { - finalResult.goods[key].tags.isNew = false; // 屏蔽 new 标签 + _.forEach(finalResult.goods, (value, key) => { + delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签 + delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签 + delete finalResult.goods[key].discount; // 屏蔽折扣信息 + }); + } else { + logger.error('breakYards goods list code no 200'); + } + return finalResult; }); - - + } else { + logger.error('breakYards size api code no 200'); } - - return finalResult; }); }; diff --git a/apps/product/models/search-api.js b/apps/product/models/search-api.js index 8e0e1b1..ffcbf37 100644 --- a/apps/product/models/search-api.js +++ b/apps/product/models/search-api.js @@ -1,12 +1,16 @@ -'use strict'; +/** + * Created by TaoHuang on 2016/6/14. + */ + -const library = '../../../library'; -const API = require(`${library}/api`).SearchAPI; -const log = require(`${library}/logger`); +'use strict'; -const api = new API(); +const api = global.yoho.SearchAPI; -module.exports.getSortByConditionAsync = function(condition) { - return api.get('sortgroup.json', condition).catch(log.error); +const getSortByConditionAsync = (condition) => { + return api.get('sortgroup.json', condition); }; +module.exports = { + getSortByConditionAsync +}; diff --git a/apps/product/router.js b/apps/product/router.js index 0b1fce4..19a0ced 100644 --- a/apps/product/router.js +++ b/apps/product/router.js @@ -33,29 +33,21 @@ router.get('/sale/newSale', sale.newSale); // 最新降价 router.get('/sale/goods', sale.getGoodsList); // ajax 获取商品列表 // 奥特莱斯routers -router.get('/outlets/index', outlets.index); -router.get('/outlets/special/detail', outlets.special); +router.get('/outlets', outlets.index); // 奥莱首页 +router.get('/outlets/index', outlets.index); // 奥莱首页 +router.get('/outlets/special/detail', outlets.special); // 奥莱活动页 router.get('/outlets/list', outlets.list); // 奥莱品类页 -router.get('/outlets/:channel', outlets.channel); +router.get('/outlets/:channel', outlets.channel); // 奥莱频道页 // 商品列表页 router.get('/list', list.index); // 商品列表页 -// 商品详情routers -router.get('/detail/:id/:gid', detail.showMain); - -// 商品评论 -router.get('/detail/comment', detail.indexComment); - -// 商品咨询 -router.get('/detail/consult', detail.indexConsult); -router.post('/detail/consult', detail.createConsult); - -// 商品热图 -router.get('/detail/hotarea', detail.indexHotArea); - -// 收藏品牌 -router.post('/index/favoriteBrand', favorite.changeFavoriteBrand); +router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, detail.showMain); // 商品详情routers +router.get('/detail/comment', detail.indexComment);// 商品评论 +router.get('/detail/consult', detail.indexConsult);// 商品咨询 +router.post('/detail/consult', detail.createConsult);// 创建咨询 +router.get('/detail/hotarea', detail.indexHotArea);// 商品热区 +router.post('/index/favoriteBrand', favorite.changeFavoriteBrand);// 收藏品牌 router.post('/item/togglecollect', favorite.collectProduct); diff --git a/apps/product/views/action/error.hbs b/apps/product/views/action/error.hbs deleted file mode 100644 index e69de29..0000000 --- a/apps/product/views/action/error.hbs +++ /dev/null diff --git a/apps/product/views/action/goods.hbs b/apps/product/views/action/goods.hbs index 7fa1976..d66535d 100644 --- a/apps/product/views/action/goods.hbs +++ b/apps/product/views/action/goods.hbs @@ -1,64 +1,5 @@ {{# result}} {{#each goods}} - <div class="good-info {{#if vip}} good-info-big{{/if}} {{#if vip1}} good-info-big{{/if}} {{#if vip2}} good-info-big{{/if}} {{#if vip3}} good-info-big{{/if}} {{#if vipPicture}} good-info-big{{/if}}" data-skn="{{skn}}" data-from="{{from}}"> - <div class="tag-container clearfix"> - {{# tags}} - {{# isNew}} - <span class="good-tag new-tag">NEW</span> - {{/ isNew}} - {{# isReNew}} - <span class="good-tag renew-tag">再到着</span> - {{/ isReNew}} - {{# isSale}} - <span class="good-tag sale-tag">SALE</span> - {{/ isSale}} - {{# isNewFestival}} - <span class="good-tag new-festival-tag">新品节</span> - {{/ isNewFestival}} - {{# isLimited}} - <span class="good-tag limit-tag">限量商品</span> - {{/ isLimited}} - {{# isYearEndPromotion}} - <span class="good-tag yep-tag">年终大促</span> - {{/ isYearEndPromotion}} - {{# isYearMidPromotion}} - <span class="good-tag ymp-tag">年中热促</span> - {{/ isYearMidPromotion}} - {{/ tags}} - </div> - <div class="good-detail-img"> - <a class="good-thumb" href="{{url}}" target="_blank"> - <img class="lazy" data-original="{{image thumb 280 380}}"> - </a> - {{# tags}} - {{# isFew}} - <p class="few-tag">即将售罄</p> - {{/ isFew}} - {{/ tags}} - {{#if showColBtn}} - <span class="col-btn iconfont{{#if coled}} coled{{/if}}"></span> - {{/if}} - </div> - <div class="good-detail-text"> - <a href="{{url}}" target="_blank">{{{productName}}}</a> - <p class="brand"> - <a href="{{brandUrl}}">{{brandName}}</a> - </p> - <p class="price"> - {{# marketPrice}} - <span class="market-price">¥{{.}}</span> - {{/ marketPrice}} - {{# salesPrice}} - <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}"> - ¥{{.}} - </span> - {{/ salesPrice}} - {{#vip}}<span class="vip-tag"> VIP </span><strong>更优惠</strong>{{/vip}} - {{#vip1}}<span class="vip-1"> </span><strong>{{vipPrice}}</strong>{{/vip1}} - {{#vip2}}<span class="vip-2"> </span><strong>{{vipPrice}}</strong>{{/vip2}} - {{#vip3}}<span class="vip-3"> </span><strong>{{vipPrice}}</strong>{{/vip3}} - </p> - </div> - </div> + {{> product/good}} {{/each}} -{{/ result}} +{{/ result}} \ No newline at end of file diff --git a/apps/product/views/action/outlets/channel.hbs b/apps/product/views/action/outlets/channel.hbs index afe8b0b..fe1c42b 100644 --- a/apps/product/views/action/outlets/channel.hbs +++ b/apps/product/views/action/outlets/channel.hbs @@ -1,26 +1,26 @@ -<div class="outlets-channel-page yoho-page" data-page="girls"> - <div class="slide-container clearfix"> - <div class="center-col col"> - <ul class="slide-wrapper"> - {{# left}} - <li> - <a href="{{href}}" target="_blank"> - <img src="{{image img 865 450}}"> - <!-- <img class="lazy" data-original="{{img}}"> --> - </a> - </li> - {{/ left}} - </ul> +<div class="outlets-channel-page outlets-page center-content yoho-page" data-page="girls"> + {{# topBanner}} + <div class="slide-container clearfix"> + <div class="center-col col"> + <ul class="slide-wrapper"> + {{# left}} + <li> + <a href="{{url}}" target="_blank"> + <img src="{{image src 865 450}}"> + </a> + </li> + {{/ left}} + </ul> + </div> + <div class="right-col col"> + {{# right}} + <a href="{{url}}" target="_blank"> + <img src="{{image src 290 180}}"> + </a> + {{/ right}} + </div> </div> - <div class="right-col col"> - {{# right}} - <a href="{{href}}" target="_blank"> - <img src="{{image img 290 180}}"> - <!-- <img class="lazy" data-original="{{img}}"> --> - </a> - {{/ right}} - </div> - </div> + {{/ topBanner}} {{! 热门品类}} {{# hotCategory}} diff --git a/apps/product/views/action/outlets/index.hbs b/apps/product/views/action/outlets/index.hbs index 28d111a..005ca3b 100644 --- a/apps/product/views/action/outlets/index.hbs +++ b/apps/product/views/action/outlets/index.hbs @@ -1,15 +1,16 @@ -{{!-- <pre>{{resultShow}}</pre> --}} -{{# result}} <div class="outlets-page product-page yoho-page"> {{> common/main-banner}} <div class="center-content"> - <ul class="column-img-tab"> - {{# column}} - <li> - <a href="{{url}}"><img class="lazy" data-original="{{image src 378 175}}"></a> - </li> - {{/ column}} - </ul> + {{#if column}} + <ul class="column-img-tab clearfix"> + {{# column}} + <li> + <a href="{{url}}" target="_blank"><img class="lazy" data-original="{{image src 378 175}}"></a> + </li> + {{/ column}} + </ul> + {{/if}} + {{> outlets/limited-buy}} {{> outlets/near-over}} @@ -17,5 +18,4 @@ {{> outlets/main-product}} </div> -</div> -{{/ result}} \ No newline at end of file +</div> \ No newline at end of file diff --git a/apps/product/views/action/outlets/special.hbs b/apps/product/views/action/outlets/special.hbs index ffc5e31..4752acf 100644 --- a/apps/product/views/action/outlets/special.hbs +++ b/apps/product/views/action/outlets/special.hbs @@ -1,6 +1,6 @@ -{{!-- <pre>{{resultShow}}</pre> --}} <div class="outlets-special-page product-page yoho-page"> {{> common/main-banner}} + <div class="center-content clearfix"> {{> common/special-head}} <div class="list-left left"> diff --git a/apps/product/views/action/sale/discount.hbs b/apps/product/views/action/sale/discount.hbs index 3c79ce6..7432be8 100644 --- a/apps/product/views/action/sale/discount.hbs +++ b/apps/product/views/action/sale/discount.hbs @@ -1,37 +1,9 @@ {{# result}} -<div class="sale-discount-page yoho-page center-content .new-sale-page"> +<div class="sale-discount-page yoho-page center-content product-page"> - {{#topBanner}} - {{> sale/sale-banner}} - {{/topBanner}} + {{> sale/sale-banner}} - <div class="center-content clearfix"> - {{#saleTitle}} - <div class="sale-title"> - <span class="title">{{title}}</span> - {{#if discount}} - <span class="discount">{{discount}}</span> - {{/if}} - {{#if up}} - 起 - {{/if}} - <div class="time pull-right"> - <span class="iconfont"></span> - <label class="time-calculate hidden" data="{{time}}"></label> - </div> - </div> - {{/saleTitle}} - <ul class="sort"> - <li class="title">分类:</li> - {{#leftContent}} - {{#allSort}} - {{#list}} - <li class="{{#if checked}}active{{/if}}"><a href="{{href}}">{{name}}({{num}})</a></li> - {{/list}} - {{/allSort}} - {{/leftContent}} - </ul> - </div> + {{> sale/discount-center-content}} {{# saleList}} diff --git a/apps/product/views/action/sale/index.hbs b/apps/product/views/action/sale/index.hbs index 61d0b38..ac0f25a 100644 --- a/apps/product/views/action/sale/index.hbs +++ b/apps/product/views/action/sale/index.hbs @@ -1,18 +1,13 @@ {{# result}} <div class="sale-page yoho-page center-content"> {{! 头部banner}} - - {{#topBanner}} - {{> common/slide-banner}} - {{/topBanner}} - + {{> common/slide-banner}} {{> sale/activity-entry}} {{> sale/brand-sale}} - <div class="home-page"> - {{> sale/sale-box}} - </div> + + {{> sale/sale-box}} </div> {{/ result}} diff --git a/apps/product/views/action/sale/other.hbs b/apps/product/views/action/sale/other.hbs index fd5c9b5..db8b421 100644 --- a/apps/product/views/action/sale/other.hbs +++ b/apps/product/views/action/sale/other.hbs @@ -1,8 +1,6 @@ <div class="new-sale-page product-page yoho-page sale-discount-page"> {{# saleList}} - {{#topBanner}} - {{> sale/sale-banner}} - {{/topBanner}} + {{> sale/sale-banner}} <div class="center-content clearfix"> {{# pathNav}} diff --git a/apps/product/views/partial/common/goods-menu.hbs b/apps/product/views/partial/common/goods-menu.hbs index 7dbbd37..7d0c120 100644 --- a/apps/product/views/partial/common/goods-menu.hbs +++ b/apps/product/views/partial/common/goods-menu.hbs @@ -7,7 +7,7 @@ {{/each}} </ul> {{#if more}} - <a href="{{more}}" class="more">MORE</a> + <a href="{{more}}" class="more" target="_blank">MORE</a> {{/if}} </div> {{/ goodsMenu}} \ No newline at end of file diff --git a/apps/product/views/partial/common/special-head.hbs b/apps/product/views/partial/common/special-head.hbs index 6ccdb09..15ab32f 100644 --- a/apps/product/views/partial/common/special-head.hbs +++ b/apps/product/views/partial/common/special-head.hbs @@ -5,7 +5,7 @@ <label class="time" data-limit="{{limit}}"></label> </div> <div class="special-name"> - <img src="{{image logo 100 40}}"> + <img src="{{image logo 86 40}}"> {{special}} <span><i>{{discount}}</i>{{discountText}}</span> </div> diff --git a/apps/product/views/partial/index/flash-sale.hbs b/apps/product/views/partial/index/flash-sale.hbs deleted file mode 100644 index 3f1a3e1..0000000 --- a/apps/product/views/partial/index/flash-sale.hbs +++ /dev/null @@ -1,22 +0,0 @@ -<div class="flash-sale clearfix"> - {{> index/floor-header}} - <div class="flash-sale-list"> - <ul class="g-list imgopacity clearfix"> - {{#each imgHot}} - <li> - <a href="{{href}}" target= "_blank"><div class="flash-sale-banner"> - <img src="{{image img 560 260}}"/></div> - <div class="flash-sale-bottom"> - <p class="flash-sale-count">{{count}}折起</p> - <p class="flash-sale-name">{{name}}</p> - <p class="flash-sale-timer">timer</p> - <div class="flash-sale-logo"> - <img src="{{image logo 100 60}}"/> - </div> - </div> - </a> - </li> - {{/each}} - </ul> - </div> -</div> \ No newline at end of file diff --git a/apps/product/views/partial/index/newDiscount b/apps/product/views/partial/index/newDiscount deleted file mode 100644 index 5d5c6dd..0000000 --- a/apps/product/views/partial/index/newDiscount +++ /dev/null @@ -1,9 +0,0 @@ -<div class="new-discount"> - <p class="new-discount-label">最新折扣</p> - <ul class="discount-nav" urlLocation="{{urlLocation}}"> - {{#discountNavItem}} - <li class="discount-nav-list" urlLocation='{{urlLocation}}'>{{title}}</li> - {{/discountNavItem}} - </ul> - <a url="{{discountMore}}">MORE</a> -</div> \ No newline at end of file diff --git a/apps/product/views/partial/index/outlets-recommend.hbs b/apps/product/views/partial/index/outlets-recommend.hbs index 6d9a888..2054e91 100644 --- a/apps/product/views/partial/index/outlets-recommend.hbs +++ b/apps/product/views/partial/index/outlets-recommend.hbs @@ -4,7 +4,7 @@ <div class="tpl-nav"> <div class="tpl-keywords"> {{#each blocks}} - <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 75}}"/></a> + <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 76}}"/></a> {{/each}} </div> <div class="tpl-category clearfix"> @@ -15,13 +15,13 @@ </div> <div class="tpl-brands imgopacity clearfix"> {{#each brands}} - <a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 375 505}}"/></a> + <a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 377 504}}"/></a> {{/each}} </div> <div class="tpl-types imgopacity clearfix"> <ul> {{#each types}} - <li><a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 245}}"/></a></li> + <li><a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 248}}"/></a></li> {{/each}} </ul> </div> diff --git a/apps/product/views/partial/outlets/extra-feature.hbs b/apps/product/views/partial/outlets/extra-feature.hbs new file mode 100644 index 0000000..c813ccd --- /dev/null +++ b/apps/product/views/partial/outlets/extra-feature.hbs @@ -0,0 +1,18 @@ +{{# comeSoon}} + <div class="extra-pack"> + <div class="extra-title">{{title}}</div> + <div class="brand-list"> + <div class="list-page"> + {{# brands}} + <div class="brand-item"> + <img class="lazy" data-original="{{image logo 140 65}}"> + </div> + {{/ brands}} + </div> + </div> + <div class="brand-page-btns page-btns" onselectstart="return false"> + <label class="iconfont pre-page-btn"></label> + <label class="iconfont next-page-btn"></label> + </div> + </div> +{{/ comeSoon}} \ No newline at end of file diff --git a/apps/product/views/partial/outlets/extra-product.hbs b/apps/product/views/partial/outlets/extra-product.hbs index 0caddb0..327af6a 100644 --- a/apps/product/views/partial/outlets/extra-product.hbs +++ b/apps/product/views/partial/outlets/extra-product.hbs @@ -9,12 +9,14 @@ <img class="lazy" data-original="{{image thumb 90 120}}"> </a> <div class="item-text"> - <a href="{{url}}"> + <a href="{{url}}" target="_blank"> {{productName}} <p class="price"> - <span class="sale-price">{{salesPrice}}</span> - <span class="market-price">{{marketPrice}}</span> - <label class="discount">{{discount}}折</label> + <span class="sale-price">¥{{round salesPrice 2}}</span> + {{#if marketPrice}} + <span class="market-price">¥{{round marketPrice 2}}</span> + <label class="discount">{{discount}}折</label> + {{/if}} </p> </a> </div> @@ -22,7 +24,7 @@ {{/ goods}} </div> </div> - <div class="good-page-btns" onselectstart="return false"> + <div class="good-page-btns page-btns" onselectstart="return false"> <label class="iconfont pre-page-btn"></label> <label class="iconfont next-page-btn"></label> </div> diff --git a/apps/product/views/partial/outlets/limited-buy.hbs b/apps/product/views/partial/outlets/limited-buy.hbs index 6f9fdf1..daf893b 100644 --- a/apps/product/views/partial/outlets/limited-buy.hbs +++ b/apps/product/views/partial/outlets/limited-buy.hbs @@ -5,11 +5,12 @@ <div class="limit-extra right"> {{# extra}} {{# sourceImg}} - <a href="{{#if herf}}{{href}}{{^}}javascript:;{{/if}}" class="source-img" target="_blank"> + <a href="{{#if href}}{{href}}{{^}}javascript:;{{/if}}" class="source-img" target="_blank"> <img class="lazy" data-original="{{image img 380 506}}" width=100%> </a> {{/ sourceImg}} {{> outlets/extra-recommend}} + {{> outlets/extra-feature}} {{> outlets/extra-product}} {{/ extra}} </div> @@ -21,10 +22,10 @@ </a> <div class="item-info"> <a href="{{href}}" target="_blank"> - <img class="logo-img" src="{{image logo 155 65}}"> + <img class="logo-img" src="{{image logo 140 65}}"> <p class="discount"><i>{{discount}}</i>{{discountText}}</p> <p class="title">{{title}}</p> - <label class="time" data-limit="{{limit}}"></label> + <label class="time" data-limit="{{limit}}" data-pre="仅剩"></label> </a> </div> </div> diff --git a/apps/product/views/partial/outlets/main-product.hbs b/apps/product/views/partial/outlets/main-product.hbs index 5a29da3..197deb3 100644 --- a/apps/product/views/partial/outlets/main-product.hbs +++ b/apps/product/views/partial/outlets/main-product.hbs @@ -1,5 +1,5 @@ {{# goodsBoard}} - <div class="main-product"> + <div id="otspool" class="main-product"> {{> common/goods-menu}} <div class="sort-layer"> @@ -17,16 +17,15 @@ <div class="detail-text"> <a class="name" href="{{url}}" target="_blank">{{productName}}</a> <p> - <span class="price">¥{{salesPrice}}</span> - <label class="discount">{{discount}}折</label> + <span class="price">¥{{round salesPrice 2}}</span> + {{# discount}} + <label class="discount">{{.}}折</label> + {{/ discount}} </p> </div> </div> {{/ list}} </div> </div> -{{/ goodsBoard}} -<div class="product-pager clearfix"> - <span class="total">{{{total}}}</span> - <div class="pager">{{{pager}}}</div> -</div> \ No newline at end of file + {{> common/foot-pager}} +{{/ goodsBoard}} \ No newline at end of file diff --git a/apps/product/views/partial/outlets/near-over.hbs b/apps/product/views/partial/outlets/near-over.hbs index b6a5e9c..a31ab5c 100644 --- a/apps/product/views/partial/outlets/near-over.hbs +++ b/apps/product/views/partial/outlets/near-over.hbs @@ -10,7 +10,7 @@ </a> <div class="item-info"> <a href="{{href}}" target="_blank"> - <img src="{{image logo 150 50}}" class="brand-logo"> + <img src="{{image logo 140 65}}" class="brand-logo"> </a> <div class="activity-info"> <p> @@ -19,7 +19,7 @@ </p> <p> <span class="iconfont"></span> - <label class="time" data-limit="{{limit}}"></label> + <label class="time" data-limit="{{limit}}" data-pre="仅剩"></label> </p> </div> diff --git a/apps/product/views/partial/sale/brand-sale.hbs b/apps/product/views/partial/sale/brand-sale.hbs index a240dea..0a4a6c6 100644 --- a/apps/product/views/partial/sale/brand-sale.hbs +++ b/apps/product/views/partial/sale/brand-sale.hbs @@ -1,42 +1,44 @@ <div class="brand-sale"> - <div class="floor-title"> - 折扣专场 SALE - </div> - - {{#brandSale}} - <div class="sale-group-big clearfix"> - {{#big}} - <a class="item pull-left" href="{{link}}"> - <div class="pic"> - <img src="{{image img 375 400}}"> - <div class="time"><span></span>{{time}}</div> - </div> - <div class="detail"> - <img class="brand pull-left" src="{{image brand 150 100}}"> - <div class="text"> - <div class="discount"> - <span class="num">{{discount}}</span> - </div> - <div class="active-name">{{activityName}}</div> - <div class="title"> - {{title}} + {{#if brandSale}} + {{#brandSale}} + <div class="floor-title"> + 折扣专场 SALE + </div> + <div class="sale-group-big clearfix"> + {{#big}} + <a class="item pull-left" href="{{link}}" target= "_blank"> + <div class="pic"> + <img src="{{image img 375 375}}"> + <div class="time"><span class="time-span"><span class="iconfont"></span>{{time}}</span></div> + </div> + <div class="detail"> + <img class="brand pull-left" src="{{image brand 185 86}}"> + <div class="text"> + <div class="discount"> + <span class="num">{{discount}}</span> + {{discountText}} + </div> + <div class="active-name">{{activityName}}</div> + <div class="title"> + {{title}} + </div> </div> </div> - </div> - </a> - {{/big}} - </div> - <div class="sale-group clearfix"> - {{#normal}} - <a class="item pull-left" href="{{link}}"> - <img class="pic" src="{{image img 378 500}}"> - <div class="detail"> - <div class="title">{{title}}<span>{{discount}}</span>{{discountText}}</div> - <div class="time">{{time}}</div> - </div> - </a> - {{/normal}} - </div> - {{/brandSale}} + </a> + {{/big}} + </div> + <div class="sale-group clearfix"> + {{#normal}} + <a class="item pull-left" href="{{link}}" target= "_blank"> + <img class="pic" src="{{image img 350 350}}"> + <div class="detail"> + <div class="title">{{title}}{{discount}}{{discountText}}</div> + <div class="time">{{time}}</div> + </div> + </a> + {{/normal}} + </div> + {{/brandSale}} + {{/if}} </div> diff --git a/apps/product/views/partial/sale/discount-center-content.hbs b/apps/product/views/partial/sale/discount-center-content.hbs new file mode 100644 index 0000000..c8df2dd --- /dev/null +++ b/apps/product/views/partial/sale/discount-center-content.hbs @@ -0,0 +1,30 @@ +<div class="center-content clearfix"> + {{#saleTitle}} + <div class="sale-title"> + <span class="title">{{title}}</span> + {{#if discount}} + <span class="discount">{{discount}}</span> + {{/if}} + {{#if discountText}} + {{discountText}} + {{/if}} + <div class="time pull-right"> + <span class="iconfont"></span> + <label class="time-calculate hidden" data="{{time}}"></label> + </div> + </div> + {{/saleTitle}} + <ul class="sort"> + <li class="title">分类:</li> + {{#leftContent}} + {{#allSort}} + {{#all}} + <li class="{{#if active}}active{{/if}}"><a href="{{href}}">{{name}} {{#if num}}({{num}}){{/if}}</a></li> + {{/all}} + {{#list}} + <li class="{{#if active}}active{{/if}}"><a href="{{href}}">{{name}} {{#if num}}({{num}}){{/if}}</a></li> + {{/list}} + {{/allSort}} + {{/leftContent}} + </ul> +</div> \ No newline at end of file diff --git a/apps/product/views/partial/sale/sale-banner.hbs b/apps/product/views/partial/sale/sale-banner.hbs index 2a62cdb..81e5a74 100644 --- a/apps/product/views/partial/sale/sale-banner.hbs +++ b/apps/product/views/partial/sale/sale-banner.hbs @@ -1,7 +1,17 @@ -<div class="sale-list-banner" style="height: 360px;"> - <ul> - {{# list}} - <li class="banner-img" style="background:url({{image img 1920 360}}) no-repeat top center;"></li> - {{/ list}} - </ul> -</div> +{{# topBanner}} + {{#if list}} + <div class="sale-list-banner" style="height: 360px;"> + <ul> + {{# list}} + {{#if href}} + <a href="{{href}}" target= "_blank"> + <li class="banner-img" style="background:url({{image img 1150 360}}) no-repeat top center;"></li> + </a> + {{^}} + <li class="banner-img" style="background:url({{image img 1150 360}}) no-repeat top center;"></li> + {{/if}} + {{/ list}} + </ul> + </div> + {{/if}} +{{/topBanner}} \ No newline at end of file diff --git a/apps/product/views/partial/sale/sale-box.hbs b/apps/product/views/partial/sale/sale-box.hbs index 3111957..d553bba 100644 --- a/apps/product/views/partial/sale/sale-box.hbs +++ b/apps/product/views/partial/sale/sale-box.hbs @@ -1,16 +1,18 @@ {{#saleCategory}} - <div class="sale-box"> - <div class="floor-header clearfix"> - <h2 class="floor-title">{{title}}</h2> - </div> - <ul class="sale-nav" urlLocation="{{urlLocation}}"> - {{#navItem}} - <li class="{{#vip}}green{{/vip}} {{#incompleteSize}}yellow{{/incompleteSize}} {{#newDiscount}}red{{/newDiscount}} {{#if @first}}active first{{/if}} {{#if @last}}last{{/if}}" urlLocation='{{urlLocation}}'>{{title}}</li> - {{/navItem}} - </ul> - <div class="commodity-list"> - <ul class="clearfix goods"> + {{#if navItem}} + <div class="sale-box {{#if forVip}}sale-vip-box{{/if}}"> + <div class="floor-header clearfix"> + <h2 class="floor-title">{{title}}</h2> + </div> + <ul class="sale-nav" urlLocation="{{urlLocation}}"> + {{#navItem}} + <li class="{{#vip}}green{{/vip}} {{#incompleteSize}}yellow{{/incompleteSize}} {{#newDiscount}}red{{/newDiscount}} {{#if @first}}active first{{/if}} {{#if @last}}last{{/if}}" urlLocation='{{urlLocation}}'>{{title}}</li> + {{/navItem}} </ul> + <div class="commodity-list"> + <ul class="clearfix goods"> + </ul> + </div> </div> - </div> + {{/if}} {{/saleCategory}} diff --git a/config/common.js b/config/common.js index 20bdf35..4d7dbc4 100644 --- a/config/common.js +++ b/config/common.js @@ -13,8 +13,8 @@ module.exports = { port: 6002, siteUrl: 'http://www.yohobuy.com', domains: { - api: 'http://testapi.yoho.cn:28078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078 - service: 'http://testservice.yoho.cn:28077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077 + api: 'http://devapi.yoho.cn:58078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078 + service: 'http://devservice.yoho.cn:28077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077 search: 'http://192.168.102.216:8080/yohosearch/' }, useOneapm: false, @@ -48,6 +48,12 @@ module.exports = { colorize: 'all', prettyPrint: true } + }, + thirdLogin: { + wechat: { + appID: 'wx3ae21dcbb82ad672', + appSecret: 'e78afb2321e6a19085767e1a0f0d52c1' + } } }; @@ -70,6 +76,12 @@ if (isProduction) { } else if (isTest) { Object.assign(module.exports, { appName: 'www.yohobuy.com for test', + + // domains: { + // api: 'http://testapi.yoho.cn:28078/', + // service: 'http://testservice.yoho.cn:28077/', + // search: 'http://192.168.102.216:8080/yohosearch/' + // }, useOneapm: true, useCache: true, memcache: { diff --git a/config/data-map.js b/config/data-map.js new file mode 100644 index 0000000..94238de --- /dev/null +++ b/config/data-map.js @@ -0,0 +1,119 @@ +/** + * 共用的map数据常量定义 + * @author: 赵彪<bill.zhao@yoho.cn> + * @date: 2016/06/23 + */ + +'use strict'; + +const channelMap = { + boys: { + code: '79372627eee75d73afe7f9bac91e5ce6', + gender: '1,3' + }, + girls: { + code: '75215008957605c05e8cd375eac4f817', + gender: '2,3' + }, + kids: { + code: 'd71f4b27f2a7229fbb31a4bc490a6f36', + gender: '2,3' + }, + lifestyle: { + code: '8a341ca7eacc069ba80f02dec80eaf34', + + // code: '380c38155fd8beee10913a3f5b462da6', + // code: '665f7c2fb9d037ee820766953ee34bf7', + gender: '2,3' + } +}; + +const sortMap = { + boys: [ + {sort: 147, viewNum: 5}, // 休闲运动鞋 + {sort: 129, viewNum: 5}, // 休闲裤 + {sort: 152, viewNum: 5}, // 双肩包 + {misort: 11, viewNum: 5}, // T恤 + {sort: 115, viewNum: 5}, // 衬衫 + {sort: 130, viewNum: 5}, // 牛仔裤 + {misort: 60, viewNum: 5}, // 帽子 + {sort: 124, viewNum: 5}, // 夹克 + {sort: 119, viewNum: 5}, // 卫衣 + {sort: 162, viewNum: 5}, // 手表 + {sort: 148, viewNum: 5}, // 靴子 + {misort: 65, viewNum: 5}, // 首饰 + {sort: 151, viewNum: 5}, // 时装鞋 + {misort: 61, viewNum: 5}, // 太阳镜 + {misort: 39, viewNum: 5}, // 袜子 + {sort: 346, viewNum: 5}, // 运动裤 + {sort: 131, viewNum: 5}, // 短裤 + {misort: 66, viewNum: 5}, // 配饰 + {misort: 309, viewNum: 5}, // 内裤 + {misort: 30, viewNum: 5}, // 打底裤/紧身裤 + {sort: 342, viewNum: 5} // 邮差包 + ], + girls: [ + {misort: 16, viewNum: 4}, // 卫衣 + {misort: 12, viewNum: 4}, // 衬衫 + {misort: 44, viewNum: 4}, // 休闲/运动鞋 + {misort: 11, viewNum: 4}, // T恤 + {misort: 21, viewNum: 4}, // 夹克 + {misort: 257, viewNum: 4}, // 毛衣/针织 + {misort: 22, viewNum: 4}, // 大衣/风衣 + {misort: 26, viewNum: 4}, // 休闲裤 + {misort: 27, viewNum: 4}, // 牛仔裤 + {misort: 31, viewNum: 4}, // 连衣裙 + {misort: 32, viewNum: 4}, // 半身裙 + {misort: 48, viewNum: 4}, // 时装鞋 + {misort: 49, viewNum: 4}, // 双肩包 + {misort: 50, viewNum: 4}, // 手拎包/单肩包 + {misort: 60, viewNum: 4}, // 帽子 + {misort: 65, viewNum: 4}, // 首饰 + {misort: 59, viewNum: 4}, // 手表 + {misort: 61, viewNum: 4}, // 太阳镜 + {misort: 66, viewNum: 4} // 配饰 + ], + kids: [ + {misort: 366, viewNum: 4}, // T恤 + {misort: 367, viewNum: 4}, // 衬衫 + {misort: 396, viewNum: 4}, // 卫衣 + {misort: 400, viewNum: 4}, // // 毛衣/针织 + {misort: 404, viewNum: 4}, // 夹克 + {misort: 369, viewNum: 4}, // 休闲裤 + {misort: 388, viewNum: 4}, // 牛仔裤 + {misort: 371, viewNum: 4}, // 连衣裙 + {misort: 370, viewNum: 4}, // 半身裙 + {misort: 368, viewNum: 4}, // 休闲/运动鞋 + {misort: 392, viewNum: 4}, // 双肩包 + {misort: 414, viewNum: 4}, // 帽子 + {misort: 372, viewNum: 4}, // 短裤 + {misort: 384, viewNum: 4}, // 打底裤/紧身裤 + {misort: 382, viewNum: 4}, // 凉鞋/拖鞋 + {misort: 402, viewNum: 4}, // 马甲 + {misort: 386, viewNum: 4}, // 背心 + {misort: 406, viewNum: 4}, // 大衣/风衣 + {misort: 430, viewNum: 4}, // 羽绒服 + {misort: 423, viewNum: 4}, // 棉衣 + {misort: 417, viewNum: 4} // 套装 + ], + lifestyle: [ + {sort: 171, viewNum: 5}, // 耳机 + {sort: 398, viewNum: 5}, // 只能装备 + {sort: 185, viewNum: 5}, // 相机 + {misort: 259, viewNum: 5}, // 美妆 + {sort: 267, viewNum: 5}, // 杯子/水壶 + {sort: 313, viewNum: 5}, // 手机/ipad壳套 + {sort: 211, viewNum: 5}, // 数码配件 + {sort: 292, viewNum: 5}, // 玩偶 + {sort: 272, viewNum: 5}, // 储物收纳 + {sort: 183, viewNum: 5}, // 启用家居 + {sort: 273, viewNum: 5}, // 厨具/餐具 + {sort: 271, viewNum: 5} // 靠枕/靠垫/抱枕 + ] +}; + + +module.exports = { + channel: channelMap, + sort: sortMap +}; diff --git a/dispatch.js b/dispatch.js index c36e195..8f09084 100644 --- a/dispatch.js +++ b/dispatch.js @@ -12,4 +12,5 @@ module.exports = app => { app.use(require('./apps/channel')); // 频道页 app.use(require('./apps/activity')); // 专题活动等活动页面 app.use('/product', require('./apps/product')); // 商品相关页面 + app.use('/passport', require('./apps/passport')); // 登录注册 }; diff --git a/doraemon/middleware/error-handler.js b/doraemon/middleware/error-handler.js new file mode 100644 index 0000000..a5daab4 --- /dev/null +++ b/doraemon/middleware/error-handler.js @@ -0,0 +1,61 @@ +/** + * 404 错误 + * @return {[type]} + */ +const headerModel = require('../models/header'); +const logger = global.yoho.logger; + +exports.notFound = () => { + return (req, res, next) => { + if (req.xhr) { + return res.status(404).json({ + code: 404, + message: '抱歉,页面不存在!' + }); + } + + headerModel.requestHeaderData().then((result) => { + return res.render('error/404', { + module: 'common', + page: 'error', + title: '页面不存在 | Yoho!Buy有货 | 潮流购物逛不停', + headerData: result.headerData + }); + }).catch(next); + + }; +}; + +/** + * 服务器错误 + * @return {[type]} + */ +exports.serverError = () => { + return (err, req, res, next) => { + logger.error(`error at path: ${req.url}`); + logger.error(err); + if (!res.headersSent) { + if (req.xhr) { + return res.status(500).json({ + code: 500, + message: '服务器错误!' + }); + } + + const renderErrPage = (result) => { + res.render('error/500', { + module: 'common', + page: 'error', + err: err, + title: '服务器错误 | Yoho!Buy有货 | 潮流购物逛不停', + headerData: result.headerData + }); + }; + + return headerModel.requestHeaderData().then(renderErrPage).catch(() => { + renderErrPage(); + }); + } + next(err); + }; +}; diff --git a/doraemon/middleware/mobile-check.js b/doraemon/middleware/mobile-check.js new file mode 100644 index 0000000..e59700c --- /dev/null +++ b/doraemon/middleware/mobile-check.js @@ -0,0 +1,14 @@ +/** + * 手机访问检测 + */ +'use strict'; +module.exports = () => { + return (req, res, next) => { + let isMobile = /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i.test(req.get('user-agent')); // eslint-disable-line + + if (isMobile) { + return res.redirect(`//m.yohobuy.com${req.url}`); + } + next(); + }; +}; diff --git a/doraemon/middleware/set-pageinfo.js b/doraemon/middleware/set-pageinfo.js new file mode 100644 index 0000000..630ae21 --- /dev/null +++ b/doraemon/middleware/set-pageinfo.js @@ -0,0 +1,22 @@ +/** + * 设置页面的module,page默认值 + * @author: 赵彪<bill.zhao@yoho.cn> + * @date: 2016/6/22 + */ + +'use strict'; + +module.exports = () => { + return (req, res, next) => { + if (!req.xhr) { + const arr = req.path.substring(1).split('/'); + + Object.assign(res.locals, { + module: arr[0], + page: arr[1] + }); + } + + next(); + }; +}; diff --git a/doraemon/middleware/set-yoho-data.js b/doraemon/middleware/set-yoho-data.js new file mode 100644 index 0000000..6897eaa --- /dev/null +++ b/doraemon/middleware/set-yoho-data.js @@ -0,0 +1,23 @@ +/** + * 设置 YOHO 数据 + * @author: 赵彪<bill.zhao@yoho.cn> + * @date: 2016/6/16 + */ + +'use strict'; + +module.exports = () => { + return (req, res, next) => { + let yoho = { + pageChannel: {} + }; + const channel = req.query.channel || req.cookies._Channel || 'boys'; + + yoho.pageChannel[channel] = true; + yoho.isApp = req.query.app_version || req.query.appVersion; + + Object.assign(res.locals, yoho); + Object.assign(req.yoho, yoho); + next(); + }; +}; diff --git a/doraemon/middleware/user.js b/doraemon/middleware/user.js new file mode 100644 index 0000000..d609ccd --- /dev/null +++ b/doraemon/middleware/user.js @@ -0,0 +1,18 @@ +const _ = require('lodash'); +const cookie = global.yoho.cookie; + +module.exports = () => { + return (req, res, next) => { + // 从 SESSION 中获取到当前登录用户的 UID + if (req.session && _.isNumber(req.session._LOGIN_UID)) { + req.user.uid = req.session._LOGIN_UID; + } + + // session 没有读取到的时候,从 cookie 读取 UID + if (!req.user.uid && req.cookies._UID) { + req.user.uid = cookie.getUid(req); + } + + next(); + }; +}; diff --git a/doraemon/models/header.js b/doraemon/models/header.js index b749170..5d2645e 100644 --- a/doraemon/models/header.js +++ b/doraemon/models/header.js @@ -8,12 +8,7 @@ const _ = require('lodash'); -const ServiceAPI = require(`${global.library}/api`).ServiceAPI; -const sign = require(`${global.library}/sign`); - -const serviceApi = new ServiceAPI(); - -const log = require(`${global.library}/logger`); +const serviceApi = global.yoho.ServiceAPI; /** * 获取菜单 @@ -61,6 +56,7 @@ const getNavBar = (data, type) => { obj.link = item.sort_url; obj.cn = item.sort_name; obj.en = item.sort_name_en; + obj.isNewPage = item.is_new_page === 'Y' ? true : false; if (type === lowEn) { obj.active = true; @@ -173,19 +169,15 @@ const getSubNav = (data, type) => { * @param {String} 指定页面类型为boys,girls,kids,lifestyle * @return {object} 头部数据 */ -const setHeaderData = (resData, type) => { - let data = { - headerData: { - header: true, - headType: type, - yohoGroup: getMenuData(), - navbars: resData ? getNavBar(resData, type) : [], - subNav: resData ? getSubNav(resData, type) : [] - } - }; - - return data; -}; +const setHeaderData = (resData, type) => ( + { + header: true, + headType: type, + yohoGroup: getMenuData(), + navbars: resData ? getNavBar(resData, type) : [], + subNav: resData ? getSubNav(resData, type) : [] + } +); /** @@ -194,19 +186,19 @@ const setHeaderData = (resData, type) => { * @return {promise} */ exports.requestHeaderData = (type, parentId) => { - let data = sign.apiSign({ + let data = { client_type: 'web', parent_id: parentId || null - }); + }; type = type || 'boys'; - return serviceApi.get('operations/api/v6/category/getCategory', data, true).then(res => { - if (res && res.code === 200) { - return setHeaderData(res.data, type); - } else { - log.error('获取头部信息的接口返回状态码 不是 200'); - return {}; - } + return serviceApi.get('operations/api/v6/category/getCategory', data, { + cache: true, + code: 200 + }).then(res => { + return { + headerData: res ? setHeaderData(res.data, type) : {} + }; }); }; diff --git a/doraemon/views/error/404.hbs b/doraemon/views/error/404.hbs new file mode 100644 index 0000000..91082ba --- /dev/null +++ b/doraemon/views/error/404.hbs @@ -0,0 +1,11 @@ +<div class="wrapper screen"> + <div class="clear wrapper-404"> + <div class="left"><img src="http://static.yohobuy.com/images/v3/index/404.png"></div> + <div class="right right-tips"> + <p class="text1">很抱歉,您访问的页面不存在!</p> + <p class="text2"> + </p> + <p class="text3"><a href="http://www.yohobuy.com/product/new" class="button">浏览新品</a> <a href="http://www.yohobuy.com/" class="button">返回首页</a></p> + </div> + </div> +</div> \ No newline at end of file diff --git a/doraemon/views/error/500.hbs b/doraemon/views/error/500.hbs new file mode 100644 index 0000000..c1a055e --- /dev/null +++ b/doraemon/views/error/500.hbs @@ -0,0 +1,11 @@ +<div class="wrapper screen"> + <div class="clear wrapper-404"> + <div class="left"><img src="http://static.yohobuy.com/images/v3/index/404.png"></div> + <div class="right right-tips"> + <p class="text1">服务器错误!</p> + <p class="text2"> + </p> + <p class="text3"><a href="http://www.yohobuy.com/product/new" class="button">浏览新品</a> <a href="http://www.yohobuy.com/" class="button">返回首页</a></p> + </div> + </div> +</div> \ No newline at end of file diff --git a/doraemon/views/layout.hbs b/doraemon/views/layout.hbs index 4f3768c..8bb631c 100644 --- a/doraemon/views/layout.hbs +++ b/doraemon/views/layout.hbs @@ -28,9 +28,11 @@ {{{body}}} {{/if}} {{> footer}} - {{#if devEnv}} + {{#if devEnv}} + <script src="//localhost:5002/libs.js"></script> <script src="//localhost:5002/{{module}}.{{page}}.js"></script> - {{^}} + {{^}} + <script src="//cdn.yoho.cn/yohobuy-node/{{version}}/libs.js"></script> <script src="//cdn.yoho.cn/yohobuy-node/{{version}}/{{module}}.{{page}}.js"></script> {{/if}} </body> diff --git a/doraemon/views/partial/404.hbs b/doraemon/views/partial/404.hbs deleted file mode 100644 index c672479..0000000 --- a/doraemon/views/partial/404.hbs +++ /dev/null @@ -1,15 +0,0 @@ -<div class="wrapper-404"> - <div class="main-error"> - <div class="left"> - <img src="http://static.yohobuy.com/images/v3/index/404.png"> - </div> - <div class="right"> - <p class="text1">很抱歉,您访问的页面不存在!</p> - <p class="text2"></p> - <p class="text3"> - <a href="http://www.yohobuy.com/product/new">浏览新品</a> - <a href="http://www.yohobuy.com/">返回首页</a> - </p> - </div> - </div> -</div> diff --git a/doraemon/views/partial/banner.hbs b/doraemon/views/partial/banner.hbs index e1c132b..7d99c19 100644 --- a/doraemon/views/partial/banner.hbs +++ b/doraemon/views/partial/banner.hbs @@ -3,11 +3,11 @@ <ul> {{# list}} <li style="{{#if bgColor}}background:{{bgColor}}{{/if}}"> - <a href="{{href}}" target= "_blank"> + <a href="{{url}}" target= "_blank"> {{#if @first}} - <img src="{{image img 1150 450}}"> + <img src="{{image src 1150 450}}"> {{^}} - <img class="lazy" data-original="{{image img 1150 450}}" alt=""> + <img class="lazy" data-original="{{image src 1150 450}}" alt=""> {{/if}} </a> {{# tips}} @@ -26,8 +26,8 @@ <ul class="clearfix"> {{# pagination}} <li> - <a href="{{href}}" target="_blank"></a> - <img src="{{image img 138 54}}" alt=""> + <a href="{{url}}" target="_blank"></a> + <img src="{{image src 138 54}}" alt=""> </li> {{/ pagination}} </ul> diff --git a/doraemon/views/partial/common/floor-header.hbs b/doraemon/views/partial/common/floor-header.hbs index a67f567..426538d 100644 --- a/doraemon/views/partial/common/floor-header.hbs +++ b/doraemon/views/partial/common/floor-header.hbs @@ -1,10 +1,12 @@ <div class="floor-header clearfix"> - <h2 class="floor-title">{{name}}</h2> + {{# name}} + <h2 class="floor-title">{{.}}</h2> + {{/ name}} {{#if navs}} <ul class="header-navs"> {{# navs}} <li data-classify="{{id}}"> - <a target="_blank" href="{{href}}">{{name}}</a> + <a target="_blank" href="{{url}}">{{name}}</a> </li> {{/ navs}} </ul> diff --git a/doraemon/views/partial/common/foot-pager.hbs b/doraemon/views/partial/common/foot-pager.hbs new file mode 100644 index 0000000..6e7e3ef --- /dev/null +++ b/doraemon/views/partial/common/foot-pager.hbs @@ -0,0 +1,27 @@ +{{# footPager}} + <div class="foot-pager clearfix"> + <span class="total"> + {{# tip}} + {{#if totalText}} + {{totalText}} + {{^}} + {{start}} - {{end}} / 共{{total}}件商品 + {{/if}} + {{/ tip}} + </span> + + <div class="pager"> + {{# prePage}} + <a href="{{url}}" title="上一页">上一页<span class="iconfont"></span></a> + {{/ prePage}} + + {{# pages}} + <a{{#if url}} href="{{url}}"{{/if}}{{#if cur}} class="cur"{{/if}}>{{num}}</a> + {{/ pages}} + + {{# nextPage}} + <a href="{{url}}" title="下一页">下一页<span class="iconfont"></span></a> + {{/ nextPage}} + </div> + </div> +{{/ footPager}} \ No newline at end of file diff --git a/doraemon/views/partial/common/slide-banner.hbs b/doraemon/views/partial/common/slide-banner.hbs index a6dd004..0353522 100644 --- a/doraemon/views/partial/common/slide-banner.hbs +++ b/doraemon/views/partial/common/slide-banner.hbs @@ -1,37 +1,29 @@ -<div id="slider" class="slide-container {{#if pagination}}slide-thumb-container{{/if}}"> - <div class="slide-wrapper"> - <ul> - {{# list}} - <li style="{{#if bgColor}}background:{{bgColor}}{{/if}}"> - <a href="{{href}}" target= "_blank"> - {{#if @first}} - <img src="{{image img 1150 450}}" style="height: 450px;width: 1150px"> - {{^}} - <img class="lazy" data-original="{{image img 1150 450}}" style="height: 450px;width: 1150px" alt=""> +{{#topBanner}} + <div id="slider" class="slide-container {{#if pagination}}slide-thumb-container{{/if}}"> + <div class="slide-wrapper"> + <ul> + {{# list}} + <li class="banner-img" style="background: {{bgColor}} url({{image img 1150 450}}) no-repeat top center;"> + {{#if href}} + <a href="{{href}}" target= "_blank"></a> {{/if}} - </a> - {{# tips}} - <div class="slide-tips"> - <div class="g-mark"></div> - <p>{{.}}</p> - </div> - {{/ tips}} - </li> - {{/ list}} - </ul> - </div> - - {{#if pagination}} - <div class="thumb-pagination"> - <ul class="clearfix"> - {{# pagination}} - <li> - <a href="{{href}}" target="_blank"></a> - <img src="{{img}}" alt=""> </li> - {{/ pagination}} + {{/ list}} </ul> </div> - {{/if}} -</div> -<div class="slide-container-placeholder {{#if pagination}}slide-thumb-container-placeholder{{/if}}"></div> + + {{#if pagination}} + <div class="thumb-pagination"> + <ul class="clearfix"> + {{# pagination}} + <li> + <a href="{{href}}" target="_blank"></a> + <img src="{{img}}" alt=""> + </li> + {{/ pagination}} + </ul> + </div> + {{/if}} + </div> + <div class="slide-container-placeholder {{#if pagination}}slide-thumb-container-placeholder{{/if}}"></div> +{{/topBanner}} diff --git a/doraemon/views/partial/header.hbs b/doraemon/views/partial/header.hbs index 1fb561f..74737c3 100644 --- a/doraemon/views/partial/header.hbs +++ b/doraemon/views/partial/header.hbs @@ -1,5 +1,4 @@ {{# headerData}} - {{log this}} <div class="yoho-header {{headType}}"> <div class="tool-wrapper clearfix"> <div class="center-content"> @@ -69,13 +68,13 @@ {{# navbars}} <li {{#if active}} class="cure"{{/if}}{{#if ico}} style="background: url({{image ico 54 32}}) no-repeat center center"{{/if}}> {{#if ico}} - <a href="{{link}}" class="menu-ico"></a> + <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}} class="menu-ico"></a> {{^}} <h3 class="name-cn"> - <a href="{{link}}">{{cn}}</a> + <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}>{{cn}}</a> </h3> <h3 class="name-en"> - <a href="{{link}}">{{en}}</a> + <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}>{{en}}</a> </h3> {{/if}} </li> diff --git a/doraemon/views/partial/product/filter-box.hbs b/doraemon/views/partial/product/filter-box.hbs index 844c6ca..dbd2948 100644 --- a/doraemon/views/partial/product/filter-box.hbs +++ b/doraemon/views/partial/product/filter-box.hbs @@ -1,23 +1,24 @@ <div class="filter-box"> {{# checkedConditions}} - <div class="checked-conditions section"> - <span class="title">已选条件:</span> - - <div class="attr-content clearfix"> - {{#each conditions}} - <a class="tag" href="{{href}}"> - {{#if name}} - {{name}} - {{^}} - <i class="color-block" style="background: {{color}}"></i> - {{/if}} - <i class="close iconfont"></i> - </a> - {{/each}} + {{#if conditions}} + <div class="checked-conditions section"> + <span class="title">已选条件:</span> + <div class="attr-content clearfix"> + {{#each conditions}} + <a class="tag" href="{{href}}"> + {{#if name}} + {{name}} + {{^}} + <i class="color-block" style="background: {{color}}"></i> + {{/if}} + <i class="close iconfont"></i> + </a> + {{/each}} - <a class="clear-checked" href="{{clearUrl}}">清空筛选条件</a> + <a class="clear-checked" href="{{clearUrl}}">清空筛选条件</a> + </div> </div> - </div> + {{/if}} {{/ checkedConditions}} {{#if channel}} @@ -111,7 +112,7 @@ {{#if showMore}} <span id="brand-more" class="brand-more"> <em>更多</em> - <i class="iconfont"></i> + <i class="iconfont"></i> </span> {{/if}} @@ -241,7 +242,7 @@ <li class="attr{{#unless sub}} no-sub{{/unless}}"> {{#if sub}} {{name}} - <span class="iconfont"></span> + <span class="iconfont"></span> <div class="senior-up-icon"></div> {{^}} diff --git a/doraemon/views/partial/product/good.hbs b/doraemon/views/partial/product/good.hbs index 0961cb9..4ebf479 100644 --- a/doraemon/views/partial/product/good.hbs +++ b/doraemon/views/partial/product/good.hbs @@ -32,32 +32,43 @@ <p class="few-tag">即将售罄</p> {{/ isFew}} + {{#if isSaleOut}} + <a class="sale-out" href="{{url}}"> + <span class="sale-out-tip">已抢光</span> + </a> + {{/if}} + {{#if showColBtn}} <span class="col-btn iconfont{{#if coled}} coled{{/if}}"></span> {{/if}} </div> <div class="good-detail-text"> <a href="{{url}}" target="_blank">{{{productName}}}</a> - {{!-- {{# brandName}} --}} - <p class="brand"> - <a href="{{brandUrl}}">{{brandName}}</a> - </p> - {{!-- {{/ brandName}} --}} - <p class="price"> + <p class="brand"> + <a href="{{brandUrl}}">{{brandName}}</a> + </p> + <p class="price {{#if vip}}vip-center{{/if}}"> {{# marketPrice}} - <span class="market-price">¥{{.}}</span> + <span class="market-price">¥{{round . 2}}</span> {{/ marketPrice}} - <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}"> - ¥{{salesPrice}} + {{# salesPrice}} + <span class="sale-price {{#unless marketPrice}}prime-cost{{/unless}}"> + ¥{{round . 2}} </span> - {{#vip}}<span class="vip-tag"> VIP </span><strong>更优惠</strong>{{/vip}} - {{#vip1}}<span class="vip-1"> </span><strong>{{vipPrice}}</strong>{{/vip1}} - {{#vip2}}<span class="vip-2"> </span><strong>{{vipPrice}}</strong>{{/vip2}} - {{#vip3}}<span class="vip-3"> </span><strong>{{vipPrice}}</strong>{{/vip3}} + {{/ salesPrice}} + + {{# discount}} + <span class="discount">{{.}}折</span> + {{/ discount}} + + {{#vip}}<span class="vip-tag vip-span"><span> VIP </span></span><strong>更优惠</strong>{{/vip}} + {{#vip1}}<span class="vip-1 vip-span"></span>{{/vip1}} + {{#vip2}}<span class="vip-2 vip-span"></span>{{/vip2}} + {{#vip3}}<span class="vip-3 vip-span"></span>{{/vip3}} </p> - <div class="goodsList hide"> + <div class="hideList hide"> {{#goodsList}} - <div class="list" imgUrl = "{{image imagesUrl 220 300}}" url = "{{goodsId}}" cover = "{{cover1}}"></div> + <li data-src="{{image imagesUrl 235 314}}" data-url="{{../url}}"></li> {{/goodsList}} </div> </div> diff --git a/doraemon/views/partial/product/left-content.hbs b/doraemon/views/partial/product/left-content.hbs index a79aebe..40c9c45 100644 --- a/doraemon/views/partial/product/left-content.hbs +++ b/doraemon/views/partial/product/left-content.hbs @@ -45,7 +45,6 @@ <h2> <a href="{{href}}" title="{{name}}"> {{name}} - <span>{{updateNum}}</span> </a> </h2> </li> diff --git a/doraemon/views/partial/product/standard-content.hbs b/doraemon/views/partial/product/standard-content.hbs index 5550f3c..60fecdf 100644 --- a/doraemon/views/partial/product/standard-content.hbs +++ b/doraemon/views/partial/product/standard-content.hbs @@ -98,13 +98,7 @@ </div> </div> - <div class="product-pager clearfix"> - <span class="total">{{opts.start}} - {{opts.end}} / 共{{totalCount}}件商品</span> - - <div class="pager"> - {{{pager}}} - </div> - </div> + {{> common/foot-pager}} {{^}} {{> product/no-result}} {{/if}} diff --git a/library/api.js b/library/api.js index 1879c2e..4fed6aa 100644 --- a/library/api.js +++ b/library/api.js @@ -12,11 +12,35 @@ const _ = require('lodash'); const log = require('./logger'); const cache = require('./cache'); const Timer = require('./timer'); +const sign = require('./sign'); const config = require('../config/common'); const api = config.domains.api; const serviceApi = config.domains.service; const searchApi = config.domains.search; +// 错误返回 +const API_BAD_RETSULT = { + code: 500, + message: 'API result is not JSON string or null.' +}; + +// 调用失败 +const API_CALL_FAIL = { + code: 500, + message: 'Call API failed.' +}; + +// all 方法错误的传参 +const API_ALL_METHOD_ERROR = 'the parameters of api all method should be Array!'; + +// 获取缓存数据失败 +const SLAVE_CACHE_FAIL = 'get slave cache fail'; +const MASTER_CACHE_FAIL = 'get master cache fail'; + +// 获取缓存数据成功 +const SLAVE_CACHE_SUCCESS = 'get slave cache success'; +const MASTER_CACHE_SUCCESS = 'get master cache success'; + class Http { constructor(baseUrl) { @@ -31,29 +55,50 @@ class Http { } /** + * 处理接口返回状态码 + */ + _handleDataCode(data, code, url) { + let result = {}; + + code = code || 200; + if (_.toNumber(data.code) === _.toNumber(code)) { + _.unset(data, 'code'); + _.forEach(data, (value, key) => { + _.set(result, key, value); + }); + } else { + log.error(`API: ${url} return code not ${code}`); + } + return result; + } + + + /** * 调用接口 */ - _requestFromAPI(options, cacheOption, reqId) { + _requestFromAPI(options, param, reqId) { const timer = new Timer(); const method = options.method || 'get'; - log.info(`${method} api: ${options.url}?${qs.stringify(options.qs)}`); timer.put('getApi');// 统计时间开始 return rp(options).then((result) => { const duration = timer.put('getApi');// 统计时间结束 - // 数据校验,去掉了code验证有些接口没有提供这些 + // 数据校验 if (!result) { - log.error('error: 接口返回的数据结构错误,非 JSON'); - return Promise.reject({ - statusCode: 500, - message: '接口返回内容格式错误' - }); + log.error(`error: ${API_BAD_RETSULT.message}`); + return Promise.reject(API_BAD_RETSULT); + } + + // 处理返回数据状态码 + if (param && param.code) { + result = this._handleDataCode(result, param.code, options.url); } // 写缓存, 否则返回 Slave 缓存服务器的数据 - if (config.useCache && cacheOption) { - const cacheTime = _.isNumber(cacheOption) ? cacheOption : 60; + if (options.method === 'get' && config.useCache && + param && param.cache) { + const cacheTime = _.isNumber(param.cache) ? param.cache : 60; const catchErr = (err) => { log.error(`cache: ${err.toString()}`); }; @@ -63,7 +108,7 @@ class Http { cache.setSlave(`apiCache:${reqId}`, result, 86400).catch(catchErr); // 二级缓存存储一天 } - log.info(`get api success: use: ${duration}ms`); + log.info(`use: ${duration}ms for ${method} api: ${options.url}?${qs.stringify(options.qs)} `); return result; }).catch((err)=> { const duration = timer.put('getApi');// 统计时间结束 @@ -72,13 +117,10 @@ class Http { log.error(`API: ${options.url}?${qs.stringify(options.qs)}`); // 使用缓存的时候,读取二级缓存 - if (config.useCache && cacheOption) { + if (config.useCache && param && param.cache) { return this._requestFromCache(options, true); } - return Promise.resolve({ - code: 500, - message: '接口调用失败' - }); + return Promise.resolve(API_CALL_FAIL); }); } @@ -86,9 +128,10 @@ class Http { * 读取缓存 * @param {[object]} options * @param {[boolean]} slave true: 读取二级缓存 + * @param {[object]} param 请求API处理参数 * @return {[type]} */ - _requestFromCache(options, slave) { + _requestFromCache(options, slave, param) { const reqId = this._getReqId(options); const getCache = slave ? cache.getFromSlave : cache.get; @@ -98,27 +141,24 @@ class Http { try { result = JSON.parse(result); } finally { - log.info(slave ? 'get slave cache success' : 'get master cache success'); + log.info(slave ? SLAVE_CACHE_SUCCESS : MASTER_CACHE_SUCCESS); return result; } } // 读取缓存失败,并且不是二级缓存的时候,调用 API if (!slave) { - return this._requestFromAPI(options, true, reqId); + return this._requestFromAPI(options, param, reqId); } }).catch(() => { - log.error(slave ? 'get slave cache fail' : 'get master cache fail'); + log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL); // 读取缓存失败,并且不是二级缓存的时候,调用 API if (!slave) { - return this._requestFromAPI(options, true, reqId); + return this._requestFromAPI(options, param, reqId); } - return Promise.resolve({ - code: 500, - message: '接口调用失败' - }); + return Promise.resolve(API_CALL_FAIL); }); } @@ -126,47 +166,50 @@ class Http { * 使用 get 请求获取接口 * @param {[string]} url * @param {[object]} data - * @param {[bool or number]} cacheOption 使用数字时,数字表示缓存时间 + * @param {[object]} param 数据处理参数 * @return {[type]} */ - get(url, data, cacheOption) { + get(url, data, param) { const options = { url: `${this.ApiUrl}${url}`, - qs: data, + qs: data.client_secret ? data : sign.apiSign(data), json: true, + gzip: true, timeout: 3000 }; // 从缓存获取数据 - if (config.useCache && cacheOption) { - return this._requestFromCache(options); + if (config.useCache && param && param.catch) { + return this._requestFromCache(options, false, param); } - return this._requestFromAPI(options, cacheOption); + return this._requestFromAPI(options, param); } /** - * post - * @param url String - * @param data Obejct + * 使用 post 请求获取接口 + * @param {[string]} url + * @param {[object]} data + * @param {[object]} param 数据处理参数 + * @return {[type]} */ - post(url, data) { + post(url, data, param) { const options = { url: `${this.ApiUrl}${url}`, - form: data, + form: data.client_secret ? data : sign.apiSign(data), method: 'post', json: true, timeout: 3000 }; - return this._requestFromAPI(options); + return this._requestFromAPI(options, param); } all(list) { if (_.isArray(list)) { return Promise.all(list); } else { - return Promise.reject(Error('the parameters of api all method should be Array!')); + return Promise.reject(Error(API_ALL_METHOD_ERROR)); } } } diff --git a/library/helpers.js b/library/helpers.js index a866c1a..649b786 100644 --- a/library/helpers.js +++ b/library/helpers.js @@ -30,8 +30,8 @@ exports.image = (url, width, height, mode) => { * @param {[object]} options 上下文环境,一般不手动传 * @return {[boolen]} */ -exports.ifEqualTo = (v1, v2, _options) => { - if (v1 === v2) { +exports.isEqual = (v1, v2, _options) => { + if (_.isEqual(v1, v2)) { return _options.fn(this); // eslint-disable-line } @@ -73,6 +73,39 @@ exports.urlFormat = (uri, qs, module) => { return url; }; +/** + * 站内地址格式化 + * @param {[string]} uri 路径 + * @param {[object]} qs 查询字符串 + * @param {[string]} module 模块 + * @return {[string]} + */ +exports.fakeUrlFormat = (uri, qs, module) => { + const subDomain = 'http://localhost:6001'; + const subName = { + default: subDomain, + guang: `${subDomain}`, + list: `${subDomain}`, + search: `${subDomain}`, + huodong: `${subDomain}`, + index: subDomain + }; + let url; + + module = module || 'default'; + if (subName[module]) { + url = subName[module]; + } else { + url = `//${module}${subDomain}`; // 规则没匹配到就把模块当作子域名 + } + + url += uri; + if (qs) { + url += `?${querystring.stringify(qs)}`; + } + + return url; +}; /** * 大写转小写处理 @@ -93,6 +126,18 @@ exports.upperCase = (str) => { }; /** + * 四舍五入 + * @param {[type]} num 数字 + * @param {[type]} precision 精度 + * @return {[type]} + */ +exports.round = (num, precision) => { + precision = _.isNumber(precision) ? precision : 2; + num = _.isInteger(num) ? (+num).toFixed(precision) : _.round(num, precision); + return num; +}; + +/** * 时间格式化 * @param format 格式化token @see{http://momentjs.cn/docs/#/displaying/format/} * @param date 日期或者数字 @@ -152,24 +197,135 @@ exports.dateDiffFormat = (format, diff, type) => { }; /** - * 强行获取原图片 - * @param imageUrl + * 验证邮箱是否合法 + * + * @param string email + * @return boolean + */ +exports.verifyEmail = (email) => { + if (!email) { + return false; + } + + const emailRegExp = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; + + return emailRegExp.test(email); +}; + +/** + * 各国手机号规则 + */ +function areaMobileVerify(phone, area) { + area = area || '86'; + phone = phone.trim(); + + let verify = { + 86: { + name: '中国', + match: /^1[3|4|5|8|7][0-9]{9}$/.test(phone) + }, + 852: { + name: '中国香港', + match: /^[9|6|5][0-9]{7}$/.test(phone) + }, + 853: { + name: '中国澳门', + match: /^[0-9]{8}$/.test(phone) + }, + 886: { + name: '中国台湾', + match: /^[0-9]{10}$/.test(phone) + }, + 65: { + name: '新加坡', + match: /^[9|8][0-9]{7}$/.test(phone) + }, + 60: { + name: '马来西亚', + match: /^1[1|2|3|4|6|7|9][0-9]{8}$/.test(phone) + }, + 1: { + name: '加拿大&美国', + match: /^[0-9]{10}$/.test(phone) + }, + 82: { + name: '韩国', + match: /^01[0-9]{9}$/.test(phone) + }, + 44: { + name: '英国', + match: /^7[7|8|9][0-9]{8}$/.test(phone) + }, + 81: { + name: '日本', + match: /^0[9|8|7][0-9]{9}$/.test(phone) + }, + 61: { + name: '澳大利亚', + match: /^[0-9]{11}$/.test(phone) + } + }; + + if (verify[area]) { + return verify[area].match; + } else { + return false; + } +} + +/** + * 验证国际手机号是否合法 + */ +exports.isAreaMobile = (areaMobile) => { + if (!areaMobile) { + return false; + } + + let mobile = { + area: '86', + phone: '' + }; + + let splitMobile = areaMobile.split('-'); + + if (splitMobile.length === 2) { + mobile.area = splitMobile[0]; + mobile.phone = splitMobile[1]; + } else { + mobile.phone = splitMobile[0]; + } + + return areaMobileVerify(mobile.phone, mobile.area); +}; + +/** + * 验证手机是否合法 */ -exports.getForceSourceUrl = (imageUrl) => { - return _.head(imageUrl.split('?')); +exports.verifyMobile = (phone) => { + if (!phone) { + return false; + } + + return /^1[3|4|5|8|7][0-9]{9}$/.test(phone); }; /** - * 根据skc获取商品链接 - * @param pid - * @param goods_id - * @param cn_alphabet + * 组合国际手机号 */ -exports.getUrlBySkc = (pid, goods_id, cn_alphabet) => { +exports.makeAreaMobile = (area, mobile) => { + if (!area || area === '86') { + return mobile; + } + + return `${area}-${mobile}`; +}; - if (!cn_alphabet) { - cn_alphabet = 'goods'; +exports.isPassword = (pwd) => { + if (!pwd) { + return false; } - return 'http://item.yohobuy.com/product/pro_' + pid + '_' + goods_id + '/' + cn_alphabet + '.html'; + let pwdRegexp = /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/; + + return pwdRegexp.test(_.trim(pwd)); }; diff --git a/library/sign.js b/library/sign.js index 6a03e1c..a226fd1 100644 --- a/library/sign.js +++ b/library/sign.js @@ -56,14 +56,14 @@ exports.apiSign = (params) => { client_type: clientType, private_key: privateKey[clientType], app_version: '3.8.2', - os_version: 'yohobuy:h5', + os_version: 'yohobuy:web', screen_size: '720x1280', v: '7' }, params)); /* eslint-enable */ sign = Object.assign(sign, { - client_secret: makeSign(sign) // eslint-disable-line camelcase + client_secret: makeSign(sign) }); delete sign.private_key; return sign; @@ -71,8 +71,7 @@ exports.apiSign = (params) => { // 检查签名,APP 访问 H5 页面的时候需要检查 exports.checkSign = (params) => { - const // eslint-disable-line camelcase - clientSecret = params.client_secret; + const clientSecret = params.client_secret; let sortedParams; @@ -82,7 +81,7 @@ exports.checkSign = (params) => { delete params.debug_data; delete params['/api']; - params.private_key = privateKey[params.client_type]; // eslint-disable-line camelcase + params.private_key = privateKey[params.client_type]; sortedParams = packageSort(params); return clientSecret === makeSign(sortedParams); @@ -94,3 +93,7 @@ exports.webSign = (params) => { return params.key === md5(md5(webPrivateKey) + params.uid); }; + +exports.makeToken = (string) => { + return md5(md5(string + '#@!@#')); +}; diff --git a/package.json b/package.json index 76b357e..1e86567 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yohobuy-node", - "version": "0.0.1", + "version": "0.1.0", "private": true, "description": "A New Yohobuy Project With Express", "repository": { @@ -9,14 +9,14 @@ }, "scripts": { "start": "node app.js", - "dev": "node_modules/.bin/nodemon -e js,hbs -i public/ app.js", + "dev": "nodemon -e js,hbs -i public/ app.js", "online": "NODE_ENV=\"production\" node app.js", - "debug": "DEBUG=\"express:*\" node_modules/.bin/nodemon -e js,hbs -i public/ app.js", - "lint-js": "./node_modules/.bin/eslint -c .eslintrc --cache --fix .", - "lint-css": "./node_modules/.bin/stylelint --config .stylelintrc public/scss/**/*.css", + "debug": "DEBUG=\"express:*\" nodemon -e js,hbs -i public/ app.js", + "lint-js": "eslint -c .eslintrc --cache --fix .", + "lint-css": "stylelint --config .stylelintrc public/scss/**/*.css", "precommit": "node lint.js", - "test": "NODE_ENV=test ./node_modules/.bin/nyc ./node_modules/.bin/ava", - "posttest": "./node_modules/.bin/nyc report --reporter=html" + "test": "NODE_ENV=test nyc ./node_modules/.bin/ava", + "posttest": "nyc report --reporter=html" }, "ava": { "tap": true, @@ -33,30 +33,33 @@ "dependencies": { "bluebird": "^3.4.0", "body-parser": "^1.15.0", - "cookie-parser": "^1.4.1", + "connect-memcached": "^0.2.0", + "cookie-parser": "^1.4.3", "express": "^4.13.1", "express-handlebars": "^3.0.0", + "express-session": "^1.13.0", "influxdb-winston": "^1.0.1", - "lodash": "^4.12.0", + "lodash": "^4.13.1", "md5": "^2.1.0", "memcached": "^2.2.2", "moment": "^2.13.0", "morgan": "^1.7.0", "oneapm": "^1.2.20", + "passport": "^0.3.2", + "passport-weixin": "^0.1.0", "request-promise": "^3.0.0", "serve-favicon": "^2.3.0", "uuid": "^2.0.2", "winston": "^2.2.0", - "winston-daily-rotate-file": "^1.0.1", - "yoho-connect-memcached": "^1.0.3", - "yoho-express-session": "^1.0.2" + "winston-daily-rotate-file": "^1.1.4", + "yoho-node-lib": "0.0.7" }, "devDependencies": { "autoprefixer": "^6.3.6", - "ava": "^0.14.0", + "ava": "^0.15.2", "babel-preset-es2015": "^6.9.0", "babel-register": "^6.9.0", - "eslint": "^2.10.2", + "eslint": "^2.12.0", "eslint-config-yoho": "^1.0.1", "gulp": "^3.9.1", "gulp-cssnano": "^2.1.2", @@ -65,17 +68,16 @@ "gulp-sourcemaps": "^2.0.0-alpha", "gulp-util": "^3.0.7", "husky": "^0.11.4", - "mocha": "^2.4.5", "nodemon": "1.9.2", - "nyc": "^6.4.3", + "nyc": "^6.6.1", "postcss-assets": "^4.0.1", - "postcss-cachebuster": "^0.1.2", + "postcss-cachebuster": "^0.1.3", "postcss-calc": "^5.2.1", "postcss-center": "^1.0.0", "postcss-clearfix": "^1.0.0", "postcss-crip": "^2.0.0", "postcss-opacity": "^3.0.0", - "postcss-position": "^0.4.0", + "postcss-position": "^0.5.0", "postcss-pxtorem": "^3.3.1", "postcss-short": "^1.4.0", "postcss-sprites": "^3.1.2", @@ -83,17 +85,14 @@ "precss": "^1.4.0", "rewire": "^2.5.1", "shelljs": "^0.7.0", - "stylelint": "^6.4.1", - "stylelint-config-yoho": "^1.2.3", - "webpack": "^1.13.0", + "stylelint": "^6.6.0", + "stylelint-config-yoho": "^1.2.4", + "webpack": "^1.13.1", "webpack-dev-server": "^1.14.1", "webpack-stream": "^3.1.0", - "yoho-fastclick": "^1.0.6", - "yoho-hammer": "^2.0.7", "yoho-handlebars": "^4.0.5", "yoho-jquery": "^1.12.4", "yoho-jquery-lazyload": "^1.9.7", - "yoho-slider": "0.0.2", - "yoho-swiper": "^3.3.1" + "yoho-slider": "0.0.2" } } diff --git a/public/dist/yohobuy-node/0.0.1/activity.special.js b/public/dist/yohobuy-node/0.0.1/activity.special.js deleted file mode 100644 index c5845f5..0000000 --- a/public/dist/yohobuy-node/0.0.1/activity.special.js +++ /dev/null @@ -1,54 +0,0 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(1)},function(e,t,n){function r(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function i(e,t,n){var r,i,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),r=n.path?"; path="+n.path:"",i=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,r,i,o].join(""))}function o(){var e,t=r("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=r("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},r=window.location.search,i=r?decodeURIComponent(r).slice(1).split("&"):[];for(t=0;t<i.length;t++)e=i[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,r,i){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=i,e[i]=function(){e[i].p=arguments},o.async=1,o.src=r,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=r,window.setCookie=i,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var r,i;/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ -!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ee.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(He)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(i){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,r){if(je(e)){var i,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(r||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(r?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[ve.camelCase(t)])):i=o,i}}function m(e,t,n){if(je(e)){var r,i,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in r?t=[t]:(t=ve.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!d(r):!ve.isEmptyObject(r))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&$e.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,i=n[1]?u+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=u,r.end=i)),i}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||ve.nodeName(r,t)?o.push(r):ve.merge(o,y(r,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,r=0;null!=(n=e[r]);r++)ve._data(n,"globalEval",!t||ve._data(t[r],"globalEval"))}function x(e){ze.test(e.type)&&(e.defaultChecked=e.checked)}function k(e,t,n,r,i){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(r&&ve.inArray(a,r)>-1)i&&i.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function w(){return!0}function S(){return!1}function C(){try{return se.activeElement}catch(e){}}function _(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)_(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)),i===!1)i=S;else if(!i)return e;return 1===o&&(a=i,i=function(e){return ve().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,i,r,n)})}function A(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function E(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,r,i,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)ve.event.add(t,n,s[n][r])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){i=ve._data(t);for(r in i.events)ve.removeEvent(t,r,i.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(E(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&ze.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,r){t=ce.apply([],t);var i,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(i){var o=e.eq(i);f&&(t[0]=d.call(this,i,o.html())),L(o,t,n,r)});if(p&&(c=k(t,e[0].ownerDocument,!1,e,r),i=c.firstChild,1===c.childNodes.length&&(c=i),i||r)){for(s=ve.map(y(c,"script"),E),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=i=null}return e}function D(e,t,n){for(var r,i=t?ve.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ve.cleanData(y(r)),r.parentNode&&(n&&ve.contains(r.ownerDocument,r)&&b(y(r,"script")),r.parentNode.removeChild(r));return e}function H(e,t){var n=ve(t.createElement(e)).appendTo(t.body),r=ve.css(n[0],"display");return n.detach(),r}function O(e){var t=se,n=dt[e];return n||(n=H(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=H(e,t),ht.detach()),dt[e]=n),n}function I(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function j(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Et.length;n--;)if(e=Et[n]+t,e in Tt)return e}function B(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=ve._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&Fe(r)&&(o[a]=ve._data(r,"olddisplay",O(r.nodeName)))):(i=Fe(r),(n&&"none"!==n||!i)&&ve._data(r,"olddisplay",i?n:ve.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var r=Ct.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function R(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,i)),r?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,i)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,i))):(a+=ve.css(e,"padding"+qe[o],!0,i),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,i)));return a}function $(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=bt(e,t,o),(0>i||null==i)&&(i=e.style[t]),mt.test(i))return i;r=a&&(me.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+R(e,t,n||(a?"border":"content"),r,o)+"px"}function q(e,t,n,r,i){return new q.prototype.init(e,t,n,r,i)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function W(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=qe[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e,t,n){for(var r,i=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=i.length;a>o;o++)if(r=i[o].call(n,t,e))return r}function U(e,t,n){var r,i,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||O(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==O(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Lt.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!m||void 0===m[r])continue;f=!0}h[r]=m&&m[r]||ve.style(e,r)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?O(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(r in h)a=z(f?m[r]:0,r,p),r in m||(m[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function V(e,t){var n,r,i,o,a;for(n in e)if(r=ve.camelCase(n),i=t[r],o=e[n],ve.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=ve.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function X(e,t,n){var r,i,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),r=n/c.duration||0,o=1-r,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var r=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(r=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(r.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(r.stop,r)),r;return ve.map(u,z,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(He)||[];if(ve.isFunction(n))for(;r=o[i++];)"+"===r.charAt(0)?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Y(e,t,n,r){function i(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,r);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),i(c),!1)}),l}var o={},a=e===nn;return i(t.dataTypes[0])||!o["*"]&&i("*")}function Q(e,t){var n,r,i=ve.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(a in s)if(s[a]&&s[a].test(i)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}r||(r=a)}o=o||r}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,r){var i,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(i in c)if(s=i.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[i]:c[i]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,r){var i;if(ve.isArray(t))ve.each(t,function(t,i){n||ln.test(e)?r(e,i):ne(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==ve.type(t))r(e,t);else for(i in t)ne(e+"["+i+"]",t[i],n,r)}function re(){try{return new n.XMLHttpRequest}catch(e){}}function ie(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,ke=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[r]=ve.extend(c,o,n)):void 0!==n&&(a[r]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,ke)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(a(e))for(n=e.length;n>r&&t.call(e[r],r,e[r])!==!1;r++);else for(r in e)if(t.call(e[r],r,e[r])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(pe)return pe.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;a>o;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(a(e))for(r=e.length;r>o;o++)i=t(e[o],o,n),null!=i&&s.push(i);else for(o in e)i=t(e[o],o,n),null!=i&&s.push(i);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(i=e[t],t=e,e=i),ve.isFunction(e)?(n=le.call(arguments,2),r=function(){return e.apply(t||this,n.concat(le.call(arguments)))},r.guid=e.guid=e.guid||ve.guid++,r):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var we=/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -function(e){function t(e,t,n,r){var i,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!r&&((t?t.ownerDocument||t:$)!==D&&L(t),t=t||D,O)){if(11!==m&&(c=ve.exec(e)))if(i=c[1]){if(9===m){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&M(t,a)&&a.id===i)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((i=c[3])&&k.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(i)),n}if(k.qsa&&!U[e+" "]&&(!I||!I.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=R),p=_(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===R&&t.removeAttribute("id")}}}return E(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[R]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=F++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(c=t[R]||(t[R]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[r])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[r]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[R]&&(i=v(i)),o&&!o[R]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,h,e,s,l),b=n?o||(r?e:f||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,d),i(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(r,p):h[u])>-1&&(r[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,r){var i=!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r));return t=null,i}];i>s;s++)if(n=w.relative[e[s].type])u=[d(f(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[R]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&h(e))}u.push(n)}return f(u)}function b(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,l,c){var u,p,h,d=0,f="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,k=b.length;for(c&&(T=a===D||a||c);f!==k&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!O);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}i&&((u=!h&&u)&&d--,r&&m.push(u))}if(d+=f,i&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(r){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!r&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return i?r(a):a}var x,k,w,S,C,_,A,E,T,N,P,L,D,H,O,I,j,B,M,R="sizzle"+1*new Date,$=e.document,q=0,F=0,W=n(),z=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+re+"$"),de={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),ke=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=function(){L()};try{G.apply(J=Z.call($.childNodes),$.childNodes),J[$.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}k=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:$;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,H=D.documentElement,O=!C(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),k.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),k.getElementsByTagName=i(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),k.getElementsByClassName=ge.test(D.getElementsByClassName),k.getById=i(function(e){return H.appendChild(e).id=R,!D.getElementsByName||!D.getElementsByName(R).length}),k.getById?(w.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&O){var n=t.getElementById(e);return n?[n]:[]}},w.filter.ID=function(e){var t=e.replace(xe,ke);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(xe,ke);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=k.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):k.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=k.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&O?t.getElementsByClassName(e):void 0},j=[],I=[],(k.qsa=ge.test(D.querySelectorAll))&&(i(function(e){H.appendChild(e).innerHTML="<a id='"+R+"'></a><select id='"+R+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||I.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+R+"-]").length||I.push("~="),e.querySelectorAll(":checked").length||I.push(":checked"),e.querySelectorAll("a#"+R+"+*").length||I.push(".#.+[+~]")}),i(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&I.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),I.push(",.*:")})),(k.matchesSelector=ge.test(B=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&i(function(e){k.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),j.push("!=",oe)}),I=I.length&&new RegExp(I.join("|")),j=j.length&&new RegExp(j.join("|")),t=ge.test(H.compareDocumentPosition),M=t||ge.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!k.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===$&&M($,e)?-1:t===D||t.ownerDocument===$&&M($,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!i||!o)return e===D?-1:t===D?1:i?-1:o?1:N?ee(N,e)-ee(N,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===$?-1:l[r]===$?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),k.matchesSelector&&O&&!U[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var r=B.call(e,n);if(r||k.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=w.attrHandle[t.toLowerCase()],r=n&&K.call(w.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==r?r:k.attributes||!O?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(P=!k.detectDuplicates,N=!k.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return N=null,e},S=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=S(t);return n},w=t.selectors={cacheLength:50,createPseudo:r,match:de,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(xe,ke),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,ke),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=_(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(xe,ke).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[R]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=A(e.replace(se,"$1"));return i[R]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,ke),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:r(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,ke).toLowerCase(),function(t){var n;do if(n=O?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=l(x);return p.prototype=w.filters=w.pseudos,w.setFilters=new p,_=t.tokenize=function(e,n){var r,i,o,a,s,l,c,u=z[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=w.preFilter;s;){r&&!(i=le.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ce.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=de[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,l).slice(0)},A=t.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=_(e)),n=t.length;n--;)o=y(t[n]),o[R]?r.push(o):i.push(o);o=U(e,b(i,r)),o.selector=e}return o},E=t.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,p=!r&&_(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&k.getById&&9===t.nodeType&&O&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(xe,ke),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=de.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(xe,ke),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&h(o),!e)return G.apply(n,r),n;break}}return(c||A(e,p))(r,t,!O,n,!t||ye.test(e)&&u(t.parentNode)||t),n},k.sortStable=R.split("").sort(V).join("")===R,k.detectDuplicates=!!P,L(),k.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),k.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(n);ve.find=we,ve.expr=we.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=we.uniqueSort,ve.text=we.getText,ve.isXMLDoc=we.isXML,ve.contains=we.contains;var Se=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&ve(e).is(n))break;r.push(e)}return r},Ce=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},_e=ve.expr.match.needsContext,Ae=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ee=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ve.find.matchesSelector(r,e)?[r]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;i>t;t++)if(ve.contains(r[t],this))return!0}));for(t=0;i>t;t++)ve.find(e,r[t],n);return n=this.pushStack(i>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&_e.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Te,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ae.test(r[1])&&ve.isPlainObject(t))for(r in t)ve.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=se.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Te.find(e);this.length=1,this[0]=i}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=_e.test(e)||"string"!=typeof e?ve(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return Ce((e.parentNode||{}).firstChild,e)},children:function(e){return Ce(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,r){var i=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=ve.filter(r,i)),this.length>1&&(De[e]||(i=ve.uniqueSort(i)),Le.test(e)&&(i=i.reverse())),this.pushStack(i)}});var He=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,r,i,o=[],a=[],s=-1,l=function(){for(i=e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function r(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=!0,n||u.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,r):r}},i={};return r.pipe=r.then,ve.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?le.call(arguments):i,r===t?l.notifyWith(n,r):--s||l.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);a>i;i++)o[i]&&ve.isFunction(o[i].promise)?o[i].promise().progress(c(i,n,t)).done(c(i,r,o)).fail(l.reject):--s;return s||l.resolveWith(r,o),l.promise()}});var Oe;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(Oe.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!Oe)if(Oe=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(r){}t&&t.doScroll&&!function i(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(i,50)}u(),ve.ready()}}()}return Oe.promise(e)},ve.ready.promise();var Ie;for(Ie in ve(me))break;me.ownFirst="0"===Ie,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,r;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),r=se.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var je=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=ve.camelCase(r.slice(5)),h(o,r,i[r])));ve._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=ve._data(e,t),n&&(!r||ve.isArray(n)?r=ve._data(e,t,ve.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),r=n.length,i=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ve.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),r=se.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,$e=new RegExp("^(?:([+-])=|)("+Re+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},We=function(e,t,n,r,i,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){i=!0;for(s in n)We(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,ve.isFunction(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:c?t.call(e):l?t(e[0],n):o},ze=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,r=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(r.setAttribute(t,"t"),me[e]=r.attributes[t].expando===!1);r=null}(); -var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,i=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(He)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(i?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ve.expr.match.needsContext.test(i),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,r,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(He)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!i&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,r,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,r,i){var o,a,s,l,c,u,p,h=[r||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=r=r||se,3!==r.nodeType&&8!==r.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},i||!c.trigger||c.trigger.apply(r,t)!==!1)){if(!i&&!c.noBubble&&!ve.isWindow(r)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(r.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&je(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!i&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&je(r)&&a&&r[d]&&!ve.isWindow(r)){u=r[a],u&&(r[a]=null),ve.event.triggered=d;try{r[d]()}catch(m){}ve.event.triggered=void 0,u&&(r[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,r,i,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((ve.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(r=[],n=0;s>n;n++)o=t[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?ve(i,this).index(l)>-1:ve.find(i,this,null,[l]).length),r[i]&&r.push(o);r.length&&a.push({elem:l,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=et.test(i)?this.mouseHooks:Ze.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||se,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==C()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===C()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r="on"+t;e.detachEvent&&("undefined"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?w:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=w,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=w,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=w,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||ve.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=ve._data(r,t);i||r.addEventListener(e,n,!0),ve._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=ve._data(r,t)-1;i?ve._data(r,t,i):(r.removeEventListener(e,n,!0),ve._removeData(r,t))}}}),ve.fn.extend({on:function(e,t,n,r){return _(this,e,t,n,r)},one:function(e,t,n,r){return _(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ve(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 t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var rt=/ jQuery\d+="(?:null|\d+)"/g,it=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!it.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(r=y(o),s=y(e),a=0;null!=(i=s[a]);++a)r[a]&&P(i,r[a]);if(t)if(n)for(s=s||y(e),r=r||y(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=y(o,"script"),r.length>0&&b(r,!l&&y(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||je(n))&&(i=n[s],o=i&&l[i])){if(o.events)for(r in o.events)u[r]?ve.event.remove(n,r):ve.removeEvent(n,r,o.handle);l[i]&&(delete l[i],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(i))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return We(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=A(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=A(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return We(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(rt,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!it.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,r=0,i=[],o=ve(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),ve(o[r])[t](n),ue.apply(i,n.get());return this.pushStack(i)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+Re+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",t=i=s=!1,r=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,i="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",r="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,r,i,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),i},pixelMarginRight:function(){return null==t&&e(),r},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var kt=/alpha\([^)]*\)/i,wt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,Ct=new RegExp("^("+Re+")(.*)$","i"),_t={position:"absolute",visibility:"hidden",display:"block"},At={letterSpacing:"0",fontWeight:"400"},Et=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];if(o=typeof n,"string"===o&&(i=$e.exec(n))&&i[1]&&(n=g(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,r){var i,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,r)),"normal"===o&&t in At&&(o=At[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,r){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,_t,function(){return $(e,t,r)}):$(e,t,r):void 0},set:function(e,n,r){var i=r&&yt(e);return M(e,n,r?R(e,t,r,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,i),i):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return wt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(kt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=kt.test(o)?o.replace(kt,i):o+" "+i)}}),ve.cssHooks.marginRight=I(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=I(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+qe[r]+t]=o[r]||o[r-2]||o[0];return i}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return We(this,function(e,t,n){var r,i,o={},a=0;if(ve.isArray(t)){for(r=yt(e),i=t.length;i>a;a++)o[t[a]]=ve.css(e,t[a],!1,r);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(He);for(var n,r=0,i=e.length;i>r;r++)n=e[r],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var r=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return r.duration=ve.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in ve.fx.speeds?ve.fx.speeds[r.duration]:ve.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){ve.isFunction(r.old)&&r.old.call(this),r.queue&&ve.dequeue(this,r.queue)},r},ve.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=ve.isEmptyObject(e),o=ve.speed(t,n,r),a=function(){var t=X(this,ve.extend({},e),o);(i||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&Dt.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=ve.timers,a=r?r.length:0;for(n.finish=!0,ve.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(W(t,!0),e,r,i)}}),ve.each({slideDown:W("show"),slideUp:W("hide"),slideToggle:W("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,r){var i=n.setTimeout(t,e);r.stop=function(){n.clearTimeout(i)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),r=se.createElement("select"),i=r.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=i.selected,me.enctype=!!se.createElement("form").enctype,r.disabled=!0,me.optDisabled=!i.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var Ht=/\r/g,Ot=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=ve.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,ve(this).val()):e,null==i?i="":"number"==typeof i?i+="":ve.isArray(i)&&(i=ve.map(i,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=ve.valHooks[i.type]||ve.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Ht,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ot," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;s>l;l++)if(n=r[l],(n.selected||l===i)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=ve.makeArray(t),a=i.length;a--;)if(r=i[a],ve.inArray(ve.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var It,jt,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,Rt=me.getSetAttribute,$t=me.input;ve.fn.extend({attr:function(e,t){return We(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),i=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?jt:It)),void 0!==n?null===n?void ve.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:(r=ve.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(He);if(o&&1===e.nodeType)for(;n=o[i++];)r=ve.propFix[n]||n,ve.expr.match.bool.test(n)?$t&&Rt||!Mt.test(n)?e[r]=!1:e[ve.camelCase("default-"+n)]=e[r]=!1:ve.attr(e,n,""),e.removeAttribute(Rt?n:r)}}),jt={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):$t&&Rt||!Mt.test(n)?e.setAttribute(!Rt&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;$t&&Rt||!Mt.test(t)?Bt[t]=function(e,t,r){var i,o;return r||(o=Bt[t],Bt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,Bt[t]=o),i}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),$t&&Rt||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):It&&It.set(e,t,n)}}),Rt||(It={set:function(e,t,n){var r=e.getAttributeNode(n);return r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var r;return n?void 0:(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:It.set},ve.attrHooks.contenteditable={set:function(e,t,n){It.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return We(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,i=ve.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=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var Wt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(He)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&(" "+i+" ").replace(Wt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=ve.trim(r),i!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(He)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&(" "+i+" ").replace(Wt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=ve.trim(r),i!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){ -var t,r,i,o;if("string"===n)for(r=0,i=ve(this),o=e.match(He)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(Wt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var zt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,r=null,i=ve.trim(e+"");return i&&!ve.trim(i.replace(Xt,function(e,n,i,o){return t&&n&&(r=0),0===r?e:(t=i||n,r+=!o-!i,"")}))?Function("return "+i)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,r;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(r=new n.DOMParser,t=r.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(i){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=zt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,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":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function r(e,t,r,i){var o,p,y,b,k,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=i||"",w.readyState=e>0?4:0,o=e>=200&&300>e||304===e,r&&(b=G(h,w,r)),b=Z(h,b,w,o),o?(h.ifModified&&(k=w.getResponseHeader("Last-Modified"),k&&(ve.lastModified[a]=k),k=w.getResponseHeader("etag"),k&&(ve.etag[a]=k)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),w.status=e,w.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,w]):m.rejectWith(d,[w,S,y]),w.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[w,h,o?p:y]),g.fireWith(d,[w,S]),c&&(f.trigger("ajaxComplete",[w,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,k="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||k;return u&&u.abort(t),r(0,t),this}};if(m.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(He)||[""],null==h.crossDomain&&(i=en.exec(h.url.toLowerCase()),h.crossDomain=!(!i||i[1]===an[1]&&i[2]===an[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,w),2===x)return w;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&w.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&w.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",h.contentType),w.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)w.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,w,h)===!1||2===x))return w.abort();k="abort";for(o in{success:1,error:1,complete:1})w[o](h[o]);if(u=Y(nn,h,t,w)){if(w.readyState=1,c&&f.trigger("ajaxSend",[w,h]),2===x)return w;h.async&&h.timeout>0&&(l=n.setTimeout(function(){w.abort("timeout")},h.timeout));try{x=1,u.send(y,r)}catch(S){if(!(2>x))throw S;r(-1,S)}}else r(-1,"No Transport");return w},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,r,i){return ve.isFunction(n)&&(i=i||r,r=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:i,data:n,success:r},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,r=[],i=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){i(this.name,this.value)});else for(n in e)ne(n,e[n],t,i);return r.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?ie():se.documentMode>8?re():/^(get|post|head|put|delete|options)$/i.test(this.type)&&re()||ie()}:re;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(r,i){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,r){var o,l,c;if(t&&(r||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,r)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&i(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(r,i){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,r){var i,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(i=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+i):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return a||ve.error(i+" was not called"),a[0]},e.dataTypes[0]="json",o=n[i],n[i]=function(){a=arguments},r.always(function(){void 0===o?ve(n).removeProp(i):n[i]=o,e[i]&&(e.jsonpCallback=t.jsonpCallback,mn.push(i)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var r=Ae.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=k([e],t,i),i&&i.length&&ve(i).remove(),ve.merge([],r.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&ve.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ve("<div>").append(ve.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var r,i,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(r=p.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+i),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=oe(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===ve.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(r,"marginTop",!0),left:t.left-n.left-ve.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(r){return We(this,function(e,r,i){var o=oe(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?ve(o).scrollLeft():i,n?i:ve(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=I(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){ve.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return We(this,function(t,n,r){var i;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?ve.css(t,n,a):ve.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),ve.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,r=[],i=function(){return ve}.apply(t,r),!(void 0!==i&&(e.exports=i));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function r(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function i(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),k.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?i(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?E.html(e.data).show():E.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var r="";return 200===n.code?(r='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(r),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",r=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[r]?function(e){window[r](e)}:function(e){window.setTimeout(e,67)}}function p(){H+=10,A.css({transform:"rotateX("+H+"deg)","-webkit-transform":"rotateX("+H+"deg)","-moz-transform":"rotateX("+H+"deg)"}),H/90%2===1&&A.toggleClass("logo-cn"),H/90%2===0&&H%360!==0?window.setTimeout(p,3e3):H%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;A.hasClass("logo-cn")&&(e=6e4),A.fadeOut(O,function(){A.toggleClass("logo-cn"),A.fadeIn(O,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),k=b(".tool-wrapper"),w=k.find(".yoho-group"),S=b("#loginBox"),C=b(".head-wrapper"),_=b("#search-form"),A=C.find(".main-logo"),E=C.find(".search-suggest"),T=C.find(".go-cart"),N=T.find(".goods-num-tip"),P=C.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,H=0,O=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),r(),setInterval(s,2e3),w.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),_.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),r=E.find("li"),i=E.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=i.prev(),i.length&&t.length||(t=r.eq(r.length-1));else{if(40!==e.which)return;t=i.next(),i.length&&t.length||(t=r.eq(0))}r.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&_.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){E.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*! - - handlebars v4.0.5 - - Copyright (C) 2011-2015 by Yehuda Katz - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - @license - */ -!function(t,n){e.exports=n()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var i=n(1)["default"];t.__esModule=!0;var o=n(2),a=i(o),s=n(21),l=i(s),c=n(22),u=n(27),p=n(28),h=i(p),d=n(25),f=i(d),m=n(20),g=i(m),v=a["default"].create,y=r();y.create=r,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function r(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var i=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=i(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=i(h),f=n(19),m=i(f),g=n(20),v=o(g),y=r();y.create=r,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function r(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var i=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=r;var o=n(5),a=n(6),s=i(a),l=n(7),c=n(15),u=n(17),p=i(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";r.prototype={constructor:r,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function r(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function i(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=r({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=r,t.indexOf=i,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var i=t&&t.loc,o=void 0,a=void 0;i&&(o=i.start.line,a=i.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<r.length;l++)this[r[l]]=s[r[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),i&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var r=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var i=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=r;var o=n(8),a=i(o),s=n(9),l=i(s),c=n(10),u=i(c),p=n(11),h=i(p),d=n(12),f=i(d),m=n(13),g=i(m),v=n(14),y=i(v)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var i=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return i(this);if(r.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):i(this);if(n.data&&n.ids){var a=r.createFrame(n.data);a.contextPath=r.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var r=n(1)["default"];t.__esModule=!0;var i=n(5),o=n(6),a=r(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=r(e[t],{data:c,blockParams:i.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var r=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=i.appendContextPath(t.data.contextPath,t.ids[0])+"."),i.isFunction(e)&&(e=e.call(this)),t.data&&(c=i.createFrame(t.data)),e&&"object"==typeof e)if(i.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var r=n(1)["default"];t.__esModule=!0;var i=n(6),o=r(i);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return r.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||r.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],r=0;r<arguments.length-1;r++)t.push(arguments[r]);var i=1;null!=n.hash.level?i=n.hash.level:n.data&&null!=n.data.level&&(i=n.data.level),t[0]=i,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){r.isFunction(e)&&(e=e.call(this));var n=t.fn;if(r.isEmpty(e))return t.inverse(this);var i=t.data;return t.data&&t.ids&&(i=r.createFrame(t.data),i.contextPath=r.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:i,blockParams:r.blockParams([e],[i&&i.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function r(e){a["default"](e)}var i=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=r;var o=n(16),a=i(o)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,i){var o=e;return t.partials||(t.partials={},o=function(i,o){var a=n.partials;n.partials=r.extend({},a,t.partials);var s=e(i,o);return n.partials=a,s}),t.partials[i.args[0]]=i.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5),i={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=r.indexOf(i.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=i.lookupLevel(e),"undefined"!=typeof console&&i.lookupLevel(i.level)<=e){var t=i.methodMap[e];console[t]||(t="log");for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;n>o;o++)r[o-1]=arguments[o];console[t].apply(console,r)}}};t["default"]=i,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var r=v.REVISION_CHANGES[n],i=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+r+") or downgrade your runtime to an older version ("+i+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function i(e,t){function n(n,r,i){i.hash&&(r=f.extend({},r,i.hash),i.ids&&(i.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,r,i);var o=t.VM.invokePartial.call(this,n,r,i);if(null==o&&t.compile&&(i.partials[i.name]=t.compile(n,e.compilerOptions,t),o=i.partials[i.name](r,i)),null!=o){if(i.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=i.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+i.name+" could not be compiled when running in runtime-only mode")}function r(t){function n(t){return""+e.main(i,t,i.helpers,i.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;r._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,i,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var i={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,r=0;n>r;r++)if(e[r]&&null!=e[r][t])return e[r][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,r,i){var a=this.programs[e],s=this.fn(e);return t||i||r||n?a=o(this,e,s,t,n,r,i):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return r.isTop=!0,r._setup=function(n){n.partial?(i.helpers=n.helpers,i.partials=n.partials,i.decorators=n.decorators):(i.helpers=i.merge(n.helpers,t.helpers),e.usePartial&&(i.partials=i.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(i.decorators=i.merge(n.decorators,t.decorators)))},r._child=function(t,n,r,a){if(e.useBlockParams&&!r)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(i,t,e[t],n,0,r,a)},r}function o(e,t,n,r,i,o,a){function s(t){var i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,i.data||r,o&&[i.blockParams].concat(o),s)}return s=u(n,s,e,a,r,o),s.program=t,s.depth=a?a.length:0,s.blockParams=i||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var r=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),r=n.data["partial-block"]=n.fn,r.partials&&(n.partials=f.extend({},n.partials,r.partials))),void 0===e&&r&&(e=r),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,r,i,o){if(e.decorator){var a={};t=e.decorator(t,a,n,r&&r[0],i,o,r),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=r,t.template=i,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,r=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=r),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var i=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=r;var a=n(23),s=i(a),l=n(24),c=i(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,r,i,o,a){var s=o.length-1;switch(i){case 1:return o[s-1];case 2:this.$=r.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:r.stripComment(o[s]),strip:r.stripFlags(o[s],o[s]),loc:r.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:r.locInfo(this._$)};break;case 11:this.$=r.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=r.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=r.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:r.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=r.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=r.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:r.stripFlags(o[s-2],o[s])};break;case 22:this.$=r.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],r.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=r.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],r.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:r.stripFlags(o[s-4],o[s]),loc:r.locInfo(this._$)};break;case 25:this.$=r.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:r.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:r.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:r.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:r.id(o[s-2]),value:o[s],loc:r.locInfo(this._$)};break;case 32:this.$=r.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:r.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:r.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:r.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:r.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:r.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=r.preparePath(!0,o[s],this._$);break;case 43:this.$=r.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:r.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:r.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17], -47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,k,w={};;){if(m=r[r.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){k=[];for(y in a[m])this.terminals_[y]&&y>2&&k.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:k})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:r.push(d),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),r.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],w.$=i[i.length-b],w._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(w._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(w,s,c,l,this.yy,g[1],i,o),"undefined"!=typeof v)return v;b&&(r=r.slice(0,-1*b*2),i=i.slice(0,-1*b),o=o.slice(0,-1*b)),r.push(this.productions_[g[1]][0]),i.push(w.$),o.push(w._$),x=a[r[r.length-2]][r[r.length-1]],r.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r,i;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,r=a,this.options.flex));a++);return t?(i=t[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,r){function i(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(i(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(i(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=i(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=i(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function r(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function i(e,t,n){void 0===t&&(t=e.length);var r=e[t-1],i=e[t-2];return r?"ContentStatement"===r.type?(i||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(r.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var r=e[t+1],i=e[t+2];return r?"ContentStatement"===r.type?(i||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(r.original):void 0:n}function a(e,t,n){var r=e[null==t?0:t+1];if(r&&"ContentStatement"===r.type&&(n||!r.rightStripped)){var i=r.value;r.value=r.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),r.rightStripped=r.value!==i}}function s(e,t,n){var r=e[null==t?e.length-1:t-1];if(r&&"ContentStatement"===r.type&&(n||!r.leftStripped)){var i=r.value;return r.value=r.value.replace(n?/\s+$/:/[ \t]+$/,""),r.leftStripped=r.value!==i,r.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);r.prototype=new u["default"],r.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var r=e.body,l=0,c=r.length;c>l;l++){var u=r[l],p=this.accept(u);if(p){var h=i(r,l,n),d=o(r,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(r,l,!0),p.open&&s(r,l,!0),t&&g&&(a(r,l),s(r,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(r[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(r,l)),t&&m&&(a(r,l),s((u.inverse||u.program).body))}}return e},r.prototype.BlockStatement=r.prototype.DecoratorBlock=r.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,r=n,l=n;if(n&&n.chained)for(r=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:i((r||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(r.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&i(t.body)&&o(r.body)&&(s(t.body),a(r.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},r.prototype.Decorator=r.prototype.MustacheStatement=function(e){return e.strip},r.prototype.PartialStatement=r.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function r(){this.parents=[]}function i(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){i.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);r.prototype={constructor:r,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!r.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:i,Decorator:i,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:i,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function i(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var r=e?"@":"",i=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(r+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)i.push(c);else{if(i.length>0)throw new g["default"]("Invalid path: "+r,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:i,original:r,loc:n}}function c(e,t,n,r,i,o){var a=r.charAt(3)||r.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(r);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:i,loc:this.locInfo(o)}}function u(e,t,n,i){r(e,n),i=this.locInfo(i);var o={type:"Program",body:t,strip:{},loc:i};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:i}}function p(e,t,n,i,o,a){i&&i.path&&r(e,i);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=i.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:i&&i.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,r=e[e.length-1].loc;n&&r&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:r.end.line,column:r.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,i){return r(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(i)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=i,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function r(){}function i(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var r=n.parse(e,t),i=(new n.Compiler).compile(r,t);return(new n.JavaScriptCompiler).compile(i,t)}function o(e,t,n){function r(){var r=n.parse(e,t),i=(new n.Compiler).compile(r,t),o=(new n.JavaScriptCompiler).compile(i,t,void 0,!0);return n.template(o)}function i(e,t){return o||(o=r()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return i._setup=function(e){return o||(o=r()),o._setup(e)},i._child=function(e,t,n,i){return o||(o=r()),o._child(e,t,n,i)},i}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=r,t.precompile=i,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;r.prototype={compiler:r,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var r=this.opcodes[n],i=e.opcodes[n];if(r.opcode!==i.opcode||!a(r.args,i.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var r in n)r in n&&(t.knownHelpers[r]=n[r]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),r=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[r]=n,this.useDepths=this.useDepths||n.useDepths,r},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,r=0;n>r;r++)this.accept(t[r]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var r=this.classifySexpr(e);"helper"===r?this.helperSexpr(e,t,n):"simple"===r?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),r=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,r.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var r=e.name.original,i="SubExpression"===e.name.type;i&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",i,r,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var r=e.path,i=r.parts[0],o=null!=t||null!=n;this.opcode("getContext",r.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),r.strict=!0,this.accept(r),this.opcode("invokeAmbiguous",i,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var r=this.setupFullMustacheParams(e,t,n),i=e.path,o=i.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",r.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);i.strict=!0,i.falsy=!0,this.accept(i),this.opcode("invokeHelper",r.length,i.original,d["default"].helpers.simpleId(i))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),r=!e.depth&&!n&&this.blockParamIndex(t);r?this.opcode("lookupBlockParam",r,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,r=t.length;for(this.opcode("pushHash");r>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),r=!n&&d["default"].helpers.helperExpression(e),i=!n&&(r||t);if(i&&!r){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?r=!0:a.knownHelpersOnly&&(i=!1)}return r?"helper":i?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var r=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,r)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,r){var i=e.params;return this.pushParams(i),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",r),i},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var r=this.options.blockParams[t],i=r&&p.indexOf(r,e);if(r&&i>=0)return[t,i]}}}},function(e,t,n){"use strict";function r(e){this.value=e}function i(){}function o(e,t,n,r){var i=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)i=t.nameLookup(i,n[o],r);return e?[t.aliasable("container.strict"),"(",i,", ",t.quotedString(n[o]),")"]:i}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);i.prototype={nameLookup:function(e,t){return i.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,r){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!r,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var i=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=i.length;l>s;s++)o=i[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),r?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(r);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),r?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var r=0;for(var i in this.aliases){var o=this.aliases[i];this.aliases.hasOwnProperty(i)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++r+"="+i,o.children[0]="alias"+r)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,r=void 0,i=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend(" + "):o=e,a=e):(o&&(i?o.prepend("buffer += "):r=!0,a.add(";"),o=a=void 0),i=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):i||this.source.push('return "";'):(e+=", buffer = "+(r?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(r?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var r=this.popStack();n.splice(1,0,r),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,r){var i=0;r||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[i++])),this.resolvePath("context",e,i,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,r,i){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&i,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(i){var o=a.nameLookup(i,t[n],e);return r?[" && ",o]:[" != null ? ",o," : ",i]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),r=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",r])," || fn;"])},invokeHelper:function(e,t,n){var r=this.popStack(),i=this.setupHelper(e,t),o=n?[i.name," || "]:"",a=["("].concat(o,r);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",i.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var r=this.setupHelper(0,e,t),i=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",i," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,r.paramsInit?["),(",r.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",r.callParams)," : helper))"])},invokePartial:function(e,t,n){var r=[],i=this.setupParams(t,1,r);e&&(t=this.popStack(),delete i.name),n&&(i.indent=JSON.stringify(n)),i.helpers="helpers",i.partials="partials",i.decorators="container.decorators",e?r.unshift(t):r.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(i.depths="depths"),i=this.objectLiteral(i),r.push(i),this.push(this.source.functionCall("container.invokePartial","",r))},assignToHash:function(e){var t=this.popStack(),n=void 0,r=void 0,i=void 0;this.trackIds&&(i=this.popStack()), -this.stringParams&&(r=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),r&&(o.types[e]=r),i&&(o.ids[e]=i),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:i,compileChildren:function(e,t){for(var n=e.children,r=void 0,i=void 0,o=0,a=n.length;a>o;o++){r=n[o],i=new this.compiler;var s=this.matchExistingProgram(r);null==s?(this.context.programs.push(""),s=this.context.programs.length,r.index=s,r.name="program"+s,this.context.programs[s]=i.compile(r,t,this.context,!this.precompile),this.context.decorators[s]=i.decorators,this.context.environments[s]=r,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams):(r.index=s,r.name="program"+s,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var r=this.context.environments[t];if(r&&r.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof r||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new r(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,i=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof r)n=[a.value],t=["(",n],o=!0;else{i=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),i&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var i=e[t];if(i instanceof r)this.compileStack.push(i);else{var o=this.incrStack();this.pushSource([o," = ",i,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof r)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof r?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var r=[],i=this.setupHelperArgs(t,e,r,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:r,paramsInit:i,name:o,callParams:[a].concat(r)}},setupParams:function(e,t,n){var r={},i=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),r.name=this.quotedString(e),r.hash=this.popStack(),this.trackIds&&(r.hashIds=this.popStack()),this.stringParams&&(r.hashTypes=this.popStack(),r.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(r.fn=u||"container.noop",r.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),i[p]=this.popStack());return s&&(r.args=this.source.generateArray(n)),this.trackIds&&(r.ids=this.source.generateArray(a)),this.stringParams&&(r.types=this.source.generateArray(o),r.contexts=this.source.generateArray(i)),this.options.data&&(r.data="data"),this.useBlockParams&&(r.blockParams="blockParams"),r},setupHelperArgs:function(e,t,n,r){var i=this.setupParams(e,t,n);return i=this.objectLiteral(i),r?(this.useRegister("options"),n.push("options"),["options=",i]):n?(n.push(i),""):i}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=i.RESERVED_WORDS={},n=0,r=e.length;r>n;n++)t[e[n]]=!0}(),i.isValidJavaScriptVariableName=function(e){return!i.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t,n){if(o.isArray(e)){for(var r=[],i=0,a=e.length;a>i;i++)r.push(t.wrap(e[i],n));return r}return"boolean"==typeof e||"number"==typeof e?e+"":e}function i(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,r){this.src="",r&&this.add(r)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),i.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add([" ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=r(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var i=r(e[n],this);"undefined"!==i&&t.push([this.quotedString(n),":",i])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,i=e.length;i>n;n++)n&&t.add(","),t.add(r(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=i,e.exports=t["default"]}])})},function(e,t,n){function r(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,r={mail:"",tick:""};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(r.mail)}),t.click(function(){var i=a.trim(e.val());if(""!==i&&n.test(i))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:i,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+i),t.addClass("done").html(r.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function i(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var r=a(this),i=r.closest("li"),o=i.index(),s=[],l=i.find(".feedback-answer").val(),c=i.find(".feedback-id").val(),u=i.find(".question-id").val();i.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(r){var a=o+1;if(1===~~r.data.result){if(o===n-1)return void alert("感谢您的参与!");i.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),r(),i(),window.rePosReturnTop=o},function(e,t,n){var r=n(2);n(7),e.exports=function(e,t){var n,i={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=r("img.lazy");break;case 1:e instanceof r?n=e:(n=r("img.lazy"),r.extend(i,e));break;case 2:n=e,i=r.extend(i,t)}}(),n.lazyload(i)}},function(e,t,n){var r=n(2);!function(e,t,n,r){var i=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(r!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),r!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===r||c.container===t?i:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==r&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var r=l.length;c.appear.call(t,r,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var r=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",r):n.css("background-image","url('"+r+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var i=e.grep(l,function(e){return!e.loaded});if(l=e(i),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var i=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var r=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+r+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+r+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(i,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),i.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&i.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===r||o.container===t?(t.innerHeight?t.innerHeight:i.height())+i.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===r||o.container===t?i.width()+i.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===r||o.container===t?i.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===r||o.container===t?i.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(r,window,document)}]); \ No newline at end of file diff --git a/public/dist/yohobuy-node/0.0.1/channel.channel.js b/public/dist/yohobuy-node/0.0.1/channel.channel.js deleted file mode 100644 index edb44c6..0000000 --- a/public/dist/yohobuy-node/0.0.1/channel.channel.js +++ /dev/null @@ -1,55 +0,0 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){var i=n(2),r=n(6),o=n(8),a=i(".home-page").data("page"),s=i(".logo-brand").data("url");n(1),n(10),n(11),n(12),i(document).on("mouseenter",".imgopacity a img",function(){i(this).css("opacity",.8)}),i(document).on("mouseout",".imgopacity a img",function(){i(this).css("opacity",1)}),i.inArray(a,["boys","girls","kids","lifestyle"])>-1&&(n(15)({type:a,url:"/common/getNewArrival",count:"boys"===a||"lifestyle"===a?5:4,rows:[5,3]}),window.setCookie("_Channel",a,{domain:".yohobuy.com",path:"/",expires:365})),r(i("img.lazy")),"boys"===a?i(".slide-container").slider({pagination:".thumb-pagination"}):(i(".center-col").slider(),i(".slide-container").slider()),"boys"===a?(i(".logo-brand").logoBrand({url:s}),o.init(".img-brand")):(i(".logo-brand").logoBrand({showNum:10,url:s}),o.init(".img-slider-wrapper"))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ -!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match($e)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Be,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:He.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(Oe(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(Oe(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){We.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&We.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function $(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function j(e){var t=se,n=dt[e];return n||(n=$(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=$(e,t),ht.detach()),dt[e]=n),n}function I(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function O(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function H(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&qe(i)&&(o[a]=ve._data(i,"olddisplay",j(i.nodeName)))):(r=qe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function B(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function M(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+Fe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+Fe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+Fe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+Fe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+Fe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+M(e,t,n||(a?"border":"content"),i,o)+"px"}function F(e,t,n,i,r){return new F.prototype.init(e,t,n,i,r)}function q(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function z(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=Fe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function W(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&qe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||j(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==j(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?j(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=W(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||q(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||q(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,W,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match($e)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function Q(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,j)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&B(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!I||!I.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=M),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===M&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[M]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=q++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[F,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[M]||(t[M]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===F&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[M]&&(r=v(r)),o&&!o[M]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[M]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=F+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!j);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(F=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(F=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,$,j,I,O,H,B,M="sizzle"+1*new Date,R=e.document,F=0,q=0,z=n(),W=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{G.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,$=D.documentElement,j=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return $.appendChild(e).id=M,!D.getElementsByName||!D.getElementsByName(M).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&j){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&j?t.getElementsByClassName(e):void 0},O=[],I=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){$.appendChild(e).innerHTML="<a id='"+M+"'></a><select id='"+M+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||I.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+M+"-]").length||I.push("~="),e.querySelectorAll(":checked").length||I.push(":checked"),e.querySelectorAll("a#"+M+"+*").length||I.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&I.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),I.push(",.*:")})),(w.matchesSelector=ge.test(H=$.matches||$.webkitMatchesSelector||$.mozMatchesSelector||$.oMatchesSelector||$.msMatchesSelector))&&r(function(e){w.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",oe)}),I=I.length&&new RegExp(I.join("|")),O=O.length&&new RegExp(O.join("|")),t=ge.test($.compareDocumentPosition),B=t||ge.test($.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&B(R,e)?-1:t===D||t.ownerDocument===R&&B(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&j&&!U[n+" "]&&(!O||!O.test(n))&&(!I||!I.test(n)))try{var i=H.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),B(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!j):void 0;return void 0!==i?i:w.attributes||!j?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&z(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===F&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[F,d,b];break}}else if(y&&(h=t,p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===F&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[F,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[M]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[M]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=j?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===$},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=W[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):W(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[M]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&j&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return G.apply(n,i),n;break}}return(c||E(e,p))(i,t,!j,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=M.split("").sort(V).join("")===M,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var $e=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var je;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(je.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!je)if(je=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return je.promise(e)},ve.ready.promise();var Ie;for(Ie in ve(me))break;me.ownFirst="0"===Ie,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var Oe=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},He=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Be=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var Me=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+Me+")([a-z%]*)$","i"),Fe=["Top","Right","Bottom","Left"],qe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},ze=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)ze(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},We=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}(); -var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match($e)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match($e)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&Oe(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&Oe(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||Oe(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return ze(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return ze(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+Me+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+Me+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=O(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=O(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return B(e,n,i?M(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=I(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=I(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+Fe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=B)}),ve.fn.extend({css:function(e,t){return ze(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return H(this,!0)},hide:function(){return H(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){qe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=F,F.prototype={constructor:F,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=F.propHooks[this.prop];return e&&e.get?e.get(this):F.propHooks._default.get(this)},run:function(e){var t,n=F.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):F.propHooks._default.set(this),this}},F.prototype.init.prototype=F.prototype,F.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},F.propHooks.scrollTop=F.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=F.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match($e);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(qe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(z(t,!0),e,i,r)}}),ve.each({slideDown:z("show"),slideUp:z("hide"),slideToggle:z("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var $t=/\r/g,jt=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace($t,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var It,Ot,Ht=ve.expr.attrHandle,Bt=/^(?:checked|selected)$/i,Mt=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return ze(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?Ot:It)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match($e);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&Mt||!Bt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute(Mt?n:i)}}),Ot={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&Mt||!Bt.test(n)?e.setAttribute(!Mt&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Ht[t]||ve.find.attr;Rt&&Mt||!Bt.test(t)?Ht[t]=function(e,t,i){var r,o;return i||(o=Ht[t],Ht[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Ht[t]=o),r}:Ht[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&Mt||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):It&&It.set(e,t,n)}}),Mt||(It={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Ht.id=Ht.name=Ht.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:It.set},ve.attrHooks.contenteditable={set:function(e,t,n){It.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ft=/^(?:input|select|textarea|button|object)$/i,qt=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return ze(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):Ft.test(e.nodeName)||qt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var zt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match($e)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match($e)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){ -var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match($e)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(zt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Wt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=Wt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,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":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=G(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match($e)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return ze(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=I(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return ze(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){$+=10,E.css({transform:"rotateX("+$+"deg)","-webkit-transform":"rotateX("+$+"deg)","-moz-transform":"rotateX("+$+"deg)"}),$/90%2===1&&E.toggleClass("logo-cn"),$/90%2===0&&$%360!==0?window.setTimeout(p,3e3):$%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(j,function(){E.toggleClass("logo-cn"),E.fadeIn(j,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,$=0,j=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*! - - handlebars v4.0.5 - - Copyright (C) 2011-2015 by Yehuda Katz - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - @license - */ -!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17], -47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend(" + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()), -this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add([" ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"",tick:""};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},function(e,t,n){var i=n(2);window.jQuery=i,n(9),t.init=function(e){var t=i(e),n=t.unslider({autoplay:!0,delay:3e3,arrows:{},nav:!1,animate:"fade"}),r=t.find("li").length,o=r/3;t.find("li").length%3||(o-=1),t.find("li:nth-child(3n)").css("margin-right",0),n.on("unslider.change",function(e,t){t>o&&(n.unslider("animate:"+r),n.unslider("animate:first"))})}},function(e,t){!function(e){return e?(e.Unslider=function(t,n){var i=this;return i._="unslider",i.defaults={autoplay:!1,delay:3e3,speed:750,easing:"swing",keys:{prev:37,next:39},nav:!0,arrows:{prev:'<a class="'+i._+'-arrow prev">Prev</a>',next:'<a class="'+i._+'-arrow next">Next</a>'},animation:"horizontal",selectors:{container:"ul:first",slides:"li"},animateHeight:!1,activeClass:i._+"-active",swipe:!0,swipeThreshold:.2},i.$context=t,i.options={},i.$parent=null,i.$container=null,i.$slides=null,i.$nav=null,i.$arrows=[],i.total=0,i.current=0,i.prefix=i._+"-",i.eventSuffix="."+i.prefix+~~(2e3*Math.random()),i.interval=null,i.init=function(t){return i.options=e.extend({},i.defaults,t),i.$container=i.$context.find(i.options.selectors.container).addClass(i.prefix+"wrap"),i.$slides=i.$container.children(i.options.selectors.slides),i.setup(),e.each(["nav","arrows","keys","infinite"],function(t,n){i.options[n]&&i["init"+e._ucfirst(n)]()}),jQuery.event.special.swipe&&i.options.swipe&&i.initSwipe(),i.options.autoplay&&i.start(),i.calculateSlides(),i.$context.trigger(i._+".ready"),i.animate(i.options.index||i.current,"init")},i.setup=function(){i.$context.addClass(i.prefix+i.options.animation).wrap('<div class="'+i._+'" />'),i.$parent=i.$context.parent("."+i._);var e=i.$context.css("position");"static"===e&&i.$context.css("position","relative"),i.$context.css("overflow","hidden")},i.calculateSlides=function(){if(i.total=i.$slides.length,"fade"!==i.options.animation){var e="width";"vertical"===i.options.animation&&(e="height"),i.$container.css(e,100*i.total+"%").addClass(i.prefix+"carousel"),i.$slides.css(e,100/i.total+"%")}},i.start=function(){return i.interval=setTimeout(function(){i.next()},i.options.delay),i},i.stop=function(){return clearTimeout(i.interval),i},i.initNav=function(){var t=e('<nav class="'+i.prefix+'nav"><ol /></nav>');i.$slides.each(function(n){var r=this.getAttribute("data-nav")||n+1;e.isFunction(i.options.nav)&&(r=i.options.nav.call(i.$slides.eq(n),n,r)),t.children("ol").append('<li data-slide="'+n+'">'+r+"</li>")}),i.$nav=t.insertAfter(i.$context),i.$nav.find("li").on("click"+i.eventSuffix,function(){var t=e(this).addClass(i.options.activeClass);t.siblings().removeClass(i.options.activeClass),i.animate(t.attr("data-slide"))})},i.initArrows=function(){i.options.arrows===!0&&(i.options.arrows=i.defaults.arrows),e.each(i.options.arrows,function(t,n){i.$arrows.push(e(n).insertAfter(i.$context).on("click"+i.eventSuffix,i[t]))})},i.initKeys=function(){i.options.keys===!0&&(i.options.keys=i.defaults.keys),e(document).on("keyup"+i.eventSuffix,function(t){e.each(i.options.keys,function(n,r){t.which===r&&e.isFunction(i[n])&&i[n].call(i)})})},i.initSwipe=function(){var e=i.$slides.width();"fade"!==i.options.animation&&i.$container.on({movestart:function(e){return e.distX>e.distY&&e.distX<-e.distY||e.distX<e.distY&&e.distX>-e.distY?!!e.preventDefault():void i.$container.css("position","relative")},move:function(t){i.$container.css("left",-(100*i.current)+100*t.distX/e+"%")},moveend:function(t){Math.abs(t.distX)/e>i.options.swipeThreshold?i[t.distX<0?"next":"prev"]():i.$container.animate({left:-(100*i.current)+"%"},i.options.speed/2)}})},i.initInfinite=function(){var t=["first","last"];e.each(t,function(e,n){i.$slides.push.apply(i.$slides,i.$slides.filter(':not(".'+i._+'-clone")')[n]().clone().addClass(i._+"-clone")["insert"+(0===e?"After":"Before")](i.$slides[t[~~!e]]()))})},i.destroyArrows=function(){e.each(i.$arrows,function(e,t){t.remove()})},i.destroySwipe=function(){i.$container.off("movestart move moveend")},i.destroyKeys=function(){e(document).off("keyup"+i.eventSuffix)},i.setIndex=function(e){return 0>e&&(e=i.total-1),i.current=Math.min(Math.max(0,e),i.total-1),i.options.nav&&i.$nav.find('[data-slide="'+i.current+'"]')._active(i.options.activeClass),i.$slides.eq(i.current)._active(i.options.activeClass),i},i.animate=function(t,n){if("first"===t&&(t=0),"last"===t&&(t=i.total),isNaN(t))return i;i.options.autoplay&&i.stop().start(),i.setIndex(t),i.$context.trigger(i._+".change",[t,i.$slides.eq(t)]);var r="animate"+e._ucfirst(i.options.animation);return e.isFunction(i[r])&&i[r](i.current,n),i},i.next=function(){var e=i.current+1;return e>=i.total&&(e=0),i.animate(e,"next")},i.prev=function(){return i.animate(i.current-1,"prev")},i.animateHorizontal=function(e){var t="left";return"rtl"===i.$context.attr("dir")&&(t="right"),i.options.infinite&&i.$container.css("margin-"+t,"-100%"),i.slide(t,e)},i.animateVertical=function(e){return i.options.animateHeight=!0,i.options.infinite&&i.$container.css("margin-top",-i.$slides.outerHeight()),i.slide("top",e)},i.slide=function(e,t){if(i.options.animateHeight&&i._move(i.$context,{height:i.$slides.eq(t).outerHeight()},!1),i.options.infinite){var n;t===i.total-1&&(n=i.total-3,t=-1),t===i.total-2&&(n=0,t=i.total-2),"number"==typeof n&&(i.setIndex(n),i.$context.on(i._+".moved",function(){i.current===n&&i.$container.css(e,-(100*n)+"%").off(i._+".moved")}))}var r={};return r[e]=-(100*t)+"%",i._move(i.$container,r)},i.animateFade=function(e){var t=i.$slides.eq(e).addClass(i.options.activeClass);i._move(t.siblings().removeClass(i.options.activeClass),{opacity:0}),i._move(t,{opacity:1},!1)},i._move=function(e,t,n,r){return n!==!1&&(n=function(){i.$context.trigger(i._+".moved")}),e._move(t,r||i.options.speed,i.options.easing,n)},i.init(n)},e.fn._active=function(e){return this.addClass(e).siblings().removeClass(e)},e._ucfirst=function(e){return(e+"").toLowerCase().replace(/^./,function(e){return e.toUpperCase()})},e.fn._move=function(){return this.stop(!0,!0),e.fn[e.fn.velocity?"velocity":"animate"].apply(this,arguments)},void(e.fn.unslider=function(t){return this.each(function(){var n=e(this);if("string"==typeof t&&n.data("unslider")){t=t.split(":");var i=n.data("unslider")[t[0]];if(e.isFunction(i))return i.apply(n,t[1]?t[1].split(","):null)}return n.data("unslider",new e.Unslider(n,t))})})):console.warn("Unslider needs jQuery")}(window.jQuery)},function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont"></span></a><a class="next" href="javascript:;"><span class="iconfont"></span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},function(e,t,n){var i=n(2),r=n(4),o=n(6);!function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.logoBrand.defaults,n),this.init()};t.prototype={init:function(){this.$element.addClass("logos-"+this.options.showNum),this._sendRequest()},_createHelper:function(){var e=this.options.showNum;r.registerHelper("brandList",function(t,n){var i="<ul>",r=0,o=null,a=0;if(t.length%e!==0)for(a=e-t.length%e,r=0;a>r;r++)t.push({href:"javascript:;",img:""});for(r=0;r<t.length;r++)o=n.fn(t[r]),i=r%e===5||5===r?i+'<li class="logo-brand-switch" data-page="'+Math.floor(r/e)+'"><a class="prev iconfont" href="javascript:;"></a><a class="next iconfont" href="javascript:;"></a></li><li data-page="'+Math.floor(r/e)+'">'+o+"</li>":0!==r&&r%e===0?i+'<li class="brand-more" data-page="'+Math.floor(r/(e+1))+'"><a href="javascript:;" target="_blank">MORE ></a></li><li data-page="'+Math.floor(r/e)+'">'+o+"</li>":i+'<li data-page="'+Math.floor(r/e)+'">'+o+"</li>";return i+'<li class="brand-more" data-page="'+Math.floor(r/(e+1))+'"><a href="javascript:;" target="_blank">MORE ></a></li></ul>'})},_sendRequest:function(){var t=this;e.ajax({type:"GET",url:t.options.url,dataType:"json",success:function(e){var n,i;e&&0!==e.length&&(t._createHelper(),i='{{#brandList logoBrand}}<a href="{{href}}" target="_blank"><img class="lazy" data-original="{{img}}" alt=""></a>{{/brandList}}',n=r.compile(i),t.$element.html(n(e)),t.$element.find(".brand-more a").attr("href",e.moreBrand),o(t.$element.find("img.lazy")),t._bindEvent())}})},_brandShow:function(t,n){var i=this;o(e("li[data-page="+n+"]").find("img.lazy").trigger("appear")),i.$element.find("li[data-page="+t+"]").find("img").fadeOut("normal",function(){i.$element.find("li").hide(),i.$element.find("li[data-page="+n+"]").show().find("img").fadeIn()})},_bindEvent:function(){var t=this;t.$element.on("click",".next",function(){var n=e(this).parent().data("page"),i=0,r=Math.ceil(t.$element.find("li").size()/(t.options.showNum+2))-1;i=n===r?0:n+1,t._brandShow(n,i)}),t.$element.on("click",".prev",function(){var n=e(this).parent().data("page"),i=0,r=Math.ceil(t.$element.find("li").size()/(t.options.showNum+2))-1;i=0===n?r:n-1,t._brandShow(n,i)})}},e.fn.logoBrand=function(n){return this.each(function(){var i=e(this),r=i.data("LogoBrand"),o="object"==typeof n&&n;r||i.data("LogoBrand",r=new t(this,o)),"string"==typeof n&&r[n]()})},e.fn.logoBrand.Constructor=t,e.fn.logoBrand.defaults={showNum:16,url:"/boys/getBrand"}}(i)},function(e,t,n){function i(e){l.each(function(t){a(this).css("zIndex",t),e>=t?a(this).stop().animate({left:t*u},400):a(this).stop().animate({left:e*u+c+u*(t-e-1)},400)})}var r,o=n(13),a=n(2),s=a(".slide-accordion"),l=s.find("li"),c=l.width(),u=1150===parseInt(a(".home-page").width(),10)?125:107;i(0),r=new o({length:5,loop:!1,auto:!1,timeout:2,index:0}),r.on("change",function(e){i(e.to)}),l.mouseover(function(){r.go(a(this).index())}),r.init()},function(e,t,n){var i=n(14),r=function(e){this.__lastTime=null,this.__isStop=!1,e=i.extend(this.defaults,e),r.superclass.constructor.call(this,e)};i.inherit(r,i.assembly),r.prototype.oninit=function(){var e=this,t=e.options;return t.auto&&e.play(),e.go(t.index),this},r.prototype.go=function(e,t){var n,i,r,o,a,s,l,c,u=this,p=u.options;u.__lastTime&&(clearTimeout(u.__lastTime),u.__lastTime=null),t="undefined"==typeof t?p.index:t,n=e===t?0:e>t?1:-1,i=p.loop,o=p.length-1,a=e,e=i?e>o?e-o-1:0>e?e+o+1:e:e>o?o:0>e?0:e,r=p.index=e,s={from:t,to:e,originalto:a,direction:n};for(l in u.registerEvent)if(u.registerEvent[l].length>0)for(c in u.registerEvent[l])u.registerEvent[l].hasOwnProperty(c)&&u.registerEvent[l][c](s);r!==o||e?!u.__isStop&&p.auto&&u.play():u.__lastTime&&clearTimeout(u.__lastTime)},r.prototype.play=function(){var e=this,t=e.options;return e.__lastTime=setTimeout(function(){e.next()},1e3*t.timeout),this},r.prototype.next=function(){var e=this,t=e.options,n=t.index,i=n+t.step;e.go(i,n)},r.prototype.prev=function(){var e=this,t=e.options,n=t.index,i=n-t.step;e.go(i,n)},r.prototype.pause=function(){var e=this;e.__lastTime&&clearTimeout(e.__lastTime),e.__isStop=!0},r.prototype.resume=function(){var e=this;e.__isStop=!1,e.play()},r.prototype.defaults={index:0,timeout:5,step:1,per:1,auto:!1,loop:!1},e.exports=r},function(e,t){var n,i={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Function]":"function","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object String]":"string"},r={__Index:0,list:[],get:function(e){return void 0===e?this.list:this.list[e]},fn:function(){},inherit:function(e,t){var n=r.fn;n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.superclass=t.prototype,e.prototype.constructor===Object.prototype.constructor&&(e.prototype.constructor=t)},extend:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},copy:function(e,t,n){var i,o,a;if("object"!=typeof t)return t;if(i=t.valueOf(),t!==i)return new t.constructor(i);if(t instanceof t.constructor&&t.constructor!==Object){o=e?new e:r.clone(t.constructor.prototype);for(a in t)(e||t.hasOwnProperty(a))&&(o[a]=t[a])}else{o={};for(a in t)o.hasOwnProperty(a)&&(o[a]=t[a])}if(n)for(a in n)o.hasOwnProperty(a)&&(o[a]=n[a]);return o},clone:function(e){return r.__cloneFunc.prototype=e,new r.__cloneFunc},__cloneFunc:function(){},delegate:function(e,t){var n;return t=t||window,arguments.length>2?(n=Array.prototype.slice.call(arguments,2),function(){return e.apply(t,n)}):function(){return e.call(t)}},dom:function(e,t){var n,i,r=e,o={wrap:r},a=r[0].getElementsByTagName("*"),s=a.length;for(i=0;s>i;i++)n=a[i].className,n.indexOf(t)>-1&&(n=n.split(t)[1]),n&&(o[n]=r.find(a[i]));return o},template:function(){var e,t,n,i,o=arguments;if(o.length>0&&r.isString(o[0]))if(e=o[0],2===o.length&&r.isObject(o[1]))for(t in o[1])void 0!==o[1][t]&&(n=new RegExp("({"+t+"})","g"),e=e.replace(n,o[1][t]));else for(i=1;i<o.length;i++)void 0!==o[i]&&(n=new RegExp("({["+(i-1)+"]})","g"),e=e.replace(n,o[i]));return e},__type:function(e){return null==e?String(e):i[Object.prototype.toString.call(e)]||"object"},isObject:function(e){return this.isFunction(e)||!(!e||"object"!=typeof e)},isFunction:function(e){return"function"===this.__type(e)},isArray:Array.isArray||function(e){return"array"===this.__type(e)},isNum:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},isString:function(e){return"string"===this.__type(e)},each:function(e,t,n){var i,o;if(r.isArray(e))for(i=0,o=e.length;o>i&&t.call(e[i],i,e[i],n)!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i],n)===!1)break},funManager:{__loadList:{},__loadFun:function(e,t,n){e.methord&&r.isFunction(e.methord())&&(n=n||window,e.methord()(e,function(){t()},n))},load:function(e,t,n,i){i=i||0,e[i]&&r.funManager.__loadFun(e[i],function(){r.funManager.load(e,t,n,i+1)},n),t(i,n)},get:function(e){return this.__loadList[e]}},log:function(e){var t=window.console||{log:function(){}};t.log(e)},Event:{mousewheel:function(e){var t=e.originalEvent,n=t.detail?-1*t.detail:t.wheelDelta/40,i=0>n?-1:1;return{direction:i,unit:n}},__:function(e,t,n,i){var r;for(r in e)if(window[e[r].validator]){t[e[r].validator](e[r].prefix+n,i,!1);break}},add:function(e,t,n){var i=[{validator:"addEventListener",prefix:""},{validator:"attachEvent",prefix:"on"}];this.__(i,e,t,n)},remove:function(e,t,n){var i=[{validator:"removeEventListener",prefix:""},{validator:"detachEvent",prefix:"on"}];this.__(i,e,t,n)}},getUid:function(e){return r.template("me-{0}{1}-{2}",e,(new Date).getTime(),r.__Index++)},Browser:{isTouch:function(){var e=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture;return!!("ontouchstart"in window||e||window.DocumentTouch)},Prefix:function(){var e,t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],n=document.createElement("div");for(e in t)if(void 0!==n.style[t[e]])return r.template("-{0}-",t[e].replace("Perspective","").toLowerCase())},parseURL:function(e){var t,n,i,r,o,a=document.createElement("a");return a.href=e,{source:e,protocol:a.protocol.replace(":",""),host:a.hostname,port:a.port,query:a.search,params:function(){for(t={},n=a.search.replace(/^\?/,"").split("&"),i=n.length,r=0,o;i>r;r++)n[r]&&(o=n[r].split("="),t[o[0]]=o[1]);return t}(),file:(a.pathname.match(/\/([^\/?#]+)$/i)||[null,""])[1],hash:a.hash.replace("#",""),path:a.pathname.replace(/^([^\/])/,"/$1"),relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[null,""])[1],segments:a.pathname.replace(/^\//,"").split("/")}}},Array:{indexOf:function(e,t){var n;for(n=0;n<e.length;n++)if(this[n]===t)return n;return-1},remove:function(e,t){var n=this.indexOf(e,t);return n>-1&&e.splice(n,1),e}}};n=function(e){this.initialized=!1,this.registerEvent={before:[],change:[],after:[]},this.options=e,this.init(e)},n.output=function(){r.log(r.list)},n.prototype.oninit=r.fn,n.prototype.init=function(e){this.initialized=!0,this.__Uid=r.getUid("me"),this.oninit(e),r.list[this.__Uid]=this},n.prototype.destory=function(){this.initialized=!1,delete r.list[this.__Uid]},n.prototype.getUid=function(){return this.__Uid},n.prototype.getOptions=function(){return this.options},n.prototype.config=function(){if(!(arguments.length>0))return this.options;if("string"==typeof arguments[0]){ -if(!(arguments.length>1))return this.options[name];this.options[arguments[0]]=arguments[1]}},n.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},n.prototype.off=function(e,t){var n=this,i=n.registerEvent[e],o=[];r.each(i,function(e,n){n===t&&o.push(e)}),r.each(o.reverse(),function(e,t){i.splice(t,1)})},r.assembly=n,e.exports=r},function(e,t,n){function i(e){var t={index:0,isload:!0,isrun:!0,offset:{height:null,width:null}};return this.registerEvent={before:[],change:[],after:[]},this.options=r.extend(!0,{},t,e),this}var r=n(2),o=n(6),a=n(4);i.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},i.prototype.exect=function(e,t){var n,i=this;if(i.registerEvent[e]&&i.registerEvent[e].length>0)for(n in i.registerEvent[e])i.registerEvent[e].hasOwnProperty(n)&&i.registerEvent[e][n](t)},i.prototype.init=function(){function e(){n.isrun&&n.isload&&t.__directionCalculation()&&(n.isload=!1,n.index++,t.exect("after",n)),t.exect("change",n)}var t=this,n=this.options;t.exect("before",n),r(window).scroll(e)},i.prototype.emit=function(){var e=this.options;e.isload=!0},i.prototype.stop=function(){var e=this.options;e.isrun=!1,e.isload=!1},i.prototype.__directionCalculation=function(){var e=this.options;return!!(e.offset.height&&e.offset.height()>0&&r(window).scrollTop()+r(window).height()>=e.offset.height())},e.exports=function(e){var t,n=r("#newarrivals .goods-container"),s=r(".loading a"),l=new i({index:1,isload:!1,offset:{height:function(){return parseFloat(n.offset().top)+parseFloat(n.height())-200}}}),c=e.url,u=e.count,p=e.rows;e.pageIndex=0,delete e.url,delete e.count,delete e.rows,t=function(e,t,i){var c={type:"POST",url:e,success:function(e){var r,c,u,p=e.code;200===p?(c=e.goods.length%i,u=e.goods.length-c-1,e.goods.splice(u,c),r=a.compile(l.tpl),n.append(r(e.goods)),t.pageIndex=t.pageIndex+e.goods.length,o(n.find("img.lazy")),l.emit()):(l.stop(),s.html("查看更多"))},error:function(){l.stop(),s.html("网络断开连接了~")}};c.data=t,r.ajax(c)},l.on("after",function(n){e.pageCount=u*p[1],t(c,e)}),l.on("before",function(n){l.tpl="{{#each this}}",l.tpl+='<div class="good-info imgopacity" data-skn="{{skn}}">',l.tpl+=' <div class="tag-container clearfix">',l.tpl+=" {{# tags}}",l.tpl+=" {{# isNew}}",l.tpl+=' <span class="good-tag new-tag">NEW</span>',l.tpl+=" {{/ isNew}}",l.tpl+=" {{# isReNew}}",l.tpl+=' <span class="good-tag renew-tag">再到着</span>',l.tpl+=" {{/ isReNew}}",l.tpl+=" {{# isSale}}",l.tpl+=' <span class="good-tag sale-tag">SALE</span>',l.tpl+=" {{/ isSale}}",l.tpl+=" {{# isNewFestival}}",l.tpl+=' <span class="good-tag new-festival-tag">新品节</span>',l.tpl+=" {{/ isNewFestival}}",l.tpl+=" {{# isLimit}}",l.tpl+=' <span class="good-tag limit-tag">限量商品</span>',l.tpl+=" {{/ isLimit}}",l.tpl+=" {{# isYearEndPromotion}}",l.tpl+=' <span class="good-tag yep-tag">年终大促</span>',l.tpl+=" {{/ isYearEndPromotion}}",l.tpl+=" {{# isYearMidPromotion}}",l.tpl+=' <span class="good-tag ymp-tag">年中热促</span>',l.tpl+=" {{/ isYearMidPromotion}}",l.tpl+=" {{/ tags}}",l.tpl+=" </div>",l.tpl+=' <div class="good-detail-img">',l.tpl+=' <a class="good-thumb" href="{{url}}" target= "_blank">',l.tpl+=' <img class="lazy" data-original="{{thumb}}">',l.tpl+=" </a>",l.tpl+=" {{# isFew}}",l.tpl+=' <p class="few-tag">即将售罄</p>',l.tpl+=" {{/ isFew}}",l.tpl+=" {{#if showColBtn}}",l.tpl+=' <span class="col-btn iconfont{{#if coled}} coled{{/if}}"></span>',l.tpl+=" {{/if}}",l.tpl+=" </div>",l.tpl+=' <div class="good-detail-text">',l.tpl+=' <a href="{{url}}" target= "_blank">{{name}}</a>',l.tpl+=' <p class="price">',l.tpl+=' <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}">',l.tpl+=" ¥{{salePrice}}",l.tpl+=" </span>",l.tpl+=" {{# marketPrice}}",l.tpl+=' <span class="market-price">¥{{.}}</span>',l.tpl+=" {{/ marketPrice}}",l.tpl+=" </p>",l.tpl+=" </div>",l.tpl+="</div>",l.tpl+="{{/each}}",e.pageCount=u*p[0],t(c,e,e.count)}),l.init()}}]); \ No newline at end of file diff --git a/public/dist/yohobuy-node/0.0.1/index.css b/public/dist/yohobuy-node/0.0.1/index.css deleted file mode 100644 index 3549969..0000000 --- a/public/dist/yohobuy-node/0.0.1/index.css +++ /dev/null @@ -1 +0,0 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,td,th{text-align:left;font-weight:400;vertical-align:middle}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}.clearfix:after{content:'';display:block;clear:both}body{font-family:arial,Microsoft YaHei}@font-face{font-family:iconfont;src:url(../assets/font/iconfont.eot?v15551efcef6);src:url(../assets/font/iconfont.eot?v15551efcef6#iefix) format('embedded-opentype'),url(../assets/font/iconfont.woff?v15551f02c0f) format('woff'),url(../assets/font/iconfont.ttf?v15551efd145) format('truetype'),url(../assets/font/iconfont.svg?v15551efcfe6#iconfont) format('svg')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;text-decoration:none;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.min-screen .center-content{width:990px}.left,.pull-left{float:left}.pull-right,.right{float:right}.center{text-align:center}.hide{display:none!important}a:focus,input,textarea{outline:none}a{text-decoration:none;color:#000}.body-mask{position:absolute;z-index:8;background:#000;opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";top:0;left:0}.yoho-page .floor-header{position:relative;margin:80px 0 40px}.yoho-page .floor-header .floor-title{margin:0 auto;width:298px;height:31px;line-height:31px;border:1px solid #000;font-size:16px;text-align:center}.yoho-page .floor-header .header-navs{position:absolute;padding:10px 0;top:0;right:0;font-size:14px}.yoho-page .floor-header .header-navs li{float:left;padding:1px 15px;border-left:1px solid #ccc}.yoho-page .floor-header .header-navs li a{color:#333}.yoho-page .floor-header .header-navs li:first-child{border-left:none}.yoho-page .floor-header .header-navs li:hover{text-decoration:underline}.home-page .flash-sale .flash-sale-list{margin-left:-10px}.home-page .flash-sale .flash-sale-list a{height:340px;width:560px}.home-page .flash-sale .flash-sale-list li{margin:10px}.home-page .flash-sale .flash-sale-list .flash-sale-banner{position:relative;height:260px}.home-page .flash-sale .flash-sale-list .flash-sale-bottom{height:78px;position:relative;border:1px solid #000;border-top-style:none}.home-page .flash-sale .flash-sale-list p.flash-sale-count{position:absolute;left:50px;top:20px}.home-page .flash-sale .flash-sale-list p.flash-sale-name{position:absolute;left:120px;top:20px}.home-page .flash-sale .flash-sale-list p.flash-sale-timer{position:absolute;left:50px;top:50px}.home-page .flash-sale .flash-sale-list .flash-sale-logo{position:absolute;right:50px;width:100px;height:80px}.home-page .flash-sale .flash-sale-list .flash-sale-logo img{width:100px;height:50px;margin-top:15px}.yoho-header .tool-wrapper{width:100%;height:32px;line-height:32px;font-size:12px;background-color:#f4f4f4}.yoho-header .tool-wrapper .yoho-group-map{padding:0 5px}.yoho-header .tool-wrapper .yoho-group-map .yoho-group-list{position:absolute;display:none;width:170px;top:32px;margin-left:-5px;background-color:#f4f4f4;padding:20px 0 20px 20px;z-index:10}.yoho-header .tool-wrapper .yoho-group-map li a{color:#9196a0;font-size:14px}.yoho-header .tool-wrapper .yoho-group-map li:hover a{color:#000}.yoho-header .tool-wrapper .yoho-group-map:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .yoho-group-map:hover .yoho-group-list{display:block}.yoho-header .tool-wrapper .yoho-buy-tools li{float:left;padding-right:10px}.yoho-header .tool-wrapper .yoho-buy-tools li span{display:inline-block;vertical-align:middle;line-height:30px}.yoho-header .tool-wrapper .yoho-buy-tools li .hi{vertical-align:top}.yoho-header .tool-wrapper .yoho-buy-tools li a{color:#8e8e8e}.yoho-header .tool-wrapper .yoho-buy-tools .nick-name{color:#000}.yoho-header .tool-wrapper .yoho-buy-tools .tag-seprate{width:0;margin-top:11px;margin-right:12px;height:14px;float:left;border-left:1px solid #dcdcdc}.yoho-header .tool-wrapper .simple-user-center{top:32px;margin-left:-110px;width:300px;position:absolute;background-color:#f8f8f8;z-index:8;display:none}.yoho-header .tool-wrapper .simple-user-center .account-info-header{margin:17px auto 0;width:257px;border-bottom:1px solid #dcdcdc;text-align:center;padding-bottom:15px}.yoho-header .tool-wrapper .simple-user-center .user-img{width:63px;height:63px;margin:0 auto;border-radius:50%;overflow:hidden;background:url(../assets/img/layout/default-thumb.png?v15551f02c43) 50%;filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale')";background-size:100% 100%;-moz-background-size:100% 100%}.yoho-header .tool-wrapper .simple-user-center .user-name{margin-top:14px;line-height:25px}.yoho-header .tool-wrapper .simple-user-center .user-level{color:#000;height:20px;line-height:20px;font-size:18px}.yoho-header .tool-wrapper .simple-user-center .user-level span{color:#8cc4f9}.yoho-header .tool-wrapper .simple-user-center .level-detail{font-size:14px;line-height:14px;padding-top:10px;padding-left:20px}.yoho-header .tool-wrapper .simple-user-center .level-view-bar{width:150px;height:14px;margin-right:5px;text-align:left;background-color:#e2e2e2;display:inline-block;vertical-align:middle;overflow:hidden}.yoho-header .tool-wrapper .simple-user-center .level-view-bar .text-span{font-size:16px;line-height:16px;padding-left:3px;position:absolute}.yoho-header .tool-wrapper .simple-user-center .level-view-bar .integrate{height:14px;background-color:#ceae64;padding-left:5px}.yoho-header .tool-wrapper .simple-user-center .account-info-content{padding:20px 30px 0;border-bottom:1px solid #dcdcdc}.yoho-header .tool-wrapper .simple-user-center .account-info-content li{float:none;font-size:16px}.yoho-header .tool-wrapper .simple-user-center .account-info-content a{font-size:14px;color:#000}.yoho-header .tool-wrapper .simple-user-center .account-info-footer{height:51px;line-height:51px;text-align:center}.yoho-header .tool-wrapper .simple-user-center .account-info-footer a{font-size:14px;color:#000}.yoho-header .tool-wrapper .myyoho:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .myyoho:hover .simple-user-center{display:block}.yoho-header .tool-wrapper .download-app-box{position:absolute;top:32px;margin-left:-100px;width:231px;height:290px;background-color:#f8f8f8;z-index:10;display:none}.yoho-header .tool-wrapper .download-app-box .qr-img{position:relative;background-image:url(../assets/img/layout/qr.png?v15551f02c70);background-repeat:no-repeat;background-size:100% 100%;margin:32px auto 15px;width:143px;height:147px}.yoho-header .tool-wrapper .download-app-box .qr-words{height:25px;line-height:25px;font-size:16px;text-align:center}.yoho-header .tool-wrapper .download-app-box .qr-more{margin-top:6px;line-height:25px;font-size:14px;text-align:center}.yoho-header .tool-wrapper .phoneapp:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .phoneapp:hover .download-app-box{display:block}.yoho-header .tool-wrapper .icon-hamburger{background-image:url(../assets/img/sprite.layout.png?v15551f03761);background-position:0 -12px;width:16px;height:12px;display:inline-block;vertical-align:middle}.yoho-header .tool-wrapper .icon-bottomarrow{background-position:-30px -13px;height:5px}.yoho-header .tool-wrapper .icon-bottomarrow,.yoho-header .tool-wrapper .icon-papers{background-image:url(../assets/img/sprite.layout.png?v15551f03761);width:10px;margin-top:-2px}.yoho-header .tool-wrapper .icon-papers{background-position:-18px 0;height:14px}.yoho-header .tool-wrapper .icon-heart{background-position:-30px 0;width:12px;height:11px}.yoho-header .tool-wrapper .icon-heart,.yoho-header .tool-wrapper .icon-mail{background-image:url(../assets/img/sprite.layout.png?v15551f03761);margin-top:-2px}.yoho-header .tool-wrapper .icon-mail{background-position:0 0;width:16px;height:10px}.yoho-header .tool-wrapper .icon-phone{background-image:url(../assets/img/sprite.layout.png?v15551f03761);background-position:0 -25px;width:8px;height:14px;margin-top:-2px}.yoho-header .head-wrapper{width:100%}.yoho-header .head-wrapper .main-nav-list{display:inline-block;vertical-align:top;padding-top:45px}.yoho-header .head-wrapper .main-nav-list li{float:left;padding:8px 23px 5px}.yoho-header .head-wrapper .main-nav-list li a{font-size:12px;line-height:14px}.yoho-header .head-wrapper .main-nav-list li .name-cn a{font-size:16px}.yoho-header .head-wrapper .main-nav-list .cure{color:#fff;background-color:#3a3a3a}.yoho-header .head-wrapper .main-nav-list .cure a{color:#fff}.yoho-header .head-wrapper .main-nav-list .menu-ico{width:80px;height:32px;display:block}.yoho-header .head-wrapper .outlets-logo{background:url(../assets/img/layout/outlets.png?v15551f02c69) no-repeat 50%;width:200px;height:34px;left:42%;margin-top:28px;position:absolute;display:none}.yoho-header .head-wrapper .main-logo{background:url(../assets/img/layout/logo-en.png?v15551f02c59) no-repeat 50%;width:182px;height:53px;left:42%;margin-top:22px;position:absolute;animation:logoflip 20s infinite;-moz-animation:logoflip 20s infinite;-webkit-animation:logoflip 20s infinite;-o-animation:logoflip 20s infinite}.yoho-header .head-wrapper .main-logo .main-link{display:block;width:100%;height:100%}.yoho-header .head-wrapper .main-logo.logo-cn{background:url(../assets/img/layout/logo-cn.png?v15551f02c57) no-repeat 50%}.yoho-header .head-wrapper .func-area{float:right;width:378px;padding-right:18px;margin-top:45px;margin-bottom:12px}.yoho-header .head-wrapper .search-2016{width:320px;height:28px;background-color:#3a3a3a;border:1px solid #3a3a3a;display:inline-block;overflow:hidden}.yoho-header .head-wrapper .search-2016 input{width:240px;height:100%;border:none;background:#fff;box-sizing:border-box;padding:7px 0 9px 10px}.yoho-header .head-wrapper .search-2016 .search-btn{background:url(../assets/img/layout/search.png?v15551f02c73) no-repeat 50%;width:80px;height:28px;float:right;border:none;cursor:pointer}.yoho-header .head-wrapper .search-suggest{position:absolute;width:320px;border:1px solid #000;margin-top:29px;padding-top:20px;background-color:#fff;display:none;z-index:10}.yoho-header .head-wrapper .search-suggest .action,.yoho-header .head-wrapper .search-suggest li:hover{background-color:#eee}.yoho-header .head-wrapper .search-suggest a{display:block;padding:5px;height:25px;line-height:25px;font-size:12px}.yoho-header .head-wrapper .search-suggest .valuenum{float:right}.yoho-header .head-wrapper .go-cart{width:30px;height:30px;float:right;cursor:pointer;position:relative}.yoho-header .head-wrapper .go-cart .iconfont{font-size:26px;color:#3a3a3a}.yoho-header .head-wrapper .go-cart .goods-num-tip{position:absolute;background:url(../assets/img/layout/ic-information.png?v15551f02c4d) no-repeat;width:27px;height:20px;top:-10px;right:-15px;color:#fff;text-align:center;line-height:20px;font-size:12px}.yoho-header .head-wrapper .mini-cart-wrapper{position:absolute;top:30px;right:-14px;width:378px;background:#f8f8f8 url(../assets/img/layout/empty_car.png?v15551f02c47) no-repeat 106px 132px;z-index:10;display:none}.yoho-header .head-wrapper .mini-cart-wrapper .empty-cart{padding:280px 0 200px;text-align:center}.yoho-header .head-wrapper .mini-cart-wrapper .loading-cart{padding:200px 0;text-align:center;background:#f8f8f8 reslove('layout/loading.gif') no-repeat center 170px}.yoho-header .head-wrapper .mini-cart-wrapper .rich-cart{background:#f8f8f8}.yoho-header .head-wrapper .mini-cart-wrapper .goods-list{padding-top:20px;margin-bottom:15px;max-height:444px;overflow-x:hidden}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item{padding:0 0 18px 18px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item>div{font-size:14px;display:inline-block;vertical-align:top}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item p{margin-bottom:12px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-img{width:60px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-info{width:170px;color:#b0b0b0}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-price{min-width:90px;text-align:right}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .title{width:170px;height:14px;font-size:14px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .title>a{color:#666}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item{font-size:14px;margin-bottom:8px;padding-left:18px;line-height:18px}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item label{width:60px;height:18px;background-color:#3a3a3a;color:#fff;text-align:center;margin-right:13px;vertical-align:top;display:inline-block}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item h3{width:250px;color:#3a3a3a;font-size:12px;word-break:break-all;display:inline-block}.yoho-header .head-wrapper .mini-cart-wrapper .go-full-cart{padding:0 18px}.yoho-header .head-wrapper .mini-cart-wrapper .go-full-cart>div{height:61px;line-height:61px;border-top:1px solid #dcdcdc;text-align:center}.yoho-header .head-wrapper .on-hover .mini-cart-wrapper{display:block}.yoho-header .nav-wrapper{height:40px;width:100%;background-color:#3a3a3a;position:relative}.yoho-header .nav-wrapper .sub-nav-list li{line-height:40px;padding-right:46px;box-sizing:border-box;margin-right:36px;display:inline-block}.yoho-header .nav-wrapper .sub-nav-list .newlogo{display:block;width:26px;height:12px;background-image:url(../assets/img/layout/new.png?v15551f02c67);background-repeat:no-repeat;position:absolute;right:-29px;top:-6px}.yoho-header .nav-wrapper .sub-nav-list a{color:#fff;font-size:14px;line-height:14px;display:inline-block;position:relative}.yoho-header .nav-wrapper .sub-nav-list li:hover a{padding-bottom:3px;border-bottom:2px solid #fff}.yoho-header .nav-wrapper .third-nav-wrapper{width:100%;height:410px;box-sizing:border-box;position:absolute;left:0;top:38px;display:none;padding:30px 0;background-color:#f8f8f8;z-index:9}.yoho-header .nav-wrapper .third-nav-wrapper a{font-size:14px;border-bottom:none!important}.yoho-header .nav-wrapper .third-nav-wrapper dl{float:left;width:278px;height:352px;box-sizing:border-box;border-left:1px solid #ccc;padding:0 50px}.yoho-header .nav-wrapper .third-nav-wrapper dl:first-child{width:228px;border-left:0;padding-left:0}.yoho-header .nav-wrapper .third-nav-wrapper dt{width:180px;padding-bottom:10px;border-bottom:1px solid #000;line-height:18px;margin-bottom:20px}.yoho-header .nav-wrapper .third-nav-wrapper dt a{color:#000}.yoho-header .nav-wrapper .third-nav-wrapper dd{line-height:14px;height:14px;margin-bottom:24px}.yoho-header .nav-wrapper .third-nav-wrapper dd a{color:#a1a1a1}.yoho-header .nav-wrapper .third-nav-wrapper dd a:hover{text-decoration:underline}.yoho-header .nav-wrapper .third-nav-wrapper .hot{color:#e01}.yoho-header .nav-wrapper .show-detail{box-sizing:border-box;padding-left:19px;padding-right:19px;width:337px;height:250px;float:right}.yoho-header .nav-wrapper .show-detail .title{width:100%;margin-top:40px;text-align:center;font-size:14px;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yoho-header.girls .search-2016{background-color:#ff88ae;border-color:#ff88ae}.yoho-header.girls .cure,.yoho-header.girls .nav-wrapper{background-color:#ff88ae!important}.yoho-header.girls .go-cart .iconfont{color:#ff88ae}.yoho-header.kids .search-2016{background-color:#7bd3f9;border-color:#7bd3f9}.yoho-header.kids .cure,.yoho-header.kids .nav-wrapper{background-color:#7bd3f9!important}.yoho-header.kids .go-cart .iconfont{color:#7bd3f9}.yoho-header.lifestyle .search-2016{background-color:#5e4b3c;border-color:#5e4b3c}.yoho-header.lifestyle .cure,.yoho-header.lifestyle .nav-wrapper{background-color:#5e4b3c!important}.yoho-header.lifestyle .go-cart .iconfont{color:#5e4b3c}.yoho-header.outlets .head-wrapper{background:#3a3a3a}.yoho-header.outlets .nav-wrapper{background:#e6e6e6}.yoho-header.outlets .main-logo,.yoho-header.outlets .main-nav-list,.yoho-header.outlets .search-2016{display:none}.yoho-header.outlets .outlets-logo{display:block}.yoho-header.outlets .go-cart .iconfont{color:#fff}.yoho-header.outlets .sub-nav-list{padding-left:15%}.yoho-header.outlets .sub-nav-list a{color:#222}.yoho-header.outlets .sub-nav-list li{padding:0;margin:0;width:14%;text-align:center}.yoho-header.outlets .sub-nav-list li:hover a{border-color:#555}.min-screen .head-wrapper .main-nav-list>li{padding:8px 14px 5px}.min-screen .nav-wrapper .sub-nav-list>li{margin-right:15px}.min-screen .nav-wrapper .show-detail{width:190px;padding-right:0}.min-screen .head-wrapper .main-logo{left:39%}.min-screen .show-detail img{width:174px;height:155px}.yoho-footer{font-size:12px}.yoho-footer *{box-sizing:border-box}.yoho-footer .red{color:#e01}.yoho-footer .rgb6{color:#666}.yoho-footer .rgb9{color:#999}.yoho-footer .rgbf{color:#fff}.yoho-footer .index-foot{background:#eee;padding:20px 0}.yoho-footer .index-foot dd{float:left;width:370px;margin-right:20px;overflow:hidden}.yoho-footer .index-foot dd ul{margin-top:18px;padding-top:18px}.yoho-footer .index-foot dd.last{margin-right:0}.yoho-footer .foot-panel{background:#fff;padding:20px}.yoho-footer .title{position:relative;text-align:center}.yoho-footer .title-line{border-bottom:1px solid #ddd;position:absolute;top:9px;width:100%;left:0}.yoho-footer .text{position:absolute;width:100%;text-align:center;left:0;top:0}.yoho-footer .text span{background:#fff;font-size:18px;line-height:18px;padding:0 10px}.yoho-footer .item-nav{padding-top:20px}.yoho-footer .item-nav span{color:#fff;padding:0 3px;cursor:pointer;font-size:20px}.yoho-footer .item-nav .cur{color:#999}.yoho-footer .vote{line-height:24px}.yoho-footer .vote input{margin:0 5px 0 1px}.yoho-footer .vote .button{height:24px;line-height:24px;width:55px;font-size:12px;margin-top:11px;margin-right:10px;background:#222;color:#fff;display:inline-block;text-align:center;cursor:pointer}.yoho-footer .vote p{height:24px;overflow:hidden}.yoho-footer .vote textarea{width:98%;height:68px;vertical-align:middle;margin:5px 0 0;resize:none}.yoho-footer .vote-item p{float:left;width:50%}.yoho-footer .mobile{margin-right:-10px}.yoho-footer .mobile li{margin-right:10px;float:left}.yoho-footer .mobile img{display:block;width:103px;height:131px}.yoho-footer .index-banner{width:100%;margin-top:20px}.yoho-footer .two-dim{margin-right:-10px;overflow:hidden}.yoho-footer .two-dim li{border:1px solid #ddd;padding:7px;margin-right:10px}.yoho-footer .two-dim li a{display:block}.yoho-footer .two-dim li p{text-align:center;margin-top:13px;margin-bottom:3px;line-height:12px}.yoho-footer .dim-img{display:block;width:87px;height:87px}.yoho-footer .dim-hover{position:absolute}.yoho-footer .dim-hover img{width:38px;height:38px}.yoho-footer .dim-active .dim-img{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.yoho-footer .dim-active .dim-hover{display:none}.yoho-footer .footerbottom{width:100%}.yoho-footer .promise{padding:20px 0 10px;background:#000}.yoho-footer .promise .left{margin-right:60px;line-height:30px;font-size:12px;font-weight:700}.yoho-footer .promise .left .iconfont{display:inline-block;font-weight:400;font-size:22px;vertical-align:middle;margin-right:5px}.yoho-footer .promise .left:first-child .iconfont{font-size:27px}.yoho-footer .subscribe{border:1px solid #262626;width:240px}.yoho-footer .subscribe input{width:180px;height:32px;padding:0 10px;line-height:32px;border:none;margin:0;background:#000}.yoho-footer .subscribe a{display:block;float:right;margin-right:20px;font-size:20px;line-height:28px;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.yoho-footer .footer-help{background:#000;font-size:12px;overflow:hidden}.yoho-footer .footer-help>div{padding:15px 0;border-top:1px solid #262626}.yoho-footer .footer-help ul{width:110%}.yoho-footer .footer-help p{line-height:24px}.yoho-footer .footer-help p span{color:#fff}.yoho-footer .footer-help p a{color:#666}.yoho-footer .footer-help p a:hover{text-decoration:underline}.yoho-footer .footer-help li{width:180px}.yoho-footer .footer-help .screen{border-top:1px solid #262626;padding:15px 0}.yoho-footer .footer-link{background:#000;padding:10px 0 30px;font-size:12px}.yoho-footer .footer-link .right-flag{margin-top:3px}.yoho-footer .footer-link .right-flag a{margin-right:5px}.yoho-footer .footer-link .about-us{line-height:20px;color:#666;margin-left:10px}.yoho-footer .footer-link .about-us a{color:#666}.yoho-footer .footer-link .about-us span{padding:0 10px}.yoho-footer .return-top{position:fixed;width:60px;height:60px;left:50%;margin-left:595px;text-align:center;line-height:50px;color:#fff;background:#000;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";bottom:20px;cursor:pointer;z-index:4}.yoho-footer .return-top .iconfont{font-size:34px}.yoho-footer .return-top:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.yoho-footer .return-top.min{left:100%;right:20px;margin-left:auto}.min-screen .yoho-footer .index-foot dd{width:316px}.min-screen .yoho-footer .two-dim{margin-top:26px;margin-bottom:10px;overflow:hidden}.min-screen .yoho-footer .dim-img{width:69px;height:69px}.min-screen .yoho-footer .mobile{margin-top:26px;padding-bottom:15px}.min-screen .yoho-footer .mobile img{width:85px;height:108px}.min-screen .yoho-footer .promise .left{margin-right:45px}.min-screen .yoho-footer .subscribe{width:200px}.min-screen .yoho-footer .subscribe input{width:140px}.min-screen .yoho-footer .footer-help li{width:150px}.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:5}.unslider-fade .unslider-wrap li.unslider-active{z-index:6}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px}.wrapper-404{padding:80px 0}.wrapper-404 .main-error{width:560px;height:240px;margin:0 auto}.wrapper-404 .main-error .text1{font-size:24px;margin-top:60px;line-height:24px}.wrapper-404 .main-error .text2{margin:18px 0 10px;line-height:12px}.wrapper-404 .main-error .text3 a{text-decoration:none;color:#666;font-size:12px;outline:none}.slider{position:relative;height:327px;width:100%;overflow:hidden}.slider img{max-width:100%;max-height:100%}.slide-pagination{position:absolute;left:0;right:0;bottom:12px;text-align:center}.slide-pagination-inner{display:inline-block;position:relative;padding:7px;vertical-align:middle}.slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.slide-pagination-last span{display:block;float:left;position:relative;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.slide-pagination-last span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.slide-switch{display:none}.slide-switch a{display:block;position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.slide-switch a .iconfont{font-size:32px;color:#59585a}.slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.slide-switch .prev{left:0}.slide-switch .next{right:0}.slide-switch.show{display:block}.yoho-dialog{position:fixed;padding:20px;top:50%;left:50%;min-height:130px;min-width:350px;background:#f8f8f8;z-index:11;border:5px solid rgba(0,0,0,.38)}.yoho-dialog .close{position:absolute;top:5px;right:5px;cursor:pointer}.yoho-dialog .btns,.yoho-dialog .content{text-align:center}.yoho-dialog .alert-sure,.yoho-dialog .confirm-sure{background:#000;color:#fff}.yoho-dialog .btn{display:inline-block;width:56px;height:26px;line-height:26px;text-align:center;border:1px solid #000;cursor:pointer;margin-left:10px}.yoho-dialog .btn:first-child{margin-left:0}.yoho-dialog.alert-dialog .content,.yoho-dialog.confirm-dialog .content{width:350px;height:auto;min-height:90px;overflow:hidden;line-height:20px;position:relative;padding-top:40px;padding-bottom:20px}.yoho-dialog.alert-dialog .content p,.yoho-dialog.confirm-dialog .content p{position:absolute;left:0;bottom:25px;width:100%;color:#444;line-height:25px}.yoho-dialog.alert-dialog .content div,.yoho-dialog.confirm-dialog .content div{position:absolute;top:0;left:100px;padding-top:30px;font-size:22px;font-weight:700;width:150px;height:30px;line-height:30px;margin:0 auto}.yoho-dialog.alert-dialog .content div span,.yoho-dialog.confirm-dialog .content div span{background:url(/cart/del.png);float:left;width:27px;height:30px}.yoho-dialog.subcontent-dialog{padding:30px 0}.yoho-dialog.subcontent-dialog .content{font-weight:700;margin:0 auto 30px}.yoho-dialog.subcontent-dialog .sub-content{text-align:center;font-size:12px;color:#555;margin-left:5px;margin-bottom:5px}.yoho-dialog.subcontent-dialog .btn{margin-top:25px;width:100px;font-size:13px;margin-left:0;margin-right:0}.yoho-dialog.subcontent-dialog .btn.black{background-color:#000;color:#fff}.home-page{width:1150px;margin:10px auto 0}.home-page .slide-container{position:absolute;left:0;right:0;height:450px}.home-page .slide-thumb-container{height:510px}.home-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.home-page .slide-wrapper ul{position:relative;height:100%}.home-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:100%;height:100%}.home-page .slide-wrapper li a{display:block;height:100%;width:1150px;margin:0 auto}.home-page .slide-wrapper li img{width:100%;height:100%}.home-page .slide-wrapper:hover .slide-switch.show,.home-page .slide-wrapper li:first-child{display:block}.home-page .slide-container-placeholder{height:450px;width:100%}.home-page .slide-thumb-container-placeholder{height:510px}.home-page .slide-switch{display:block}.home-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.home-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.home-page .slide-switch a.prev{left:50%;margin-left:-575px}.home-page .slide-switch a.next{right:50%;margin-right:-575px}.home-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.home-page .thumb-pagination{width:1148px;margin:6px auto 0;padding-left:2px}.home-page .thumb-pagination li{position:relative;float:left;margin-left:6px;width:138px;height:54px}.home-page .thumb-pagination li a{position:absolute;left:0;right:0;bottom:0;top:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.home-page .thumb-pagination li img{width:100%;height:100%}.home-page .thumb-pagination li:first-child{margin:0}.home-page .thumb-pagination li.focus a{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.home-page .slide-pagination{font-size:0}.home-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.home-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.home-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.home-page .debris-slider{height:510px;width:100%}.home-page .debris-slider .col{float:left}.home-page .debris-slider .col a{display:block}.home-page .debris-slider .left-col a,.home-page .debris-slider .right-col a{margin-bottom:10px}.home-page .debris-slider .left-col a:last-child,.home-page .debris-slider .right-col a:last-child{margin-bottom:0}.home-page .debris-slider .left-col img,.home-page .debris-slider .right-col img{height:100%;width:100%}.home-page .debris-slider .left-col{margin-right:10px}.home-page .debris-slider .left-col a{width:280px;height:120px}.home-page .debris-slider .left-col a:first-child{height:250px}.home-page .debris-slider .center-col{position:relative;width:570px;height:100%;margin-right:10px;font-size:0}.home-page .debris-slider .center-col .slide-wrapper{height:100%}.home-page .debris-slider .center-col .slide-wrapper a{width:100%}.home-page .debris-slider .center-col .slide-switch a.prev{left:0;margin-left:0}.home-page .debris-slider .center-col .slide-switch a.next{right:0;margin-right:0}.home-page .debris-slider .center-col img{max-width:100%;max-height:100%}.home-page .debris-slider .center-col:hover .slide-switch.show{display:block}.home-page .debris-slider .right-col a{width:280px;height:120px}.home-page .debris-slider .right-col a:first-child{height:380px;margin-bottom:11px}.home-page .new-report img{display:block;width:100%;height:100%}.home-page .new-report .report-list{float:left;width:868px}.home-page .new-report .report-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px;overflow:hidden}.home-page .new-report .report-list li:first-child{margin-right:7px;width:282px;height:504px}.home-page .new-report .last-item{float:left;width:282px;height:504px;overflow:hidden}.home-page .preference-brand{overflow:hidden}.home-page .preference-brand-list{margin-top:8px;width:1158px}.home-page .preference-brand-item{float:left;margin-right:8px;margin-bottom:8px}.home-page .preference-brand-item a{display:table-cell;width:185px;height:86px;text-align:center;vertical-align:middle}.home-page .preference-brand-item img{display:block;max-width:100%;max-height:100%;margin:0 auto}.home-page .preference-more{float:left;width:185px;height:86px;line-height:100px;text-align:center;color:#000;font-size:16px}.home-page .img-slider-wrapper{position:relative;width:100%;height:558px;background:#8ae6e0;overflow:hidden}.home-page .img-slider-wrapper .img-brand-switch{display:block}.home-page .img-slider-wrapper .img-brand-switch a{position:absolute;top:50%;font-size:36px;color:#fff}.home-page .img-slider-wrapper .img-brand-switch a.next{right:30px}.home-page .img-slider-wrapper .img-brand-switch a.prev{left:30px}.home-page .img-container-landscape{box-sizing:border-box;margin:86px auto 0;width:982px;height:433px;overflow:hidden}.home-page .img-container-landscape .img-list{width:1000px;height:100%}.home-page .img-container-landscape .img-item{float:left;box-sizing:border-box;width:320px!important;height:100%;margin-right:10px}.home-page .img-container-landscape .img-item img{width:100%;height:100%}.home-page .img-brand{position:relative;width:100%;height:175px;overflow:hidden}.home-page .img-brand ul{width:1158px}.home-page .img-brand li{float:left;margin-right:8px;width:378px!important;height:175px;line-height:175px;overflow:hidden;font-size:0;text-align:center}.home-page .img-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.home-page .img-brand .img-brand-switch{display:none}.home-page .img-brand .img-brand-switch a{position:absolute;top:50%;margin:-20px 0 0;width:40px;height:40px;line-height:40px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.home-page .img-brand .img-brand-switch a.prev{left:0}.home-page .img-brand .img-brand-switch a.next{right:0}.home-page .img-brand .img-brand-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.home-page .img-brand:hover .img-brand-switch{display:block}.home-page .logo-brand{width:100%;height:282px;overflow:hidden}.home-page .logo-brand ul{width:1158px}.home-page .logo-brand li{float:left;margin:8px 8px 0 0;width:185px;height:86px;line-height:86px;font-size:0;text-align:center}.home-page .logo-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.home-page .logo-brand .logo-brand-switch{position:relative;background:url(../../../img/index/logo-brand-line.png?v15529250dc2) no-repeat 50%;line-height:normal}.home-page .logo-brand .logo-brand-switch .iconfont{position:absolute;left:50%;font-size:32px}.home-page .logo-brand .logo-brand-switch .iconfont.prev{top:10px;margin-left:-48px}.home-page .logo-brand .logo-brand-switch .iconfont.next{bottom:12px;margin-left:20px}.home-page .logo-brand .brand-more{font-size:16px}.home-page .logo-brand .brand-more:hover{text-decoration:underline}.home-page .logo-brand.logos-10{height:188px}.home-page .categorys-list ul{width:1158px}.home-page .categorys-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px}.home-page .categorys-list li img{display:block;width:100%;height:100%}.home-page .categorys-list li.cate-item0{width:185px;height:504px}.home-page .categorys-list li.cate-item1{width:377px;height:504px}.home-page .floor-header{position:relative;margin:80px 0 40px}.home-page .floor-header .floor-title{margin:0 auto;width:298px;height:31px;line-height:31px;border:1px solid #000;font-size:16px;text-align:center}.home-page .floor-header .header-navs{position:absolute;padding:10px 0;top:0;right:0;font-size:14px}.home-page .floor-header .header-navs li{float:left;padding:1px 15px;border-left:1px solid #ccc}.home-page .floor-header .header-navs li a{color:#333}.home-page .floor-header .header-navs li:first-child{border-left:none}.home-page .floor-header .header-navs li:hover{text-decoration:underline}.g-list li{float:left}.g-list li a{position:relative;display:block;overflow:hidden}.g-list li a img,.g-mask{width:100%;height:100%}.g-mask{display:block;position:absolute;z-index:1;background:#000;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";overflow:hidden;transition:opacity .6s}.g-title{display:block;text-align:center;font-weight:700;line-height:1.5;width:100%;margin-top:14px}.home-page .tpl-recommend{width:100%;position:relative}.home-page .tpl-recommend a{display:block}.home-page .tpl-recommend a img{display:block;width:100%;height:100%}.home-page .tpl-recommend .tpl-body{margin-bottom:8px}.home-page .tpl-recommend .tpl-nav{float:left;overflow:hidden}.home-page .tpl-recommend .tpl-nav .tpl-keywords{margin-bottom:8px}.home-page .tpl-recommend .tpl-nav .tpl-category{padding:10px 0;background-color:#f8f8f8;overflow:hidden}.home-page .tpl-recommend .tpl-nav .tpl-category a{float:left;width:50%;text-align:center;color:#000;overflow:hidden}.home-page .tpl-recommend .tpl-brands{float:left;overflow:hidden;margin-left:8px}.home-page .tpl-recommend .tpl-brands li{margin-top:8px}.home-page .tpl-recommend .tpl-types{float:left;overflow:hidden;margin-top:-8px;width:579px}.home-page .tpl-recommend .tpl-types li{float:left;margin-left:8px;margin-top:8px}.home-page .tpl-recommend .tpl-types li a{width:185px;height:248px}.home-page .tpl-recommend .tpl-products{overflow:hidden;margin-left:-10px}.home-page .tpl-recommend .tpl-products li{float:left;margin-left:10px}.home-page .tpl-recommend .tpl-products li a{width:222px;height:298px}.home-page .tpl-recommend .tpl-nav{width:185px}.home-page .tpl-recommend .tpl-nav .keywords0,.home-page .tpl-recommend .tpl-nav .keywords1,.home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:10px;height:76px}.home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.home-page .tpl-recommend .tpl-nav .tpl-category{height:228px}.home-page .tpl-recommend .tpl-nav .tpl-category a{height:38px;line-height:38px;font-size:14px}.home-page .tpl-recommend .tpl-brands{width:378px;height:512px}.home-page .tpl-recommend .tpl-brands li a{height:248px}.min-screen .home-page .tpl-recommend .tpl-nav{width:158px}.min-screen .home-page .tpl-recommend .tpl-nav .keywords0,.min-screen .home-page .tpl-recommend .tpl-nav .keywords1,.min-screen .home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:8px;height:65px}.min-screen .home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category{height:192px}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category a{height:32px;line-height:32px;font-size:12px}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category a:hover{text-decoration:underline}.min-screen .home-page .tpl-recommend .tpl-brands{width:324px;height:432px}.min-screen .home-page .tpl-recommend .tpl-brands li a{height:212px}.min-screen .home-page .tpl-recommend .tpl-types{width:498px}.min-screen .home-page .tpl-recommend .tpl-types li a{width:158px;height:212px}.min-screen .home-page .tpl-recommend .tpl-products li a{width:190px;height:254px}.home-page .singlehot{overflow:hidden;margin-left:-8px}.home-page .singlehot li{margin-left:8px;margin-bottom:8px}.home-page .singlehot li a{width:185px;height:248px}.home-page .singlehot .impo1,.home-page .singlehot .impo9{width:378px}.home-page .floor-ad a{display:block;height:129px}.home-page .floor-ad a img{display:block;width:100%;height:100%}.home-page .goods-container{margin-right:-10px;width:inherit;padding-top:0}.home-page .goods-container .good-info{margin-bottom:0;width:280px;height:485px}.home-page .goods-container .good-detail-img{height:374px}.home-page .goods-container .good-detail-text{text-align:center}.home-page .adbanner{margin-top:12px}.home-page .adbanner a{height:150px}.min-screen .home-page .singlehot li a{width:158px;height:212px}.min-screen .home-page .singlehot .impo1,.min-screen .home-page .singlehot .impo9{width:323px}.min-screen .home-page .goods-container .good-info{width:240px;height:412px}.min-screen .home-page .goods-container .good-info .good-detail-img{height:320px}.home-page .commodity .commodity-list{margin-left:-10px}.home-page .commodity .commodity-list a{height:465px;width:280px}.home-page .commodity .commodity-list li{margin-left:10px}.home-page .commodity .commodity-list i{position:absolute;bottom:0;width:100%;height:20px;background:#ffac5b;color:#fff;line-height:20px;text-align:center;font-size:12px}.home-page .commodity .commodity-list i.top{position:absolute;top:10px;right:10px;background-color:#ff575c;color:#fff;border-radius:30px;z-index:2;height:60px;width:60px;line-height:60px;font-size:20px}.home-page .commodity .commodity-list .commodity-img{position:relative;height:374px}.home-page .commodity .commodity-list p.commodity-name{font-size:12px;color:#000;text-align:center;margin-top:14px;line-height:18px}.home-page .commodity .commodity-list p.commodity-price{position:relative;margin:3px 0 0;text-align:center;line-height:20px;color:#000}.home-page .commodity .commodity-list p.commodity-price span{display:inline-block;font-size:12px}.home-page .commodity .commodity-brands{margin-left:-8px}.home-page .commodity .commodity-brands a{float:left;margin-left:8px;display:block;width:185px;height:86px}.home-page .commodity .commodity-brands a img{width:100%;height:100%}.home-page .commodity .loading{position:relative;width:100%;text-align:center;padding-top:40px}.home-page .commodity .loading a{display:block;height:35px;width:120px;margin:0 auto 40px;background-color:#000;color:#fff;font-size:14px;line-height:35px;text-align:center}.min-screen .home-page .commodity .commodity-list a{height:400px;width:240px}.min-screen .home-page .commodity .commodity-list .commodity-img{height:320px}.min-screen .home-page .commodity .commodity-list i.top{height:52px;width:52px;line-height:52px;font-size:14px}.min-screen .home-page .commodity .commodity-brands a{width:158px;height:74px}.home-page .slide-accordion{overflow:hidden;position:relative;height:400px}.home-page .slide-accordion a{position:relative;display:block}.home-page .slide-accordion a img{display:block;width:100%;height:100%}.home-page .slide-accordion ul{position:absolute;left:-5px}.home-page .slide-accordion li{position:absolute;border-left:5px solid #fff}.home-page .slide-accordion li a{width:650px;height:400px}.home-page .slide-accordion .g-mask{opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"}.home-page .slide-accordion .g-mask:hover{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.min-screen .home-page .slide-accordion{height:342px}.min-screen .home-page .slide-accordion li a{width:558px;height:342px}.boys .tpl-nav .keywords0{margin-bottom:10px!important;height:152px!important}.boys .tpl-nav .keywords1{height:86px!important}.boys .tpl-nav .tpl-category a{height:38px!important;line-height:38px!important;font-size:14px!important}.boys .tpl-brands{margin-top:-8px!important}.boys .goods-container .good-info,.lifestyle .goods-container .good-info{width:222px!important;height:408px!important}.boys .goods-container .good-info .good-detail-img,.lifestyle .goods-container .good-info .good-detail-img{height:298px!important}.min-screen .boys .tpl-nav .keywords0{margin-bottom:8px!important;height:130px!important}.min-screen .boys .tpl-nav .keywords1{margin-bottom:0!important;height:74px!important}.min-screen .boys .tpl-brands{margin-top:-8px!important}.min-screen .boys .goods-container .good-info,.min-screen .lifestyle .goods-container .good-info{width:188px;height:360px}.min-screen .boys .goods-container .good-info .good-detail-img,.min-screen .lifestyle .goods-container .good-info .good-detail-img{height:255px}.min-screen .home-page{width:990px}.min-screen .home-page .slide-container{height:387px}.min-screen .home-page .slide-container img{display:block}.min-screen .home-page .slide-thumb-container{height:440px}.min-screen .home-page .slide-container-placeholder{height:387px}.min-screen .home-page .slide-thumb-container-placeholder{height:440px}.min-screen .home-page .slide-wrapper{height:387px}.min-screen .home-page .slide-wrapper li a{width:990px}.min-screen .home-page .slide-switch{display:block}.min-screen .home-page .slide-switch a.prev{margin-left:-495px}.min-screen .home-page .slide-switch a.next{margin-right:-495px}.min-screen .home-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.min-screen .home-page .thumb-pagination{width:990px;margin:7px auto 0;padding:0}.min-screen .home-page .thumb-pagination li{width:118px;height:46px}.min-screen .home-page .debris-slider{height:440px}.min-screen .home-page .debris-slider .left-col{margin-right:9px}.min-screen .home-page .debris-slider .left-col a{width:240px;height:103px}.min-screen .home-page .debris-slider .left-col a:first-child{height:214px}.min-screen .home-page .debris-slider .center-col{width:492px;margin-right:9px}.min-screen .home-page .debris-slider .right-col a{width:240px;height:103px}.min-screen .home-page .debris-slider .right-col a:first-child{height:326px;margin-bottom:10px}.min-screen .home-page .new-report .report-list{width:748px}.min-screen .home-page .new-report .report-list li{width:158px;height:212px}.min-screen .home-page .new-report .last-item,.min-screen .home-page .new-report .report-list li:first-child{width:242px;height:432px}.min-screen .home-page .preference-brand-list{width:998px}.min-screen .home-page .preference-brand-item{margin-right:7px}.min-screen .home-page .preference-brand-item a{width:159px;height:74px}.min-screen .home-page .preference-more{width:159px;height:74px;line-height:90px}.min-screen .home-page .img-slider-wrapper{height:480px}.min-screen .home-page .img-container-landscape{margin:73px auto 0;width:844px;height:370px}.min-screen .home-page .img-container-landscape .img-item{width:275px;height:100%;margin-right:9px}.min-screen .home-page .img-brand{height:150px}.min-screen .home-page .img-brand ul{width:998px}.min-screen .home-page .img-brand li{width:325px;height:150px;line-height:150px}.min-screen .home-page .logo-brand{height:246px}.min-screen .home-page .logo-brand ul{width:998px}.min-screen .home-page .logo-brand li{margin:8px 8px 0 0;width:158px;height:74px;line-height:74px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont{font-size:24px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont.prev{top:-12px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont.next{bottom:-12px}.min-screen .home-page .logo-brand.logos-10{height:164px}.min-screen .home-page .categorys-list ul{width:1004px}.min-screen .home-page .categorys-list li{margin:0 7px 7px 0;width:161px;height:214px}.min-screen .home-page .categorys-list li.cate-item0{width:160px;height:435px}.min-screen .home-page .categorys-list li.cate-item1{width:326px;height:435px}.min-screen .home-page .floor-header{margin:50px 0 30px}.min-screen .home-page .floor-header .header-navs li{padding:1px 10px}.brands .path-nav{border-bottom:none;margin-bottom:0;padding-top:10px;padding-bottom:20px}.brands .brands-tabs{position:relative}.brands .brands-tabs a{display:block}.brands .brands-tabs a img{width:100%;height:100%;display:block}.brands .brands-tabs li{float:left}.brands .brands-tabs li p{display:block;font-size:30px;text-align:center;color:#dedede;position:absolute;top:50%;width:100%;margin-top:-15px;z-index:3}.brands .brands-tabs li .g-mask{opacity:.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"}.brands .brands-tabs li .g-mask-on,.brands .brands-tabs li:hover .g-mask{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.brands .brands-tabs .hover-contain{position:relative;border-bottom:1px solid #dfdfdf}.brands .brands-tabs .hover-contain .hoverarr{background-color:#3d3d3d;position:absolute;bottom:0;z-index:6}.brands .brands-tabs .hover-contain .hoverarr i{width:0;height:0;position:absolute;left:50%;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #3d3d3d;top:-6px;margin-left:-3px}.brands .header-navs{margin-right:-15px}.brands .category-nav{border:2px solid #222;padding-left:16px;height:44px;line-height:44px;font-size:12px;font-weight:700;position:relative;z-index:8;background-color:#fff}.brands .category-nav span{display:inline-block;margin-right:15px}.brands .category-nav a{display:inline-block;padding:0 7px;text-align:center;color:#222;cursor:pointer}.brands .category-fix{position:fixed;top:0;z-index:8;margin-top:0!important}.brands .brands-list dl{position:relative;border-top:1px dotted #999;padding:20px 0}.brands .brands-list dt{position:absolute;width:130px;font-weight:700;font-size:16px;text-align:center;top:50%;margin-top:-9px}.brands .brands-list dd{margin-left:130px}.brands .brands-list dd li{float:left;display:block;width:170px;height:18px}.brands .brands-list dd a{color:#666;line-height:18px;font-size:12px;position:relative}.brands .brands-list dd span{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.brands .brands-list dd span:hover{text-decoration:underline}.brands .brands-list dd .brands-dialog{display:inline;position:relative}.brands .brands-list dd .hot{font-weight:700;color:#222}.brands .brands-list dd i{position:relative;top:-4px;color:#e01;font-size:14px}.brands .brands-category{width:1150px}.brands .brands-tabs{width:100%}.brands .brands-tabs li{margin-left:10px}.brands .brands-tabs li a{position:relative;width:222px;height:180px}.brands .brands-tabs li:first-child{margin-left:0}.brands .brands-tabs .hover-contain{height:30px}.brands .brands-tabs .hover-contain .hoverarr{height:5px;width:222px}.brands .brands-ad,.brands .brands-logo{margin:20px 0}.brands .brands-ad li{float:left;margin-left:10px}.brands .brands-ad li img{display:block;width:280px;height:280px}.brands .brands-ad li:first-child{margin-left:0}.brands .brands-ad li:first-child img{width:570px}.brands .brands-logo a{float:left;margin-left:26px}.brands .brands-logo a img{display:block;width:91px;height:38px}.brands .brands-logo a:first-child{margin-left:0}.brands .list-floor{width:1160px}.brands .brandfloor .g-list{margin-top:-32px}.brands .brandfloor li{margin-right:8px;margin-top:32px}.brands .brandfloor li a{width:378px;height:250px}.brands .singlegoods .g-list{margin-top:-10px}.brands .singlegoods li{margin-right:10px;margin-top:10px}.brands .singlegoods li a{width:280px;height:374px}.brands .singlegoods .singlegoods-title{position:absolute;left:0;bottom:0;height:50px;width:100%}.brands .singlegoods .singlegoods-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;line-height:50px;font-size:18px;text-align:center;color:#fff}.brands .video .g-list{margin-top:-10px}.brands .video li{margin-right:8px;margin-top:10px}.brands .video li a{width:378px;height:242px}.brands .video .video-play{display:block;position:absolute;left:50%;top:50%;margin-left:-30px;margin-top:-28px;width:60px;height:56px;background-image:url(../../../img/index/play.png?v15529250dc5)}.brands .video .video-title{position:absolute;left:0;bottom:0;height:32px;width:100%}.brands .video .video-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;font-size:14px;line-height:32px;text-align:center;color:#fff}.brands .news{margin-bottom:40px}.brands .news .news-pic{position:relative;float:left;width:764px;height:436px}.brands .news .news-pic .slide-container{height:100%}.brands .news .news-pic .slide-container li a{height:100%;width:764px}.brands .news .news-pic .slide-container .slide-wrapper{height:100%}.brands .news .news-pic .slide-container .slide-switch{display:none}.brands .news .news-pic .slide-container .prev{left:0;margin-left:0}.brands .news .news-pic .slide-container .next{right:0;margin-right:0}.brands .news .news-pic .slide-container .slide-switch.show{display:block}.brands .news .news-pic .slide-tips{position:absolute;left:0;bottom:0;height:30px;width:100%;background:#000;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.brands .news .news-pic .slide-tips p{position:absolute;left:18px;z-index:2;height:30px;font-size:14px;line-height:30px;color:#fff}.brands .news .news-pic .slide-pagination{right:0;left:auto;bottom:0}.brands .news .news-pic .slide-pagination .slide-shade{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";background:none}.brands .news .news-pic .slide-pagination span{margin-top:3px}.brands .news .news-txt{padding:20px 16px;float:right;border:1px solid #000;overflow:hidden}.brands .news .news-txt ul{height:100%}.brands .news .news-txt li{position:relative;display:block;margin-bottom:10px;margin-left:20px}.brands .news .news-txt a{font-size:14px;line-height:27px;cursor:pointer;color:#010101;display:block}.brands .news .news-txt a:hover{color:#fff;background:#000;padding-left:12px;transition:padding .4s}.brands .news .news-txt i{position:absolute;top:0;left:-26px;font-size:22px}.brands .news .news-txt{width:342px;height:394px}.brands .ads{margin:40px 0}.brands .ads li{margin-right:10px;margin-bottom:10px}.brands .ads li a{width:280px}.brands .ads li a img{height:160px}.brands .ads li .name{font-size:14px}.brands .ads li .des{font-size:12px}.brands .brands-items{margin:25px auto}.brands .brands-items .brands-item{float:left;padding:15px 0;width:50%}.brands .brands-items a.brands-pic{float:left;width:280px;height:136px;display:block}.brands .brands-items a.brands-pic img{width:100%;height:100%}.brands .brands-items .brand-info{float:right;padding:0 20px;width:255px;color:#000}.brands .brands-items .brand-info h3{width:100%;font-size:20px;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brands .brands-items .brand-info .brand-desc{padding:12px 0;height:92px;font-size:14px;line-height:22px;overflow:hidden}.brands .pagination{margin:40px 0 80px;text-align:center}.brands .pagination a{height:24px;padding:0 9px;line-height:24px;display:inline-block;text-align:center;margin-right:8px;color:#222;font-size:12px}.brands .pagination a i{position:relative;top:-1px;font-size:10px;transform:scale(.8)}.brands .pagination a.cur{background:#222;color:#fff}.min-screen .brands .header-navs{margin-right:-10px}.min-screen .brands .sit-nav{padding-top:10px;font-size:12px}.min-screen .brands .sit-nav .sep{margin:0 6px}.min-screen .brands .brands-category{width:990px}.min-screen .brands .brands-tabs li a{width:190px;height:154px}.min-screen .brands .brands-tabs .hover-contain{height:25px}.min-screen .brands .brands-tabs .hover-contain .hoverarr{height:4px;width:190px}.min-screen .brands .brands-ad li img{width:240px;height:240px}.min-screen .brands .brands-ad li:first-child img{width:490px}.min-screen .brands .brands-logo a{margin-left:10px}.min-screen .brands .brands-logo a img{width:90px;height:37px}.min-screen .brands .brands-logo a:first-child{margin-left:0}.min-screen .brands .list-floor{width:1000px}.min-screen .brands .brandfloor .g-list{margin-top:-26px}.min-screen .brands .brandfloor li{margin-right:9px;margin-top:26px}.min-screen .brands .brandfloor li a{width:324px;height:214px}.min-screen .brands .singlegoods .g-list{margin-top:-10px}.min-screen .brands .singlegoods li{margin-right:10px;margin-top:10px}.min-screen .brands .singlegoods li a{width:240px;height:324px}.min-screen .brands .singlegoods .singlegoods-title{position:absolute;left:0;bottom:0;height:50px;width:100%}.min-screen .brands .singlegoods .singlegoods-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;line-height:50px;font-size:18px;text-align:center;color:#fff}.min-screen .brands .video .g-list{margin-top:-10px}.min-screen .brands .video li{margin-right:9px;margin-top:10px}.min-screen .brands .video li a{width:324px;height:206px}.min-screen .brands .video .video-play{display:block;position:absolute;left:50%;top:50%;margin-left:-30px;margin-top:-28px;width:60px;height:56px;background-image:url(../../../img/index/play.png?v15529250dc5)}.min-screen .brands .video .video-title{position:absolute;left:0;bottom:0;height:30px;width:100%}.min-screen .brands .video .video-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;font-size:14px;line-height:30px;text-align:center;color:#fff}.min-screen .brands .news .news-pic{width:660px;height:376px}.min-screen .brands .news .news-pic .slide-container,.min-screen .brands .news .news-pic .slide-container img{height:376px}.min-screen .brands .news .news-txt{width:284px;height:334px}.min-screen .brands .news .news-txt li{margin-bottom:13px}.min-screen .brands .ads{margin-bottom:30px}.min-screen .brands .ads li{margin-right:10px;margin-bottom:10px}.min-screen .brands .ads li a{width:240px}.min-screen .brands .ads li a img{height:138px}.min-screen .brands .ads li .name{font-size:14px}.min-screen .brands .ads li .des{font-size:12px}.min-screen .brands .brands-items a.brands-pic{width:240px;height:116px}.min-screen .brands .brands-items .brand-info{width:212px}.min-screen .brands .brands-items .brand-info .brand-desc{height:72px}.brands-layer{position:absolute;z-index:8;top:-83px;left:15px;width:325px;height:287px;background:url(../../../img/index/brands-layer.png?v15529250dc1) no-repeat;font-weight:400}.brands-layer .layer-content{padding:20px 20px 20px 35px}.brands-layer .layer-content .title{font-size:24px;line-height:24px;border-bottom:1px solid #ccc;padding-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brands-layer .layer-content .desc{margin:5px 0;height:72px;overflow:hidden}.brands-layer .layer-content .desc img{width:80px;height:50px;margin:3px 5px 0 0;float:left}.brands-layer .layer-content .desc .right{width:180px;float:right;font-size:12px;line-height:150%;max-height:80px}.brands-layer .layer-content .featured{font-size:16px;margin-right:-15px}.brands-layer .layer-content .featured img{height:100px;width:80px;float:left;margin:15px 15px 0 0}.brands-layer-right{background:url(../../../img/index/brands-layer.png?v15529250dc1) no-repeat 0 -287px;left:-325px;top:-83px}.brands-layer-right .layer-content{padding:20px 35px 20px 20px}.coupon-page{width:1150px;margin:10px auto 0}.coupon-page .slide-container{position:relative}.coupon-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.coupon-page .slide-wrapper ul{position:relative;height:100%}.coupon-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:100%;height:100%}.coupon-page .slide-wrapper li a{display:block;height:100%;width:1150px;margin:0 auto}.coupon-page .slide-wrapper li img{width:100%;height:100%}.coupon-page .slide-switch,.coupon-page .slide-wrapper:hover .slide-switch.show,.coupon-page .slide-wrapper li:first-child{display:block}.coupon-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.coupon-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.coupon-page .slide-switch a.prev{left:50%;margin-left:-575px}.coupon-page .slide-switch a.next{right:50%;margin-right:-575px}.coupon-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.coupon-page .title{width:300px;margin:80px auto 40px;text-align:center;border:1px solid #000;height:31px;line-height:31px;position:relative}.coupon-page .title span{margin:5px}.coupon-page .coupon{display:inline-block;position:relative;width:282px;height:258px;margin-right:2px}.coupon-page .coupon img{width:100%;height:100%}.coupon-page .coupon .coupon-mask{width:100%;height:259px;background-color:rgba(0,0,0,.6);position:absolute;top:0;left:0;right:0;z-index:7}.coupon-page .coupon .info{width:78px;height:78px;position:absolute;right:2px;bottom:-1px}.coupon-page .coupon .info>div{width:100%;height:38px;font-size:16px;color:#fff;text-align:center;position:absolute;top:50%;margin-top:-19px}.coupon-page .coupon .info p{margin-bottom:5px}.coupon-page .coupon .info .guang{width:50px;height:18px;line-height:18px;font-size:12px;background-color:#fff;color:#d0021b;margin:0 auto}.product-search-page .goods-container{height:auto;padding:25px 0 0;position:relative;width:1160px}.product-search-page .goods-container .good-info{width:222px}.product-search-page .path-nav .last{font-weight:400}.product-search-page .path-nav .last span{font-weight:700}.min-screen .product-search-page .goods-container{height:auto;padding-top:25px;position:relative;width:1000px}.min-screen .product-search-page .goods-container .good-info{width:190px}.min-screen .product-search-page .goods-container .good-info .good-detail-img{height:255px}.min-screen .product-search-page .goods-container .block-next-page{width:190px;height:255px}.min-screen .product-search-page .filter-box .brand .attr-content{max-width:750px}.product-list-page .list-left{width:160px}.product-list-page .list-right{width:970px}.product-list-page .brand-banner{position:relative}.product-list-page .brand-banner .opt-wrap{position:absolute;width:100%;height:32px;top:50%;margin-top:-16px;text-align:right}.product-list-page .brand-banner a,.product-list-page .brand-banner span{display:inline-block;height:20px;margin-right:5px;line-height:20px;border:1px solid #fff;padding:5px 10px;color:#fff;font-size:12px}.product-list-page .brand-banner .iconfont{font-size:13px}.product-list-page .brand-banner .brand-favor{margin-right:0;cursor:pointer}.product-list-page .brand-banner .coled{color:red}.product-list-page .brand-about{font-size:12px;line-height:150%}.product-list-page .sort-intro{margin-bottom:20px}.product-list-page .sort-intro .texts{width:386px;height:298px;padding:0 50px;border:1px solid #eaeceb;text-align:center;overflow:hidden}.product-list-page .sort-intro .name{font-size:30px;font-weight:700;margin-top:60px}.product-list-page .sort-intro .en-name{font-size:14px;font-weight:700}.product-list-page .sort-intro .desc{color:#666;margin-top:15px;font-size:12px;line-height:150%}.product-list-page .sort-intro .img{width:480px;height:300px}.product-list-page .sort-intro .key-entry{width:330px;margin:30px auto 0}.product-list-page .sort-intro .key-entry a{float:left;display:block;width:110px;line-height:20px;font-size:12px;color:#069;text-decoration:underline}.product-list-page.search-page .path-nav .last{font-weight:400}.product-list-page.search-page .path-nav .last span{font-weight:700}.min-screen .product-list-page .sort-intro .texts{width:346px;height:248px;padding:0 30px}.min-screen .product-list-page .sort-intro .name{margin-top:30px}.min-screen .product-list-page .sort-intro .img{width:400px;height:250px}.new-sale-page .sale-list-banner{width:100%;position:relative}.new-sale-page .sale-list-banner ul{overflow:hidden;width:100%;position:relative;z-index:1}.new-sale-page .sale-list-banner ul li{width:100%;height:100%;display:block;position:absolute;top:0;left:0}.new-sale-page .sale-list-pagation{z-index:2;position:absolute;left:0;bottom:50px;width:100%;height:20px;text-align:center}.new-sale-page .sale-list-pagation div{display:inline-block}.new-sale-page .sale-list-pagation span{display:block;width:20px;height:20px;background:url(../assets/img/product/default-normal.png?v15551f02c7e);float:left;margin:0 10px;cursor:pointer}.new-sale-page .sale-list-pagation span.active{background:url(../assets/img/product/default-active.png?v15551f02c7c)}.new-sale-page .header-title{position:relative;width:100%;height:42px;margin:20px 0;text-align:center;font-size:20px}.new-sale-page .header-title .count-wrap{position:relative}.new-sale-page .header-title .count{background:#fff;padding:0 5px;color:#999;font-size:12px;margin-top:6px}.new-sale-page .header-title .line-through{position:absolute;bottom:9px;left:0;right:0;height:1px;border-top:1px dotted #999}.new-sale-page .new-banner img{display:block;width:100%}.new-sale-page .new-brands{position:relative;width:100%;margin-top:25px}.new-sale-page .new-brands>*{float:left}.new-sale-page .new-brands .pre .next{position:absolute;display:block;width:40px;height:40px;line-height:40px;color:#fff;background:#e0e0e0;text-align:center;top:50%;margin-top:-20px;cursor:pointer;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.new-sale-page .new-brands .pre .next:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.new-sale-page .new-brands .pre{left:0}.new-sale-page .new-brands .next{right:0}.new-sale-page .new-brands .brands-wrap{position:relative;overflow:hidden;width:890px;height:76px;margin-left:40px}.new-sale-page .new-brands .brands{position:absolute;width:auto;height:76px}.new-sale-page .new-brands .brands li{float:left;margin-left:14px}.new-sale-page .new-brands .brands li a{width:164px;height:76px;line-height:76px;vertical-align:middle;text-align:center}.new-sale-page .new-brands .brands li img{vertical-align:middle;max-width:100%;max-height:100%;border:none}.new-sale-page .new-floor-title{position:relative;margin:35px auto;width:300px;height:31px;line-height:31px;font-size:18px;border:1px solid #000}.new-sale-page .new-floor-title .date{position:absolute;left:-1px;top:-1px;width:155px;height:33px;color:#fff;text-align:center;background:url(../assets/img/product/floor-title.png?v15551f02c83)}.new-sale-page .new-floor-title .title{float:right;margin-right:40px}.filter-box{border:1px solid #dfdfdf}.filter-box .section{padding:10px 15px;font-size:12px;border-top:1px solid #dfdfdf}.filter-box .section:first-child{border-top:none;padding:5px 15px}.filter-box .title{float:left;width:75px;line-height:30px;font-weight:700}.filter-box .attr-content{margin-left:75px}.filter-box .multi-select{display:inline-block;width:60px;height:18px;line-height:18px;border:1px solid #555;color:#555;text-align:center;cursor:pointer}.filter-box .attr{display:block;float:left;padding:0 10px;margin-right:30px;line-height:30px;cursor:pointer;color:#666;-moz-user-select:none}.filter-box .attr a{color:#666}.filter-box .attr:first-child{margin-left:0}.filter-box .attr.checked,.filter-box .attr.checked a{color:#e01}.filter-box .attr:hover{text-decoration:underline}.filter-box .color .attr{margin-right:0}.filter-box .checked .color-block{width:16px;height:16px;border:2px solid #222;padding:2px;background-size:100%!important}.filter-box .checked .color-block .sub-color-block{display:block;width:16px;height:16px;background-position:50%!important}.filter-box .checked-conditions{line-height:30px;background:#eaeceb}.filter-box .checked-conditions .title{margin-top:5px}.filter-box .checked-conditions .tag{display:block;float:left;padding:0 10px;margin:5px 30px 5px 0;background:#000;color:#fff;cursor:pointer}.filter-box .checked-conditions .color-block{height:14px;width:14px;border:1px solid #fff;margin-bottom:-3px;background-size:100%!important;background-position:50%!important}.filter-box .checked-conditions .clear-checked{margin-top:5px;color:#999;float:right}.filter-box .checked-conditions .clear-checked:hover{color:#468fa2}.filter-box .checked-conditions .close{font-size:14px}.filter-box .sort-pre .active .attr{border:1px solid #000}.filter-box .sort-pre .attr{position:relative}.filter-box .active .sort-up-icon{visibility:visible}.filter-box .sort-up-icon{position:absolute;width:15px;height:9px;left:50%;margin-left:-7px;bottom:-17px;z-index:3;visibility:hidden;background:url(../assets/img/product/senior-up.png?v15551f02c90) no-repeat;background-position:50% 0}.filter-box .sort-sub-wrap{width:100%}.filter-box .sort-sub-wrap .sort-sub{border-top:1px solid #eaeceb;margin-top:15px;padding:0 0 15px}.filter-box .sort-sub-wrap .sort-sub .attr{padding-top:15px}.filter-box .brand{position:relative}.filter-box .brand .attr{box-sizing:border-box;width:20%;height:30px;margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.filter-box .brand .attr-content{max-width:900px}.filter-box .brand .brand-opt{position:absolute;right:20px;top:15px;color:#555}.filter-box .brand .multi .attr.checked,.filter-box .brand .multi .attr.checked a{color:#000}.filter-box .brand .brand-more{margin-right:10px;cursor:pointer}.filter-box .brand .brands-index{float:left;line-height:30px;margin-right:5px;cursor:pointer}.filter-box .brand .brands-index span{margin:0 3px;-moz-user-select:none}.filter-box .brand .brands-index span:first-child{margin-left:10px}.filter-box .brand .brands-index span.hover{color:red}.filter-box .brand .brand-search{float:left;height:18px;line-height:18px;border:1px solid #b0b0b0;margin-top:5px;margin-left:10px}.filter-box .brand .brand-search input{float:left;border:none;width:100px;height:18px;padding:0}.filter-box .brand .brand-search .btn{position:relative;display:inline-block;top:-1px;width:55px;height:20px;line-height:20px;background:#3a3a3a;color:#fff;text-align:center;cursor:default}.filter-box .brand .panel-body{padding:15px 20px;background:#f4f7f6;margin-top:5px;margin-left:10px}.filter-box .brand .panel-body .ul-scroll{overflow:auto;min-height:30px;max-height:150px}.filter-box .btns{display:none;margin-top:10px;text-align:center}.filter-box .multi .btns{display:block}.filter-box .multi-select-cancel,.filter-box .multi-select-ok{width:55px;height:24px;border:none;background:#000;color:#fff;font-size:14px;margin-right:20px;cursor:pointer;outline:none;font-family:Microsoft YaHei}.filter-box .multi-select-cancel.dis,.filter-box .multi-select-ok.dis{background:#ccc}.filter-box .ud-price-range{margin-top:2px}.filter-box .limit{height:22px;width:42px;border:1px solid #ccc;padding:0}.filter-box .price-sep{margin:0 5px}.filter-box .price-sure{height:24px;width:44px;background:#333;color:#fff;margin-left:10px;outline:none;border:none;font-size:12px;cursor:pointer}.filter-box .color-block{display:inline-block;height:22px;width:22px;border:1px solid #ccc;margin-bottom:-6px;margin-right:5px;background-size:100%!important;background-repeat:no-repeat!important;background-position:50%!important}.filter-box .senior{padding-bottom:6px}.filter-box .senior .attr-content{position:relative}.filter-box .senior .senior-attr-wrap>.attr:hover{text-decoration:none}.filter-box .senior-attr-wrap{position:relative}.filter-box .senior-attr-wrap>.attr.hover,.filter-box .senior-attr-wrap>.attr:hover{font-weight:700}.filter-box .senior-attr-wrap>.attr.hover>.iconfont,.filter-box .senior-attr-wrap>.attr:hover>.iconfont{visibility:hidden}.filter-box .senior-attr-wrap>.attr.hover .senior-up-icon,.filter-box .senior-attr-wrap>.attr:hover .senior-up-icon{visibility:visible}.filter-box .senior-sub{box-sizing:border-box;position:absolute;padding:0 15px 15px 91px;left:-91px;right:-16px;top:39px;background:#fff;border:1px solid #dfdfdf;border-top:0;z-index:2}.filter-box .senior-sub ul{max-width:950px}.filter-box .senior-sub .multi-select{position:absolute;top:20px;right:15px}.filter-box .senior-sub .attr{height:30px}.filter-box .senior-sub.multi .multi-select{display:none}.filter-box .senior-baffle{height:18px;margin-top:-18px;background:none}.filter-box .senior-content{padding-top:15px;border-top:1px solid #eaeceb}.filter-box .senior-up-icon{position:relative;width:100%;height:9px;z-index:3;margin-left:-11px;visibility:hidden;background:url(../assets/img/product/senior-up.png?v15551f02c90) no-repeat;background-position:50% 0;top:-1px;top:1px/9}.filter-box .checkbox{display:none;float:left}.filter-box .multi .checkbox{display:block;color:#ccc;font-size:12px;margin-right:3px}.filter-box .multi .checkbox.checked{color:#000}.filter-box .multi .checkbox.checked+span{color:#000;font-weight:700}.min-screen .filter-box .brand .attr{width:25%}:root .senior-up-icon,_:-ms-fullscreen{top:1px}.sort-pager{height:48px;background:#f5f7f6;line-height:48px;margin:10px 0}.sort-pager .checks,.sort-pager .sort-type{color:#999;font-size:12px;padding:0 10px}.sort-pager .checks .iconfont,.sort-pager .sort-type .iconfont{font-size:12px}.sort-pager .checks.active,.sort-pager .checks.checked,.sort-pager .sort-type.active,.sort-pager .sort-type.checked{color:#000;font-weight:700}.sort-pager .checks.active .iconfont,.sort-pager .checks.checked .iconfont,.sort-pager .sort-type.active .iconfont,.sort-pager .sort-type.checked .iconfont{font-weight:100}.sort-pager .checks .iconfont{background:#fff}.sort-pager .sort-type:first-child .iconfont{display:none}.sort-pager .page-nav{padding:7px 0;float:right;font-size:14px}.sort-pager .page-nav .page-prev{width:33px;height:33px;line-height:34px;background:#ccc;text-align:center;float:left}.sort-pager .page-nav a .page-next,.sort-pager .page-nav a .page-prev{background:#000;color:#fff}.sort-pager .page-nav .page-next{min-width:110px;height:33px;background:#a9a9a9;float:left;margin-left:1px;line-height:33px;padding-left:10px;box-sizing:border-box;padding-right:10px}.sort-pager .page-nav .pages{margin-left:10px}.sort-pager .pager-wrap{float:right;padding:15px 0}.sort-pager .page-count{position:relative;height:18px;float:left;font-size:12px;line-height:18px}.sort-pager .page-count>span{float:left;display:block;width:42px;height:10px;line-height:10px;padding:3px;border:1px solid #ccc;color:#222;cursor:pointer;margin-right:10px;background:#fff}.sort-pager .page-count .iconfont{font-size:14px;color:#ccc;float:right}.sort-pager .page-count>ul{position:absolute;display:none;width:48px;border-left:1px solid #ccc;border-right:1px solid #ccc;background:#fff;z-index:1}.sort-pager .page-count li{padding:0 3px;border-bottom:1px solid #ccc}.sort-pager .page-count li:hover{background:#376cf7;color:#fff}.sort-pager .page-count a{display:block;width:100%}.sort-pager .page-orient{float:left;font-size:14px;line-height:15px;margin:0 20px}.sort-pager .page-orient .dis-icon{color:#e6e6e6}.sort-pager .page-orient i{color:red}.pager a{height:24px;padding:0 9px;line-height:24px;display:inline-block;text-align:center;margin-right:8px;color:#222}.pager .cur{color:#fff;background-color:#222}.good-info{margin-bottom:35px;width:222px;margin-right:10px;float:left}.good-info .good-detail-img{width:100%;height:100%;position:relative}.good-info .good-detail-img .good-thumb,.good-info .good-detail-img img.lazy{display:block;overflow:hidden;width:100%;height:100%}.good-info .good-detail-img .few-tag{width:100%;position:absolute;left:0;height:16px;line-height:16px;background:#ffac5b;color:#fff;font-size:12px;text-align:center;bottom:0}.good-info .good-detail-text{color:#222;font-size:12px;text-align:left;overflow:hidden}.good-info .good-detail-text>a{margin-top:16px;line-height:1.5;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.good-info .good-detail-text>.price{margin-top:5px;text-align:center}.good-info .good-detail-text .brand a{color:#666;line-height:1.5}.good-info .good-detail-text .market-price{text-decoration:line-through;color:#999;margin-right:10px}.good-info .good-detail-text span.vip-tag{background-image:url(../assets/img/sale/vip.png?v15551f02cb3);background-repeat:no-repeat;background-size:100% 90%;width:40px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;width:30px}.good-info .good-detail-text span.vip-1{background-image:url(../assets/img/product/silver-small.png?v15551f02c94)}.good-info .good-detail-text span.vip-1,.good-info .good-detail-text span.vip-2{background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.good-info .good-detail-text span.vip-2{background-image:url(../assets/img/product/golden-small.png?v15551f02c85)}.good-info .good-detail-text span.vip-3{background-image:url(../assets/img/product/platinum-small.png?v15551f02c8d);background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.good-info .col-btn{position:absolute;top:15px;right:15px;color:#ccc;font-size:12px}.good-info .col-btn.coled{color:#f95b4f}.good-info .tag-container{font-size:12px;height:22px;line-height:22px}.good-info .tag-container .good-tag{float:left;box-sizing:border-box;display:block;height:22px;padding:0 7px;margin-right:3px;color:#fff}.good-info .tag-container .good-tag:nth-last-of-type(1){margin-right:0}.good-info .tag-container .new-tag{background:#78dc7d}.good-info .tag-container .renew-tag{background:#78dc7e}.good-info .tag-container .new-festival-tag{background:#000}.good-info .tag-container .sale-tag,.good-info .tag-container .yep-tag,.good-info .tag-container .ymp-tag{background:#ff565b}.good-info .tag-container .limit-tag{color:#4e4e4e;border:1px solid #4e4e4e}@keyframes a{0%{max-width:0}to{max-width:150px}}.good-item-wrapper{border:1px solid #ddd;padding-left:20px;padding-top:18px;padding-right:20px;position:absolute;background:#fff;display:none}.good-item-wrapper .good-info-main{float:left}.good-item-wrapper .col-btn{display:block}.good-item-wrapper .col-btn:hover{cursor:pointer}.good-item-wrapper .good-select-color{float:left;margin-top:22px;overflow:hidden;animation:a .6s 1}.good-item-wrapper .good-select-color ul{display:block;float:left;margin-left:15px}.good-item-wrapper .good-select-color li{width:50px;margin-bottom:15px}.good-item-wrapper .good-select-color li a,.good-item-wrapper .good-select-color li img{display:block;overflow:hidden;width:100%}.block-next-page,.good-item-wrapper .good-info{margin-right:10px}.block-next-page{width:222px;height:297px;padding-top:22px;margin-bottom:35px;float:left;cursor:pointer}.block-next-page a{display:block}.block-next-page a img{width:100%;height:100%;display:block;overflow:hidden}.good-info-big{width:280px;height:380px;margin-right:10px;float:left;margin-bottom:100px}.latest-walk{overflow:hidden;border-top:2px solid #eaeceb;font-size:12px}.latest-walk h2{padding-top:15px;font-size:14px}.latest-walk .goods{min-width:984px;height:241px;margin:30px 0;overflow:hidden}.latest-walk .good{float:left;margin-right:14px;width:150px}.latest-walk img{display:block;width:150px;height:201px}.latest-walk .name{display:block;height:18px;line-height:18px;max-width:150px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.latest-walk .market-price{color:#999;margin-right:5px;text-decoration:line-through}.latest-walk .sale-price{color:#000;font-weight:700}.min-screen .latest-walk .goods{width:820px;min-width:820px;height:301px}.min-screen .latest-walk .good{margin-right:10px;width:195px}.min-screen .latest-walk img{width:195px;height:261px}.product-page .sort-container{width:100%;font-size:12px;border-bottom:1px solid #ebebeb;padding-bottom:10px;margin-bottom:10px}.product-page .sort-container h2{height:28px;line-height:28px;color:#222;font-weight:700;position:relative}.product-page .sort-container h2 span{color:#bbb;padding-left:5px}.product-page .product-list-nav h3{height:28px;line-height:28px;color:#222;font-weight:700;position:relative;text-indent:10px;cursor:pointer}.product-page .product-list-nav h3 span{color:#bbb;padding-left:5px}.product-page .product-list-nav h3 span.icon-triangle{display:inline-block;padding-left:0;width:0;height:0;border-top:6px solid #fff;border-left:6px solid #000;border-bottom:6px solid #fff;position:absolute;top:50%;margin-top:-6px;left:0;transition:transform .3s}.product-page .product-list-nav.active .icon-triangle{transform:rotate(90deg)}.product-page .product-list-nav.active .sort-child-list{display:block}.product-page .sort-child-list{display:none}.product-page .sort-child-list li{color:#bbb}.product-page .sort-child-list li span{padding-left:5px;color:#bbb}.product-page .sort-child-list li.active{background:#333;color:#fff}.product-page .sort-child-list li.active a{color:#fff}.product-page .sort-child-list a{display:block;color:#666;padding-left:10px;height:22px;line-height:22px}.product-page .sort-child-list.new-sale{display:block}.product-page .nav-pic-title{height:35px;line-height:35px;color:#000;font-weight:700;border-bottom:1px solid #ebebeb;font-size:12px}.product-page .pic-nav{display:block}.product-page .pic-nav li{margin-bottom:10px}.product-page .pic-nav img,.product-page .pic-nav li{display:block;width:100%;overflow:hidden}.product-page .brand-ad img,.product-page .brand-card img{max-width:100%}.product-page .no-result{border:1px solid #eaeceb;padding:60px 0;text-align:center;margin-bottom:20px}.product-page .no-result .no-title{font-size:16px}.product-page .no-result .keyword{color:#e01}.product-page .no-result .search-again{width:490px;margin:15px auto}.product-page .no-result .search-again input{float:left;width:380px;height:18px;padding:15px 5px;border:10px solid #343434;color:#333;outline:none;box-sizing:content-box}.product-page .no-result .search-again .search-again-btn{float:left;width:80px;height:68px;line-height:68px;background:#343434;color:#fff;cursor:pointer;outline:none;border:none}.product-page .no-result .search-again .iconfont{font-size:30px}.product-page .no-result .no-tip{font-size:12px;color:#999}.hotrank-page .popular-list{width:1160px}.hotrank-page .popular-list li{position:relative;float:left;width:378px;height:596px;overflow:hidden;list-style:none;margin:0 8px 0 0}.hotrank-page .popular-list li .item-img{width:100%;height:506px;line-height:506px;text-align:center;overflow:hidden}.hotrank-page .popular-list li img{display:block;width:100%;height:100%}.hotrank-page .popular-list .polular-icon{position:absolute;top:0;right:0;width:50px;height:50px;line-height:60px;background:#ffc513 url(../assets/img/product/hotrank/popular-icon.png?v15551f02cb5) no-repeat 50%;text-align:center;color:#ffc513;font-weight:700}.hotrank-page .popular-list .item-content{width:100%;padding:14px 0 0;height:77px;overflow:hidden;text-align:center;color:#222;line-height:18px}.hotrank-page .popular-list .item-content h2{max-height:36px;font-size:12px;color:#000;line-height:18px;text-align:center;overflow:hidden}.hotrank-page .popular-list .item-content p{display:inline-block;margin:3px 0 0;font-size:12px;text-align:center;line-height:20px;color:#000}.hotrank-page .popular-list .item-content p span{text-decoration:line-through;margin:0 10px 0 0;color:#999}.hotrank-page .popular-list .popular-item6,.hotrank-page .popular-list .popular-item7,.hotrank-page .popular-list .popular-item8,.hotrank-page .popular-list .popular-item9{width:280px;height:464px;margin:0 10px 0 0;overflow:hidden}.hotrank-page .popular-list .popular-item6 .item-img,.hotrank-page .popular-list .popular-item7 .item-img,.hotrank-page .popular-list .popular-item8 .item-img,.hotrank-page .popular-list .popular-item9 .item-img{height:374px;line-height:374px}.hotrank-page .hot-week{position:relative;padding:0 0 40px}.hotrank-page .hot-cate{height:45px;background:#f5f7f6;overflow:hidden}.hotrank-page .hot-cate li{float:left;height:45px;line-height:45px;display:table-cell}.hotrank-page .hot-cate li a{vertical-align:middle;padding:0 26px;font-size:14px;color:#777;border-left:1px solid #999}.hotrank-page .hot-cate li:first-child a{border:none}.hotrank-page .hot-cate li.current a{font-size:16px;color:#000}.hotrank-page .hot-week-list{width:1160px}.hotrank-page .hot-week-list .good-info{width:280px;height:464px;margin:10px 10px 0 0}.hotrank-page .hot-week-list .good-info .tag-container{display:none}.hotrank-page .hot-week-list .good-info .good-detail-img{height:374px;line-height:374px;text-align:center;font-size:0}.hotrank-page .hot-week-list .good-info .good-detail-img img{vertical-align:middle}.hotrank-page .hot-week-list .good-info .good-detail-text{height:77px;overflow:hidden;text-align:center;color:#222;line-height:18px}.hotrank-page .hot-week-list .good-info .good-detail-text a{max-height:36px;font-size:12px;color:#000;line-height:18px;text-align:center;overflow:hidden}.hotrank-page .hot-week-list .good-info .good-detail-text p{display:inline-block;margin:3px 0 0;font-size:12px;text-align:center;line-height:20px;color:#000}.hotrank-page .hot-week-list .good-info .good-detail-text .sale-price{margin:0 10px 0 0}.hotrank-page .floatlayer{display:none;position:fixed;top:50%;left:50%;margin:0 0 0 575px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.hotrank-page .floatlayer li{width:42px;height:42px;border:2px solid #555;border-top:none;border-bottom-width:1px;text-align:center}.hotrank-page .floatlayer li a{position:relative;display:table-cell;width:42px;height:42px;vertical-align:middle;color:#555;font-size:12px}.hotrank-page .floatlayer li a span{display:inline-block;vertical-align:middle;width:28px;word-wrap:break-word}.hotrank-page .floatlayer li:first-child{border-top:1px solid #555}.hotrank-page .floatlayer li.current,.hotrank-page .floatlayer li:hover{background:#555}.hotrank-page .floatlayer li.current a,.hotrank-page .floatlayer li:hover a{color:#fff}.min-screen .hotrank-page{width:990px}.min-screen .hotrank-page .popular-list li{width:324px;height:521px}.min-screen .hotrank-page .popular-list li .item-img{height:434px;line-height:434px}.min-screen .hotrank-page .popular-list .popular-item6,.min-screen .hotrank-page .popular-list .popular-item7,.min-screen .hotrank-page .popular-list .popular-item8,.min-screen .hotrank-page .popular-list .popular-item9{width:240px;height:408px}.min-screen .hotrank-page .popular-list .popular-item6 .item-img,.min-screen .hotrank-page .popular-list .popular-item7 .item-img,.min-screen .hotrank-page .popular-list .popular-item8 .item-img,.min-screen .hotrank-page .popular-list .popular-item9 .item-img{height:320px;line-height:320px}.min-screen .hotrank-page .hot-week-list .good-info{width:240px;height:408px}.min-screen .hotrank-page .hot-week-list .good-info .good-detail-img{height:320px;line-height:320px}.shop-entry{position:relative;background:#f5f7f6;border:1px solid #eaeceb;padding:12px 15px;margin-bottom:10px}.shop-entry .logo{width:80px;height:50px}.shop-entry .name{margin-left:10px}.shop-entry .shop-name{font-size:16px;color:#222;line-height:26px}.shop-entry .sorts{color:#999;font-size:12px;line-height:18px}.shop-entry .sorts a{color:#999}.shop-entry .entry-btn{position:absolute;right:15px;top:50%;width:110px;height:32px;line-height:32px;margin-top:-16px;background:#222;text-align:center;color:#fff;font-size:12px}.shop-entry .entry-btn .iconfont{font-size:12px}.goods-container{height:auto;padding:25px 0 0;position:relative;width:980px}.goods-container .good-info{width:235px}.product-detail-page .brand-banner{height:45px;width:100%}.product-detail-page .brand-banner img{display:block;height:45px}.product-detail-page .brand-banner .opt{margin-top:5px}.product-detail-page .brand-banner .brand-fav,.product-detail-page .brand-banner .home{display:inline-block;width:32px;height:32px;line-height:32px;border:1px solid #fff;text-align:center;color:#fff;cursor:pointer}.product-detail-page .brand-banner .home{margin-right:5px}.product-detail-page .brand-banner .home .iconfont{font-size:14px}.product-detail-page .brand-banner .brand-fav .iconfont{font-size:13px}.product-detail-page .brand-banner .coled{color:#ee0014}.product-detail-page .path-nav{border:none;margin-bottom:0}.product-detail-page .main{width:990px;margin:0 auto}.product-detail-page .main .infos{width:465px}.product-detail-page .main .img{position:relative;width:420px;height:560px}.product-detail-page .main .img-show{display:block;width:100%;height:100%}.product-detail-page .main .tags{position:absolute;top:0;left:0}.product-detail-page .main .good-tag{float:left;box-sizing:border-box;height:22px;line-height:22px;color:#fff;padding:0 7px;margin-right:5px;font-size:12px}.product-detail-page .main .new-tag{background:#78dc7d}.product-detail-page .main .renew-tag{background:#78dc7e}.product-detail-page .main .new-festival-tag{background:#000}.product-detail-page .main .sale-tag,.product-detail-page .main .yep-tag,.product-detail-page .main .ymp-tag{background:#ff565b}.product-detail-page .main .few-tag{background:#ffac5b}.product-detail-page .main .limit-tag{border:1px solid #4e4e4e;color:#4e4e4e;background:#fff}.product-detail-page .main .thumbs{width:75px;height:510px;margin-left:2px;overflow:hidden}.product-detail-page .main .thumb{display:block;width:75px;cursor:pointer;margin-bottom:2px}.product-detail-page .main .name{font-size:18px;font-weight:700;line-height:24px}.product-detail-page .main .sale-tip{color:#ee0014;padding-left:3px}.product-detail-page .main .brand-name{color:#666;font-size:12px}.product-detail-page .main .title{color:#999;font-size:12px}.product-detail-page .main .market-price{margin-top:8px}.product-detail-page .main .price{color:#000;font-size:22px;line-height:24px;font-weight:700}.product-detail-page .main .has-other-price{color:#999;text-decoration:line-through;font-size:12px}.product-detail-page .main .arrival-date{color:#ee0014;font-size:14px;font-weight:700;margin-left:24px}.product-detail-page .main .vip-price{line-height:14px;color:#222;margin-top:5px;background:url(../assets/img/product/vip-price-icon.png?v15551f02c9f) no-repeat;padding-left:48px;font-size:12px}.product-detail-page .main .vip-price .cur,.product-detail-page .main .vip-price .login-url{color:#f02200}.product-detail-page .main .vip-price .vip-price-item{margin-left:5px}.product-detail-page .main .vip-price .vip-schedual{color:#999;text-decoration:underline;margin-left:5px}.product-detail-page .main .activity{margin-top:12px}.product-detail-page .main .activity li{line-height:20px}.product-detail-page .main .ac-type{display:inline-block;width:60px;height:16px;line-height:16px;margin-right:5px;text-align:center;background:#999;color:#fff;font-size:12px}.product-detail-page .main .ac-des{font-size:12px}.product-detail-page .main .row{margin-top:10px}.product-detail-page .main .trade-content{padding-top:20px;margin-top:20px;border-top:1px solid #eaeceb}.product-detail-page .main .chose-color{font-size:12px}.product-detail-page .main .chose-color .title{margin-top:14px}.product-detail-page .main .chose-color img{display:block;height:36px;width:36px;border:2px solid #fff}.product-detail-page .main .chose-color .focus img{border-color:#222}.product-detail-page .main .chose-color li{margin-right:5px;margin-bottom:5px;cursor:pointer}.product-detail-page .main .chose-size{font-size:12px}.product-detail-page .main .chose-size .title{margin-top:6px}.product-detail-page .main .chose-size li{float:left;display:block;height:22px;line-height:22px;margin-right:5px;margin-bottom:5px;padding:0 5px;border:1px solid #eaeceb;text-align:center;cursor:pointer;min-width:28px}.product-detail-page .main .chose-size li.disable{opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.product-detail-page .main .chose-size li.focus{color:#fff;background:#222}.product-detail-page .main .size-wrapper{width:415px}.product-detail-page .main .size{float:left;color:#666}.product-detail-page .main .size-ruler{float:left;display:block;width:57px;height:24px;background:url(../assets/img/product/size-ruler.jpg?v15551f02c9b);margin-bottom:5px;cursor:pointer}.product-detail-page .main .num-warn,.product-detail-page .main .size-warn{float:left;height:24px;line-height:24px}.product-detail-page .main .color-size-tip{color:#999;clear:both;line-height:18px}.product-detail-page .main .chose-count .title{margin-top:6px}.product-detail-page .main .num{display:block;width:38px;height:23px;line-height:23px;text-align:center;border:1px solid #eaeceb;color:#333;font-size:12px;background:#ebebe4}.product-detail-page .main .minus-plus{display:block;width:14px;height:23px;border:1px solid #eaeceb;border-left:none;text-align:center;cursor:pointer}.product-detail-page .main .minus-plus i{display:block;width:13px;height:11px;line-height:8px;font-size:12px;-moz-user-select:none}.product-detail-page .main .minus-plus .dis{color:#999}.product-detail-page .main .minus{border-top:1px solid #eaeceb;font-size:13px}.product-detail-page .main .lc-btn{float:left;display:block;width:80px;height:25px;line-height:25px;color:#fff;background:#222;margin-left:10px;font-size:12px;text-align:center;cursor:default}.product-detail-page .main .lc-btn.dis,.product-detail-page .main .lc-btn.had-lc,.product-detail-page .main .lc-btn.lc-sold-out{background:#ccc}.product-detail-page .main .num-wraper{position:relative}.product-detail-page .main .lc-container{position:absolute;top:-39px;right:-233px;z-index:1}.product-detail-page .main .lc-arrow{position:absolute;top:40px;left:-12px;width:13px;height:20px;background:url(../assets/img/product/arrow.png?v15551f02c7b)}.product-detail-page .main .lc-content{box-sizing:border-box;width:220px;height:285px;text-align:center;background:#f8f8f8;border:1px solid #cecece;padding:40px 25px 0}.product-detail-page .main .lc-content .qr-code{width:137px;height:137px;background:url(../assets/img/product/top-good-qr.png?v15551f02c9d);margin:0 auto}.product-detail-page .main .lc-content .title{font-size:18px;color:#000;margin:12px 0;line-height:24px}.product-detail-page .main .lc-content .sub-title{font-size:14px;color:#939290}.product-detail-page .main .buy-btn{display:inline-block;margin-right:10px;height:48px;line-height:48px;width:197px;text-align:center;color:#fff;background:#e92601;font-size:14px;cursor:pointer}.product-detail-page .main .buy-btn.hover{background:#eb3b19;background:rgba(233,38,1,.8)}.product-detail-page .main .buy-btn.dis{background:#ccc}.product-detail-page .main .collect-product,.product-detail-page .main .keep-shopping{display:inline-block;width:127px;height:48px;text-align:center;line-height:48px;background:#fff;color:#222;border:1px solid #ccc;font-weight:700;font-size:12px;cursor:pointer}.product-detail-page .main .collect-product .iconfont,.product-detail-page .main .keep-shopping .iconfont{color:#ccc;font-size:14px}.product-detail-page .main .collect-product.coled .iconfont,.product-detail-page .main .keep-shopping.coled .iconfont{color:#fa5252}.product-detail-page .main .share-row{margin-top:20px}.product-detail-page .main .share-row .title{margin-top:2px}.product-detail-page .main .balance{display:none}.product-detail-page .main .balance .success-tip{color:#222;font-size:18px;margin-bottom:10px}.product-detail-page .main .balance .cart-total{color:#999;font-size:12px}.product-detail-page .main .balance .balance-btns{margin-top:20px}.product-detail-page .other-infos{padding-bottom:30px}.product-detail-page .info-block{margin-top:30px;color:#999;border-top:2px solid #eaeceb;font-size:12px}.product-detail-page .info-block .basic{width:640px;margin:0 auto}.product-detail-page .info-block .basic li{float:left;width:25%;line-height:20px}.product-detail-page .info-block .comfort{width:470px;border:1px solid #eaeceb;margin:17px auto 0;padding-bottom:15px}.product-detail-page .info-block .comfort li{margin:12px 20px 0}.product-detail-page .info-block .comfort-block{display:inline-block;width:14px;height:10px;border:1px solid #eaeceb;margin-right:2px}.product-detail-page .info-block .comfort-block.cur{background:#999;border:1px solid #999}.product-detail-page .block-title{margin-bottom:25px;text-align:center}.product-detail-page .block-title .title{display:inline-block;padding-top:15px;font-weight:700;cursor:pointer}.product-detail-page .block-title .title.cur{color:#222;border-top:2px solid #222;margin-top:-2px}.product-detail-page .block-title .sep{display:inline-block;margin:0 30px;color:#eaeceb;font-size:14px;cursor:default;font-weight:700}.product-detail-page .description-content{overflow:hidden}.product-detail-page .material-content{display:none;overflow:hidden}.product-detail-page .material-detail li{width:860px;padding-bottom:20px;border-bottom:1px dotted #eaeceb;margin:0 auto 20px}.product-detail-page .material-detail li img{float:left;width:125px;height:50px}.product-detail-page .material-detail li .name{float:left;width:100px;line-height:25px;border-right:1px dotted #eaeceb;color:#666;font-weight:700;text-align:center;font-size:14px}.product-detail-page .material-detail li .text{float:left;width:614px;padding-left:20px;line-height:18px}.product-detail-page .wash{text-align:center}.product-detail-page .wash li{display:inline-block;padding:0 20px;color:#666;border-right:1px solid #eaeceb}.product-detail-page .size-info{text-align:center}.product-detail-page .fitting-report-table,.product-detail-page .reference-table,.product-detail-page .size-table{text-align:center;margin:0 auto}.product-detail-page .fitting-report-table th,.product-detail-page .reference-table th,.product-detail-page .size-table th{width:110px;text-align:center}.product-detail-page .fitting-report-table tr,.product-detail-page .reference-table tr,.product-detail-page .size-table tr{height:30px}.product-detail-page .fitting-report-table td,.product-detail-page .fitting-report-table tr,.product-detail-page .reference-table td,.product-detail-page .reference-table tr,.product-detail-page .size-table td,.product-detail-page .size-table tr{text-align:center}.product-detail-page .fitting-report-table thead,.product-detail-page .reference-table thead,.product-detail-page .size-table thead{background:#f5f7f6;color:#999}.product-detail-page .fitting-report-table tbody,.product-detail-page .reference-table tbody,.product-detail-page .size-table tbody{color:#222}.product-detail-page .fitting-report-table .avatar,.product-detail-page .reference-table .avatar,.product-detail-page .size-table .avatar{width:26px;height:26px;border-radius:50px}.product-detail-page .fitting-report-table .avatar-col,.product-detail-page .reference-table .avatar-col,.product-detail-page .size-table .avatar-col{width:26px;padding-left:20px;padding-right:20px}.product-detail-page .fitting-report-table .model-col,.product-detail-page .reference-table .model-col,.product-detail-page .size-table .model-col{width:90px}.product-detail-page .fitting-report-table .remark-col,.product-detail-page .reference-table .remark-col,.product-detail-page .size-table .remark-col{width:200px}.product-detail-page .fr-img-wrap{width:100%;text-align:center}.product-detail-page .fr-img-wrap img{max-width:100%}.product-detail-page .ref-model{padding-top:10px}.product-detail-page .ref-model .model{width:444px;height:35px;padding-top:47px;padding-left:316px;color:#666;overflow:hidden;margin:10px auto 0}.product-detail-page .ref-model .model em{margin-left:5px}.product-detail-page .size-tip{color:#999;margin-top:15px;text-align:center}.product-detail-page .details{text-align:center;font-size:12px;color:#999;line-height:18px}.product-detail-page .details-html{width:750px;text-align:center;margin:0 auto}.product-detail-page .details-html b{font-weight:700}.product-detail-page .details-html i{font-style:italic}.product-detail-page .consults{display:none}.product-detail-page .consult-comment .title,.product-detail-page .consult-comment .title.cur{color:#666}.product-detail-page .cc-content{background:#f5f7f6;padding:20px 20px 0;font-size:12px}.product-detail-page .cc-content h2{font-weight:700;font-size:14px;margin-bottom:10px;color:#000}.product-detail-page .cc-content li{border-top:1px solid #eaeceb;padding:20px 0}.product-detail-page .cc-content .user-info{color:#999;line-height:16px}.product-detail-page .cc-content .user-info>*{float:left}.product-detail-page .cc-content .user-info .name{color:#666}.product-detail-page .cc-content .user-info .date{color:#bbb}.product-detail-page .cc-content .user-info .question{color:#222}.product-detail-page .cc-content .user-avatar{width:30px;height:30px;margin-right:5px}.product-detail-page .cc-content .more-wrap{text-align:center;border-top:1px solid #eaeceb;padding:20px 0;font-size:14px;font-weight:700;color:#666}.product-detail-page .cc-content .btn-wrap{padding:20px 0;border-top:1px solid #eaeceb}.product-detail-page .cc-content .load-more{cursor:pointer}.product-detail-page .cc-content .btn{display:block;width:140px;height:32px;line-height:32px;color:#fff;background:#222;text-align:center;font-size:12px;margin:0 auto;cursor:pointer}.product-detail-page .cc-content .btn .iconfont{font-size:14px}.product-detail-page .cc-content .comment,.product-detail-page .cc-content .consult{margin-top:10px}.product-detail-page .cc-content .consults{display:none}.product-detail-page .new-consult{padding:20px 0;border-top:1px solid #eaeceb}.product-detail-page .new-consult textarea{width:590px;height:80px;padding:5px;outline:none;resize:none}.product-detail-page .new-consult .submit-consult{display:block;width:140px;height:32px;line-height:32px;margin:8px 0 0}.product-detail-page .new-consult .error{border-color:#e01}.product-detail-page .consult-success{border-top:1px solid #eaeceb;margin-top:30px;text-align:center;padding:20px 0}.product-detail-page .consult-success p{width:295px;height:55px;line-height:55px;margin:0 auto;border:2px solid #222;display:block;color:#222;font-weight:700}.product-detail-page .after-service{text-align:center;margin-top:30px}.product-detail-page .after-service .after-service-content{display:none}.product-detail-page .after-service .after-service-switch{height:44px;line-height:44px;background:#eaeceb;text-align:center;font-size:12px;cursor:pointer}.product-detail-page .after-service .after-service-switch .iconfont{font-size:12px}.product-detail-page .after-service .text{padding:20px 15px;background:#f5f7f6;text-align:left;color:#666;line-height:18px}.product-detail-page .after-service .orange{color:#f9761a}.product-detail-page .after-service h4{font-weight:700;font-size:14px;line-height:24px;color:#222;margin-top:10px}.product-detail-page .after-service h4:first-child{margin-top:0}.product-detail-page .after-service .img-1{width:715px;height:259px;margin:0 auto;background:url(../assets/img/product/after-service-1.png?v15551f02c77)}.product-detail-page .after-service .img-2{width:715px;height:230px;margin:0 auto;background:url(../assets/img/product/after-service-2.png?v15551f02c79)}.product-detail-page .after-service a{color:#666}.product-detail-page .service{width:403px;height:19px;margin:45px auto;background:url(../assets/img/product/service.png?v15551f02c92)}.product-detail-page .latest-walk{overflow:inherit}.product-detail-page .latest-walk .goods{width:1010px;margin:0 auto;height:auto}.product-detail-page .latest-walk .goods>div{float:left;width:180px;margin-right:22px}.product-detail-page .latest-walk img{height:240px;width:180px;display:block}.product-detail-page .latest-walk .name{display:block;margin-top:5px;color:#222;line-height:16px}.product-detail-page .latest-walk .price{color:#222;font-weight:700;margin-top:5px}.product-detail-page .latest-walk .market-price{margin-right:5px}.product-detail-page .latest-walk .has-sale{text-decoration:line-through;color:#999}.product-detail-page .warn-tip{display:inline-block;color:#e01;margin-left:7px;font-size:12px}.product-detail-page .warn-tip i{font-size:14px}.product-detail-page .hot-point-wrap{position:relative;margin:0 auto}.product-detail-page .hot-point-wrap .hot-point{position:absolute;background:#fff;filter:progid:dximagetransform.microsoft.alpha(Opacity=0)}.product-detail-page .hot-point-wrap .hot-point.hover .pointer{background-position:0 -25px}.product-detail-page .hot-point-wrap .hot-point.hover .hp-good{display:block}.product-detail-page .hot-point-wrap .pointer{position:absolute;display:block;background:url(../assets/img/product/hp-num.png?v15551f02c8a) no-repeat 0 0;color:#fff;cursor:pointer;width:25px;height:25px;line-height:25px;text-align:center;left:0;top:0;font-size:18px}.product-detail-page .hot-point-wrap .hp-good{display:none;position:absolute;left:30px;top:0;width:210px;background:#000;height:60px;padding:10px}.product-detail-page .hot-point-wrap .hp-good .pic{display:block;float:left;width:60px;height:60px;margin-right:10px}.product-detail-page .hot-point-wrap .hp-good .info{position:relative;float:left;color:#fff;font-size:12px;width:140px;height:60px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.product-detail-page .hot-point-wrap .hp-good .check-btn{display:block;position:absolute;height:18px;width:40px;text-decoration:none;right:0;bottom:0;text-align:center;background:#e8e8e8;border-radius:2px}.sale-discount-page .sale-list-banner{width:100%;position:relative}.sale-discount-page .sale-list-banner ul{overflow:hidden;width:100%;height:100%;position:relative;z-index:1}.sale-discount-page .sale-list-banner ul li{width:100%;height:100%;display:block;top:0;left:0}.sale-discount-page .sale-list-pagation{z-index:2;position:absolute;left:0;bottom:50px;width:100%;height:20px;text-align:center}.sale-discount-page .sale-list-pagation div{display:inline-block}.sale-discount-page .sale-list-pagation span{display:block;width:20px;height:20px;background:url(../assets/img/product/default-normal.png?v15551f02c7e);float:left;margin:0 10px;cursor:pointer}.sale-discount-page .sale-list-pagation span.active{background:url(../assets/img/product/default-active.png?v15551f02c7c)}.sale-discount-page .header-title{position:relative;width:100%;height:42px;margin:20px 0;text-align:center;font-size:20px}.sale-discount-page .header-title .count-wrap{position:relative}.sale-discount-page .header-title .count{background:#fff;padding:0 5px;color:#999;font-size:12px;margin-top:6px}.sale-discount-page .header-title .line-through{position:absolute;bottom:9px;left:0;right:0;height:1px;border-top:1px dotted #999}.sale-discount-page .new-banner img{display:block;width:100%}.sale-discount-page .new-brands{position:relative;width:100%;margin-top:25px}.sale-discount-page .new-brands>*{float:left}.sale-discount-page .new-brands .next,.sale-discount-page .new-brands .pre{position:absolute;display:block;width:40px;height:40px;line-height:40px;color:#fff;background:#e0e0e0;text-align:center;top:50%;margin-top:-20px;cursor:pointer;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.sale-discount-page .new-brands .next:hover,.sale-discount-page .new-brands .pre:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.sale-discount-page .new-brands .pre{left:0}.sale-discount-page .new-brands .next{right:0}.sale-discount-page .new-brands .brands-wrap{position:relative;overflow:hidden;width:890px;height:76px;margin-left:40px}.sale-discount-page .new-brands .brands{position:absolute;width:auto;height:76px}.sale-discount-page .new-brands .brands li{float:left;margin-left:14px}.sale-discount-page .new-brands .brands li a{display:block;width:164px;height:76px;line-height:76px;text-align:center}.sale-discount-page .new-brands .brands li img{vertical-align:middle;max-width:100%;max-height:100%;border:none}.sale-discount-page .new-floor-title{position:relative;margin:35px auto;width:300px;height:31px;line-height:31px;font-size:18px;border:1px solid #000}.sale-discount-page .new-floor-title .date{position:absolute;left:-1px;top:-1px;width:155px;height:33px;color:#fff;text-align:center;background:url(../assets/img/product/floor-title.png?v15551f02c83)}.sale-discount-page .new-floor-title .title{float:right;margin-right:40px}.min-screen .new-sale-page .new-brands .brands-wrap{width:730px}.center-content{width:1150px;margin-left:auto;margin-right:auto}.sale-page{margin-top:10px}.sale-page .slide-switch{display:block}.sale-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.sale-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.sale-page .slide-switch a.prev{left:50%;margin-left:-575px}.sale-page .slide-switch a.next{right:50%;margin-right:-575px}.sale-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.sale-page .slide-container{position:relative;height:450px;overflow:hidden}.sale-page .slide-pagination{font-size:0}.sale-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.sale-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.sale-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.sale-page .activity-entry{margin:10px 0;width:1170px}.sale-page .activity-entry .entry-item{display:block;width:376px;margin-right:10px;background:#f5f5f5}.sale-page .activity-entry .entry-item.first,.sale-page .activity-entry .entry-item.last{width:376px}.sale-page .activity-entry .entry-item.last{margin-right:0}.sale-page .activity-entry .entry-text{padding-left:160px;font-size:16px}.sale-page .activity-entry .icon{width:70px;height:70px;margin-left:48px;background-repeat:no-repeat}.sale-page .activity-entry .title{font-size:30px;font-weight:700;line-height:48px}.sale-page .floor-title{margin:80px auto 40px;width:300px;font-size:16px;line-height:30px;text-align:center;border:1px solid #000}.sale-page .brand-sale .sale-group-big{width:1150px + 10px}.sale-page .brand-sale .sale-group-big .item{width:375px;margin-right:8px;margin-bottom:10px}.sale-page .brand-sale .sale-group-big .pic{position:relative;height:400px}.sale-page .brand-sale .sale-group-big .time{@include box-sizing(border-box);position:absolute;left:0;bottom:0;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";width:100%;font-size:22px;line-height:30px;text-align:right;color:#fff;background:#4e4e4e}.sale-page .brand-sale .sale-group-big .detail{background:#f5f5f5}.sale-page .brand-sale .sale-group-big .brand{margin:24px 10px 10px}.sale-page .brand-sale .sale-group-big .text{padding:24px 10px 48px 0;font-size:16px;height:74px;color:#fd5659}.sale-page .brand-sale .sale-group-big .discount{font-size:28px;font-weight:700;text-align:right;margin-right:20px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group-big .discount .num{font-size:38px;max-width:120px;overflow:hidden}.sale-page .brand-sale .sale-group-big .active-name{font-size:15px;font-weight:700;text-align:center;margin-top:10px}.sale-page .brand-sale .sale-group-big .title{font-size:22px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group{width:1150px + 8px}.sale-page .brand-sale .sale-group .item{width:183px;margin-right:8px;margin-bottom:10px}.sale-page .brand-sale .sale-group .pic{width:100%;display:block}.sale-page .brand-sale .sale-group .detail{padding:14px 10px;background:#f5f5f5;text-align:center;line-height:20px}.sale-page .brand-sale .sale-group .title{height:40px;width:auto;font-size:10px;line-height:40px;text-align:center;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group .title span{font-size:18px;color:#ff0705;display:inline-block}.sale-page .brand-sale .sale-group .time{font-size:14px}.sale-page .sale-nav{display:inline-block;width:100%}.sale-page li{float:left;width:20%;height:40px;line-height:40px;background-color:#e0e0e0;text-align:center;background-color:#f5f5f5;color:#6d6d6d;margin-bottom:10px}.sale-page li.active{color:#fff;background-repeat:no-repeat;background-size:100% 100%}.sale-page li.green.active{color:#fff;background-image:url(../assets/img/sale/navactive-green-middle.png?v15551f02ca7);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.green.first.active{background-image:url(../assets/img/sale/navactive-green-first.png?v15551f02ca3)}.sale-page li.green.last.active{background-image:url(../assets/img/sale/navactive-green-last.png?v15551f02ca5)}.sale-page li.yellow.active{color:#fff;background-image:url(../assets/img/sale/navactive-yellow-middle.png?v15551f02cb0);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.yellow.first.active{background-image:url(../assets/img/sale/navactive-yellow-first.png?v15551f02cad)}.sale-page li.yellow.last.active{background-image:url(../assets/img/sale/navactive-yellow-last.png?v15551f02caf)}.sale-page li.red.active{color:#fff;background-image:url(../assets/img/sale/navactive-red-middle.png?v15551f02cac);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.red.first.active{background-image:url(../assets/img/sale/navactive-red-first.png?v15551f02ca8)}.sale-page li.red.last.active{background-image:url(../assets/img/sale/navactive-red-last.png?v15551f02caa)}.sale-page .commodity-list ul{width:1004px}.sale-page .commodity-item{float:left;width:241px;margin:0 10px 0 0}.sale-page .commodity-img{position:relative;height:323px;text-align:center}.sale-page .commodity-img img{width:100%;height:100%;vertical-align:middle}.sale-page .commodity-img .top-tag{position:absolute;width:60px;height:60px;top:10px;right:10px;line-height:60px;background:url(furniture/top-tag-bg.png?1450667948);font-size:20px;color:#fff}.sale-page .commodity-img .few-tag{position:absolute;bottom:0;width:100%;height:20px;background:#ffac5b;color:#fff;line-height:20px;text-align:center;font-size:12px}.sale-page .commodity-content{padding-top:10px;height:69px;overflow:hidden}.sale-page .commodity-content .commodity-name{font-size:12px;color:#000;line-height:18px;text-align:center}.sale-page .commodity-content .commodity-price{position:relative;margin-top:3px;text-align:center;line-height:20px;color:#000}.sale-page .commodity-content .commodity-price span{display:inline-block;display:inline;zoom:1;font-size:12px;padding:0 15px}.sale-page .commodity-content .commodity-price span.origin{text-decoration:line-through}.sale-page .commodity-content .commodity-price strong{font-weight:400;color:#565656;font-size:13px}.sale-page .commodity-content .commodity-price span.vip-tag{background-image:url(../assets/img/sale/vip.png?v15551f02cb3);background-repeat:no-repeat;background-size:100% 90%;width:40px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;width:30px}.sale-page .commodity-content .commodity-price span.vip-1{background-image:url(../assets/img/product/silver-small.png?v15551f02c94)}.sale-page .commodity-content .commodity-price span.vip-1,.sale-page .commodity-content .commodity-price span.vip-2{background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.sale-page .commodity-content .commodity-price span.vip-2{background-image:url(../assets/img/product/golden-small.png?v15551f02c85)}.sale-page .commodity-content .commodity-price span.vip-3{background-image:url(../assets/img/product/platinum-small.png?v15551f02c8d);background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.sale-page .commodity-content .commodity-price .price-sale{margin-left:10px;padding-left:10px;width:36px;height:20px;line-height:20px;background:url(../assets/images/furniture/sale-tag-bg.png?1450667948);color:#fff}@media screen and (min-width:1150px){.sale-page .floor-header{margin:80px 0 40px}.sale-page .floor-header .header-navs li{padding:1px 15px}}@media screen and (min-width:1150px){.sale-page .commodity-list ul{width:1160px}.sale-page .commodity-item{width:280px}.sale-page .commodity-img{height:374px}.sale-page .commodity-content{padding-top:14px;height:77px}}.sale-discount-page .sale-title{margin:30px 0;font-size:12px;line-height:26px}.sale-discount-page .sale-title .title{margin-right:20px;font-size:16px}.sale-discount-page .sale-title .discount{display:inline-block;margin-right:10px;padding:0 10px;font-weight:lighter;line-height:16px;vertical-align:text-bottom;color:#fff;background:#ff575c}.sale-discount-page .sale-title .time .iconfont{margin-right:5px}.sale-discount-page .sort{padding:10px;border:1px solid #eaeceb}.sale-discount-page .sort li{display:inline-block;margin-right:15px;padding:0 10px;font-size:12px;line-height:20px;color:#444}.sale-discount-page .sort li.title{margin-right:0;font-weight:700}.sale-discount-page .sort li.active{color:#666;border:1px solid #000}.sale-discount-page .pager{float:right}.outlets-page .column-img-tab{height:178px;margin-top:15px}.outlets-page .column-img-tab li{width:380px;height:178px;margin-left:5px;float:left;overflow:hidden}.outlets-page .column-img-tab li:first-child{margin-left:0}.outlets-page .column-img-tab img{width:100%}.outlets-page .limited-buy .limit-list{width:65%}.outlets-page .limited-buy .limit-item{height:260px;margin-top:15px;overflow:hidden}.outlets-page .limited-buy .limit-item img{width:76%;height:100%;float:right}.outlets-page .limited-buy .limit-item .item-info{width:24%;height:100%;color:#585858;font-size:14px;background-color:#f5f5f5;position:relative;text-align:center;z-index:1}.outlets-page .limited-buy .limit-item .item-info>a{width:100%;height:100%;display:block}.outlets-page .limited-buy .limit-item .logo-img{width:79%;height:25%;margin:25px 0 40px;float:none}.outlets-page .limited-buy .limit-item .discount{font-size:20px;font-weight:700}.outlets-page .limited-buy .limit-item i{font-style:italic;color:#fe575d;font-size:30px;margin-right:10px}.outlets-page .limited-buy .limit-item .title{font-size:16px;margin:28px 0 14px;font-weight:700}.outlets-page .limited-buy .limit-item .time{color:#585858}.outlets-page .limited-buy .limit-item:first-child{margin-top:0}.outlets-page .limit-extra{width:33%}.outlets-page .limit-extra .source-img{display:block;margin-bottom:15px}.outlets-page .limit-extra .type-list{padding:15px 10px}.outlets-page .limit-extra .type-list li{width:27%;margin-left:4%;line-height:40px;display:inline-block;text-align:center}.outlets-page .limit-extra .good-list{width:300%}.outlets-page .limit-extra .good-list .list-page{width:33%;max-height:918px;overflow:hidden;display:inline-block;vertical-align:top}.outlets-page .limit-extra .good-list .good-item{padding:15px}.outlets-page .limit-extra .item-text{width:225px;padding-right:10px;padding-top:5px;float:right}.outlets-page .limit-extra .item-text a{line-height:26px;color:#555;margin:5px 0 20px}.outlets-page .limit-extra .item-text .price{margin-top:20px}.outlets-page .limit-extra .item-text .sale-price{color:#ec0011;margin-right:15px}.outlets-page .limit-extra .item-text .market-price{color:#999;margin-right:15px;text-decoration:line-through}.outlets-page .limit-extra .item-text .discount{font-size:12px;line-height:22px;color:#fff;padding:0 10px 0 20px;background:url(../assets/img/product/discount-tag.png?v15551f02c81) no-repeat;display:inline-block}.outlets-page .limit-extra .good-page-btns{text-align:center;padding-bottom:10px;user-select:none}.outlets-page .limit-extra .good-page-btns label{width:40px;height:40px;line-height:40px;color:#fff;background-color:#000;text-align:center;display:inline-block;cursor:pointer;font-size:26px}.outlets-page .limit-extra .good-page-btns label:first-child{margin-right:20px}.outlets-page .extra-pack{margin-bottom:15px;border:1px solid #000;overflow:hidden}.outlets-page .extra-pack .extra-title{height:34px;line-height:34px;background-color:#000;color:#fff;font-size:18px;text-align:center}.outlets-page .near-over{width:1170px;margin-top:-20px}.outlets-page .near-over .activity-list{margin-top:-20px}.outlets-page .near-over li{float:left;margin-right:20px;margin-top:20px}.outlets-page .near-over li>a{width:565px;height:263px;display:block}.outlets-page .near-over .item-info{height:80px;border:1px solid #000;border-top:0;margin-top:-3px}.outlets-page .near-over .brand-logo{width:120px;float:right}.outlets-page .near-over .activity-info{width:360px;padding:10px 20px}.outlets-page .near-over .activity-info p{color:#585858;font-size:16px}.outlets-page .near-over .activity-info p:first-child{font-size:20px;font-weight:700;margin-bottom:10px;color:#000}.outlets-page .near-over .activity-info i{font-style:italic;color:#fe575d;font-size:30px;margin-right:10px}.outlets-page .near-over .activity-info .title{max-width:250px;color:#3a3a3a;font-size:16px;margin-left:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}.outlets-page .sort-layer{height:48px}.outlets-page .sort-layer .full-line{width:100%;background:#f5f7f6;position:absolute;left:0}.outlets-page .sort-layer .fixed{position:fixed;top:0;z-index:12;opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-page .sort-layer .sort-pager{width:1150px;margin:0 auto}.outlets-page .main-banner{height:450px;position:relative}.outlets-page .main-banner .slide-wrapper{height:100%}.outlets-page .main-banner ul{width:100%;height:100%;position:relative}.outlets-page .main-banner li{position:absolute;top:0;left:0}.outlets-page .main-banner li,.outlets-page .main-banner li>a{width:100%;height:100%;display:block}.outlets-page .main-banner .slide-switch{position:relative;width:1150px;left:50%;margin-left:-575px;top:-225px;display:block}.outlets-page .main-banner .slide-shade{display:none}.outlets-page .product-pager{padding:20px 0;font-size:12px;color:#6a6a6a;border-top:2px solid #eaeceb}.outlets-page .product-pager .pager{float:right}.outlets-channel-page .slide-thumb-container{height:510px}.outlets-channel-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.outlets-channel-page .slide-wrapper ul{position:relative;height:100%}.outlets-channel-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:860px;height:100%}.outlets-channel-page .slide-wrapper li a{display:block;height:100%;width:860px;margin:0 auto}.outlets-channel-page .slide-wrapper li img{width:100%;height:100%}.outlets-channel-page .slide-wrapper:hover .slide-switch.show,.outlets-channel-page .slide-wrapper li:first-child{display:block}.outlets-channel-page .slide-container-placeholder{height:450px;width:100%}.outlets-channel-page .slide-thumb-container-placeholder{height:510px}.outlets-channel-page .slide-switch{display:block}.outlets-channel-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.outlets-channel-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.outlets-channel-page .slide-switch a.prev{left:50%;margin-left:-575px}.outlets-channel-page .slide-switch a.next{right:50%;margin-right:-575px}.outlets-channel-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-channel-page .thumb-pagination{width:1148px;margin:6px auto 0;padding-left:2px}.outlets-channel-page .thumb-pagination li{position:relative;float:left;margin-left:6px;width:138px;height:54px}.outlets-channel-page .thumb-pagination li a{position:absolute;left:0;right:0;bottom:0;top:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.outlets-channel-page .thumb-pagination li img{width:100%;height:100%}.outlets-channel-page .thumb-pagination li:first-child{margin:0}.outlets-channel-page .thumb-pagination li.focus a{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.outlets-channel-page .slide-pagination{font-size:0;width:860px}.outlets-channel-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.outlets-channel-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.outlets-channel-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.outlets-channel-page .slide-container{height:450px;width:100%;position:relative}.outlets-channel-page .slide-container .col{float:left}.outlets-channel-page .slide-container .col a{display:block}.outlets-channel-page .slide-container .right-col a:last-child{margin-bottom:0}.outlets-channel-page .slide-container .right-col img{height:100%;width:100%}.outlets-channel-page .slide-container .center-col{position:relative;width:860px;height:450px;font-size:0;margin-right:0}.outlets-channel-page .slide-container .center-col .slide-wrapper{height:100%}.outlets-channel-page .slide-container .center-col .slide-wrapper li a{width:100%}.outlets-channel-page .slide-container .center-col img{max-width:100%;max-height:100%}.outlets-channel-page .slide-container .center-col:hover .slide-switch.show{display:block}.outlets-channel-page .slide-container .right-col a{width:290px;height:270px}.outlets-channel-page .slide-container .right-col a:first-child{margin-bottom:0;height:180px}.outlets-channel-page .new-report img{display:block;width:100%;height:100%}.outlets-channel-page .new-report .report-list{float:left;width:868px}.outlets-channel-page .new-report li{float:left;margin:0 8px 8px 0;width:185px;height:248px;overflow:hidden}.outlets-channel-page .new-report li:first-child{margin-right:7px;width:282px;height:504px}.outlets-channel-page .new-report .last-item{float:left;width:282px;height:504px;overflow:hidden}.outlets-channel-page .preference-brand{overflow:hidden}.outlets-channel-page .preference-brand-list{margin-top:8px;width:1158px}.outlets-channel-page .preference-brand-item{float:left;margin-right:8px;margin-bottom:8px}.outlets-channel-page .preference-brand-item a{display:table-cell;width:185px;height:86px;text-align:center;vertical-align:middle}.outlets-channel-page .preference-brand-item img{display:block;max-width:100%;max-height:100%;margin:0 auto}.outlets-channel-page .preference-more{float:left;width:185px;height:86px;line-height:100px;text-align:center;color:#000;font-size:16px}.outlets-channel-page .img-slider-wrapper{position:relative;width:100%;height:558px;background:#8ae6e0;overflow:hidden}.outlets-channel-page .img-slider-wrapper .img-brand-switch{display:block}.outlets-channel-page .img-slider-wrapper .img-brand-switch a{position:absolute;top:50%;font-size:36px;color:#fff}.outlets-channel-page .img-slider-wrapper .img-brand-switch a.next{right:30px}.outlets-channel-page .img-slider-wrapper .img-brand-switch a.prev{left:30px}.outlets-channel-page .img-container-landscape{box-sizing:border-box;margin:86px auto 0;width:982px;height:433px;overflow:hidden}.outlets-channel-page .img-container-landscape .img-list{width:1000px;height:100%}.outlets-channel-page .img-container-landscape .img-item{float:left;box-sizing:border-box;width:320px;height:100%;margin-right:10px}.outlets-channel-page .img-container-landscape .img-item img{width:100%;height:100%}.outlets-channel-page .img-brand{position:relative;width:100%;height:175px;overflow:hidden}.outlets-channel-page .img-brand ul{width:1158px}.outlets-channel-page .img-brand li{float:left;margin:0 8px 0 0;width:378px;height:175px;line-height:175px;overflow:hidden;font-size:0;text-align:center}.outlets-channel-page .img-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.outlets-channel-page .img-brand .img-brand-switch{display:none}.outlets-channel-page .img-brand .img-brand-switch a{position:absolute;top:50%;margin:-20px 0 0;width:40px;height:40px;line-height:40px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.outlets-channel-page .img-brand .img-brand-switch a.prev{left:0}.outlets-channel-page .img-brand .img-brand-switch a.next{right:0}.outlets-channel-page .img-brand .img-brand-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-channel-page .img-brand:hover .img-brand-switch{display:block}.outlets-channel-page .logo-brand{width:100%;height:282px;overflow:hidden}.outlets-channel-page .logo-brand ul{width:1158px}.outlets-channel-page .logo-brand li{float:left;margin:8px 8px 0 0;width:185px;height:86px;line-height:86px;font-size:0;text-align:center}.outlets-channel-page .logo-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.outlets-channel-page .logo-brand .logo-brand-switch{position:relative;background:url(../assets/img/index/logo-brand-line.png?v15551f02c1e) no-repeat 50%;line-height:normal}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont{position:absolute;left:50%;font-size:32px}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont.prev{top:10px;margin-left:-48px}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont.next{bottom:12px;margin-left:20px}.outlets-channel-page .logo-brand .brand-more{font-size:16px}.outlets-channel-page .logo-brand .brand-more:hover{text-decoration:underline}.outlets-channel-page .logo-brand.logos-10{height:188px}.outlets-channel-page .categorys-list ul{width:1158px}.outlets-channel-page .categorys-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px}.outlets-channel-page .categorys-list li img{display:block;width:100%;height:100%}.outlets-channel-page .categorys-list li.cate-item0{width:185px;height:504px}.outlets-channel-page .categorys-list li.cate-item1{width:377px;height:504px}.outlets-channel-page .tpl-recommend{width:100%;position:relative}.outlets-channel-page .tpl-recommend a{display:block}.outlets-channel-page .tpl-recommend a img{display:block;width:100%;height:100%}.outlets-channel-page .tpl-recommend .tpl-body{margin-bottom:8px}.outlets-channel-page .tpl-recommend .tpl-nav{float:left;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-keywords{margin-bottom:8px}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category{padding:10px 0;background-color:#f8f8f8;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category a{float:left;width:50%;text-align:center;color:#000;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-brands{float:left;overflow:hidden;margin-left:8px}.outlets-channel-page .tpl-recommend .tpl-brands li{margin-top:8px}.outlets-channel-page .tpl-recommend .tpl-types{float:left;overflow:hidden;margin-top:-8px;width:579px}.outlets-channel-page .tpl-recommend .tpl-types li{float:left;margin-left:8px;margin-top:8px}.outlets-channel-page .tpl-recommend .tpl-types li a{width:185px;height:248px}.outlets-channel-page .tpl-recommend .tpl-products{overflow:hidden;margin-left:-10px}.outlets-channel-page .tpl-recommend .tpl-products li{float:left;margin-left:10px}.outlets-channel-page .tpl-recommend .tpl-products li a{width:222px;height:298px}.outlets-channel-page .tpl-recommend .tpl-nav{width:185px}.outlets-channel-page .tpl-recommend .tpl-nav .keywords0,.outlets-channel-page .tpl-recommend .tpl-nav .keywords1,.outlets-channel-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:10px;height:76px}.outlets-channel-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category{height:228px}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category a{height:38px;line-height:38px;font-size:14px}.outlets-channel-page .tpl-recommend .tpl-brands{width:378px;height:512px}.outlets-channel-page .tpl-recommend .tpl-brands li a{height:248px}.outlets-special-page .main-banner{height:360px}.outlets-special-page .special-head{margin:15px 0;border-bottom:1px dashed #ccc}.outlets-special-page .special-head .special-limit{float:right;line-height:38px}.outlets-special-page .special-head .special-name{height:40px;line-height:40px;font-size:20px}.outlets-special-page .special-head .special-name img{width:100px;height:40px;vertical-align:top}.outlets-special-page .special-head .special-name span{font-size:16px}.outlets-special-page .special-head .special-name i{font-weight:700;font-style:italic;color:#fe575d;font-size:26px;position:relative;top:3px;margin:0 8px 0 2px}.outlets-special-page .special-head .special-title{font-size:22px;height:34px;text-align:center}.outlets-special-page .special-head .all-count{width:120px;font-size:12px;line-height:26px;background:#fff;margin-left:-60px;font-weight:400;position:absolute;left:50%;display:block}.main-product .all-goods-menu{height:35px;line-height:35px;padding:45px 0 10px}.main-product .all-goods-menu .menu-tag{color:#d0021b;font-size:15px;font-weight:700;text-align:left;padding:0 20px 0 10px;border-right:1px solid #000;float:left}.main-product .all-goods-menu .menu-list{width:850px;height:35px;overflow:hidden;float:left;font-size:14px;padding-left:10px}.main-product .all-goods-menu .menu-list li{display:inline-block;padding:0 15px}.main-product .all-goods-menu .menu-list .on{background:#000;height:28px;line-height:28px}.main-product .all-goods-menu .menu-list .on a{color:#fff}.main-product .all-goods-menu .more{font-size:14px;float:right}.main-product .product-list{width:1160px}.main-product .product-list .list-item{width:222px;margin:23px 10px 23px 0;float:left}.main-product .product-list .thumb{width:100%;height:130%;display:inline-block}.main-product .product-list .thumb img{width:100%;height:100%}.main-product .product-list .detail-text{padding:15px 0;text-align:center;font-size:14px;font-weight:700}.main-product .product-list .name{line-height:1.5;padding:0 20px;margin-bottom:3px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-product .product-list .discount{font-size:12px;line-height:22px;color:#fff;padding:0 10px 0 20px;margin-left:20px;background:url(../assets/img/product/discount-tag.png?v15551f02c81) no-repeat;display:inline-block}.product-page .product-pager{padding:20px 0;font-size:12px;color:#6a6a6a;border-top:2px solid #eaeceb}.product-page .product-pager .pager{float:right}.product-page .list-left{width:160px}.product-page .list-right{width:970px}.new-sale-page .goods-container,.product-list-page .goods-container{height:auto;padding-top:25px;position:relative;width:980px}.new-sale-page .goods-container .good-info,.product-list-page .goods-container .good-info{width:235px}.new-sale-page .goods-container .good-info .good-detail-img,.product-list-page .goods-container .good-info .good-detail-img{height:315px}.new-sale-page .goods-container .block-next-page,.product-list-page .goods-container .block-next-page{width:235px;height:315px}.new-sale-page .filter-box .brand .attr-content,.product-list-page .filter-box .brand .attr-content{max-width:730px}.min-screen .new-sale-page .list-right,.min-screen .product-list-page .list-right{width:810px}.min-screen .new-sale-page .goods-container,.min-screen .product-list-page .goods-container{height:auto;padding-top:25px;position:relative;width:820px}.min-screen .new-sale-page .goods-container .good-info,.min-screen .product-list-page .goods-container .good-info{width:195px}.min-screen .new-sale-page .goods-container .good-info .good-detail-img,.min-screen .product-list-page .goods-container .good-info .good-detail-img{height:261px}.min-screen .new-sale-page .goods-container .block-next-page,.min-screen .product-list-page .goods-container .block-next-page{width:195px;height:261px}.min-screen .new-sale-page .filter-box .brand .attr-content,.min-screen .product-list-page .filter-box .brand .attr-content{max-width:570px} \ No newline at end of file diff --git a/public/dist/yohobuy-node/0.0.1/product.outlets.js b/public/dist/yohobuy-node/0.0.1/product.outlets.js deleted file mode 100644 index 8152b08..0000000 --- a/public/dist/yohobuy-node/0.0.1/product.outlets.js +++ /dev/null @@ -1,54 +0,0 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e){var t=36e5,n=6e4,i=1e3,r="",o=0,a=0,s=0,l=0;return e>1e3&&(o=Math.floor(e/t/24),a=Math.floor(e/t%24),s=Math.floor(e/n%60),l=Math.floor(e/i%60),r+=o>0?o+"天":"",r+=a>0?a+"小时":"",r+=s>0?s+"分钟":"",r+=l>0?l+"秒":""),r}function r(){var e,t;for(e=0;e<d.length;e++)d[e].time-=1e3,t=i(d[e].time),d[e].dom.text(t)}function o(e){u.animate({"margin-left":10*-e+"0%"},"fast"),u.data({page:e})}function a(){var e=u.find(".good-item"),t="",n=[],i=0;if(u.length){for(e.each(function(){i%5===0&&n.push(""),n[n.length-1]+=e[i].outerHTML,i++}),u.data({max:n.length}),i=0;i<n.length;i++)t+='<div class="list-page">'+n[i]+"</div>";u.html(t)}}var s,l=n(2),c=n(6),u=l(".limit-main .good-list"),p=l(".sort-layer .full-line"),h=l(".outlets-page").data("page"),d=[];n(1),n(10),n(16),p.length&&(s=p.parent(),l(window).scroll(function(){var e=s.position().top;l(this).scrollTop()>=e?p.addClass("fixed"):p.removeClass("fixed")})),l(".time").each(function(){var e=l(this).data();e.limit&&d.push({dom:l(this),time:e.limit})}),l(".good-page-btns > label").click(function(){var e=(new Date).getTime(),t=u.data(),n=t.max-1,i=t.page?t.page:0;t.time&&e-t.time<700||(u.data({time:e}),l(this).hasClass("pre-page-btn")?i>0?i-=1:o(-.1):n>i?i+=1:o(n+.1),o(i))}),setInterval(r,1e3),h?l(".slide-container").slider({orient:!1}):l(".slide-container").slider({orient:!0}),a(),c(l("img.lazy"))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ -!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(Ie)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(je(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(je(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){ze.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&ze.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function I(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function H(e){var t=se,n=dt[e];return n||(n=I(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=I(e,t),ht.detach()),dt[e]=n),n}function O(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function j(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function B(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&Fe(i)&&(o[a]=ve._data(i,"olddisplay",H(i.nodeName)))):(r=Fe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function $(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+qe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+$(e,t,n||(a?"border":"content"),i,o)+"px"}function q(e,t,n,i,r){return new q.prototype.init(e,t,n,i,r)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function W(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=qe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function z(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||H(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==H(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?H(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=z(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,z,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match(Ie)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function Q(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,H)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&M(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!O||!O.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=$),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===$&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[$]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=F++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[$]||(t[$]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[$]&&(r=v(r)),o&&!o[$]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[$]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!H);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,I,H,O,j,B,M,$="sizzle"+1*new Date,R=e.document,q=0,F=0,W=n(),z=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{G.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,I=D.documentElement,H=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return I.appendChild(e).id=$,!D.getElementsByName||!D.getElementsByName($).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&H){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&H?t.getElementsByClassName(e):void 0},j=[],O=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){I.appendChild(e).innerHTML="<a id='"+$+"'></a><select id='"+$+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&O.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||O.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||O.push("~="),e.querySelectorAll(":checked").length||O.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||O.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&O.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||O.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),O.push(",.*:")})),(w.matchesSelector=ge.test(B=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&r(function(e){w.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),j.push("!=",oe)}),O=O.length&&new RegExp(O.join("|")),j=j.length&&new RegExp(j.join("|")),t=ge.test(I.compareDocumentPosition),M=t||ge.test(I.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&M(R,e)?-1:t===D||t.ownerDocument===R&&M(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&H&&!U[n+" "]&&(!j||!j.test(n))&&(!O||!O.test(n)))try{var i=B.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!H):void 0;return void 0!==i?i:w.attributes||!H?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[$]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=H?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===I},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=z[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):z(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[$]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&H&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return G.apply(n,i),n;break}}return(c||E(e,p))(i,t,!H,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=$.split("").sort(V).join("")===$,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var Ie=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var He;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(He.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!He)if(He=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return He.promise(e)},ve.ready.promise();var Oe;for(Oe in ve(me))break;me.ownFirst="0"===Oe,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var je=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var $e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+$e+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},We=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)We(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},ze=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}(); -var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(Ie)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(Ie)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&je(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&je(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||je(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return We(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return We(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+$e+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+$e+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return M(e,n,i?$(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=O(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=O(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+qe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return We(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(Ie);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(W(t,!0),e,i,r)}}),ve.each({slideDown:W("show"),slideUp:W("hide"),slideToggle:W("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var It=/\r/g,Ht=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(It,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Ot,jt,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,$t=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return We(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?jt:Ot)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match(Ie);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&$t||!Mt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute($t?n:i)}}),jt={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&$t||!Mt.test(n)?e.setAttribute(!$t&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;Rt&&$t||!Mt.test(t)?Bt[t]=function(e,t,i){var r,o;return i||(o=Bt[t],Bt[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Bt[t]=o),r}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&$t||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):Ot&&Ot.set(e,t,n)}}),$t||(Ot={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:Ot.set},ve.attrHooks.contenteditable={set:function(e,t,n){Ot.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return We(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var Wt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(Wt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(Wt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){ -var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match(Ie)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(Wt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var zt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=zt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,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":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=G(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(Ie)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return We(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=O(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return We(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){I+=10,E.css({transform:"rotateX("+I+"deg)","-webkit-transform":"rotateX("+I+"deg)","-moz-transform":"rotateX("+I+"deg)"}),I/90%2===1&&E.toggleClass("logo-cn"),I/90%2===0&&I%360!==0?window.setTimeout(p,3e3):I%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(H,function(){E.toggleClass("logo-cn"),E.fadeIn(H,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,I=0,H=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*! - - handlebars v4.0.5 - - Copyright (C) 2011-2015 by Yehuda Katz - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - @license - */ -!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17], -47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend(" + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()), -this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add([" ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"",tick:""};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},,,function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont"></span></a><a class="next" href="javascript:;"><span class="iconfont"></span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},,,,,,function(e,t){}]); \ No newline at end of file diff --git a/public/dist/yohobuy-node/0.0.1/product.sale.js b/public/dist/yohobuy-node/0.0.1/product.sale.js deleted file mode 100644 index 0282993..0000000 --- a/public/dist/yohobuy-node/0.0.1/product.sale.js +++ /dev/null @@ -1,55 +0,0 @@ -!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e){var t,n,i,r;r=e.attr("urlLocation"),t="/product/sale/goods",i=e.parent().parent(".sale-box").find(".goods"),n=t+r,a.ajax({type:"GET",url:n,data:""}).then(function(e){i.html(""),i.append(e),s(a("img.lazy"))})}function r(e){var t=36e5,n=6e4,i=1e3,r="",o=0,a=0,s=0,l=0;return e>1e3&&(o=Math.floor(e/t/24),a=Math.floor(e/t%24),s=Math.floor(e/n%60),l=Math.floor(e/i%60),r+=o>0?o+"天":"",r+=a>0?a+"小时":"",r+=s>0?s+"分钟":"",r+=l>0?l+"秒":""),r}function o(){var e,t;for(e=0;e<c.length;e++)c[e].time-=1e3,t=r(c[e].time),a(".time-calculate").removeClass("hidden"),a(".time-calculate").text(t)}var a=n(2),s=n(6),l=n(17),c=[],u=a(".sale-box"),p=a(".sale-nav li");n(1),n(19),n(10),n(20),n(21),l.init(4),s(a("img.lazy")),a(".slide-container").slider(),p.on("click",function(){a(this).siblings(".active").removeClass("active"),a(this).addClass("active"),i(a(this))}),function(){u.each(function(){var e=a(this).find(p).eq(0);i(e)})}(),".sale-discount-page".length>0&&(a(".time-calculate").each(function(){var e=a(this).attr("data");e&&c.push({dom:a(this),time:e})}),setInterval(o,1e3))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ -!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(Ie)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(He(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(He(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){We.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Ge.test(a)?"<table>"!==p[1]||Ge.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&We.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function I(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function O(e){var t=se,n=dt[e];return n||(n=I(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=I(e,t),ht.detach()),dt[e]=n),n}function j(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function B(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&Fe(i)&&(o[a]=ve._data(i,"olddisplay",O(i.nodeName)))):(r=Fe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function $(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+qe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+$(e,t,n||(a?"border":"content"),i,o)+"px"}function q(e,t,n,i,r){return new q.prototype.init(e,t,n,i,r)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function z(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=qe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function W(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||O(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==O(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?O(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=W(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,W,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match(Ie)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function G(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function Q(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,O)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&M(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!j||!j.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=$),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return Q.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===$&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[$]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=F++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[$]||(t[$]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[$]&&(r=v(r)),o&&!o[$]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):Q.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[$]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!O);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}Q.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,I,O,j,H,B,M,$="sizzle"+1*new Date,R=e.document,q=0,F=0,z=n(),W=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,G=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{Q.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){Q={apply:J.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,I=D.documentElement,O=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return I.appendChild(e).id=$,!D.getElementsByName||!D.getElementsByName($).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&O){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&O?t.getElementsByClassName(e):void 0},H=[],j=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){I.appendChild(e).innerHTML="<a id='"+$+"'></a><select id='"+$+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&j.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||j.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||j.push("~="),e.querySelectorAll(":checked").length||j.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||j.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&j.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||j.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),j.push(",.*:")})),(w.matchesSelector=ge.test(B=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&r(function(e){w.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),H.push("!=",oe)}),j=j.length&&new RegExp(j.join("|")),H=H.length&&new RegExp(H.join("|")),t=ge.test(I.compareDocumentPosition),M=t||ge.test(I.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&M(R,e)?-1:t===D||t.ownerDocument===R&&M(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&O&&!U[n+" "]&&(!H||!H.test(n))&&(!j||!j.test(n)))try{var i=B.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==i?i:w.attributes||!O?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&z(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[$]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=O?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===I},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=W[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):W(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[$]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&O&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return Q.apply(n,i),n;break}}return(c||E(e,p))(i,t,!O,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=$.split("").sort(V).join("")===$,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var Ie=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var Oe;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(Oe.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!Oe)if(Oe=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return Oe.promise(e)},ve.ready.promise();var je;for(je in ve(me))break;me.ownFirst="0"===je,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var He=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var $e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+$e+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},ze=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)ze(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},We=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Ge=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}(); -var Qe=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(Ie)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(Ie)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&He(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&He(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Qe.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Qe.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Qe.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return ze(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return ze(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+$e+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+$e+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=H(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=H(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return M(e,n,i?$(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=j(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=j(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+qe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return ze(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(Ie);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(z(t,!0),e,i,r)}}),ve.each({slideDown:z("show"),slideUp:z("hide"),slideToggle:z("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var It=/\r/g,Ot=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(It,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ot," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var jt,Ht,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,$t=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return ze(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?Ht:jt)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match(Ie);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&$t||!Mt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute($t?n:i)}}),Ht={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&$t||!Mt.test(n)?e.setAttribute(!$t&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;Rt&&$t||!Mt.test(t)?Bt[t]=function(e,t,i){var r,o;return i||(o=Bt[t],Bt[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Bt[t]=o),r}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&$t||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):jt&&jt.set(e,t,n)}}),$t||(jt={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:jt.set},ve.attrHooks.contenteditable={set:function(e,t,n){jt.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return ze(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var zt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){ -var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match(Ie)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(zt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Wt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Gt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Qt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=Wt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Gt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,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":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?G(G(e,ve.ajaxSettings),t):G(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=Q(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(Ie)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Qt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return ze(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=j(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return ze(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){I+=10,E.css({transform:"rotateX("+I+"deg)","-webkit-transform":"rotateX("+I+"deg)","-moz-transform":"rotateX("+I+"deg)"}),I/90%2===1&&E.toggleClass("logo-cn"),I/90%2===0&&I%360!==0?window.setTimeout(p,3e3):I%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(O,function(){E.toggleClass("logo-cn"),E.fadeIn(O,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,I=0,O=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*! - - handlebars v4.0.5 - - Copyright (C) 2011-2015 by Yehuda Katz - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - @license - */ -!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17], -47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend(" + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()), -this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add([" ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"",tick:""};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},,,function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont"></span></a><a class="next" href="javascript:;"><span class="iconfont"></span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},,,function(e,t,n){var i=n(14),r=function(e){this.__lastTime=null,this.__isStop=!1,e=i.extend(this.defaults,e),r.superclass.constructor.call(this,e)};i.inherit(r,i.assembly),r.prototype.oninit=function(){var e=this,t=e.options;return t.auto&&e.play(),e.go(t.index),this},r.prototype.go=function(e,t){var n,i,r,o,a,s,l,c,u=this,p=u.options;u.__lastTime&&(clearTimeout(u.__lastTime),u.__lastTime=null),t="undefined"==typeof t?p.index:t,n=e===t?0:e>t?1:-1,i=p.loop,o=p.length-1,a=e,e=i?e>o?e-o-1:0>e?e+o+1:e:e>o?o:0>e?0:e,r=p.index=e,s={from:t,to:e,originalto:a,direction:n};for(l in u.registerEvent)if(u.registerEvent[l].length>0)for(c in u.registerEvent[l])u.registerEvent[l].hasOwnProperty(c)&&u.registerEvent[l][c](s);r!==o||e?!u.__isStop&&p.auto&&u.play():u.__lastTime&&clearTimeout(u.__lastTime)},r.prototype.play=function(){var e=this,t=e.options;return e.__lastTime=setTimeout(function(){e.next()},1e3*t.timeout),this},r.prototype.next=function(){var e=this,t=e.options,n=t.index,i=n+t.step;e.go(i,n)},r.prototype.prev=function(){var e=this,t=e.options,n=t.index,i=n-t.step;e.go(i,n)},r.prototype.pause=function(){var e=this;e.__lastTime&&clearTimeout(e.__lastTime),e.__isStop=!0},r.prototype.resume=function(){var e=this;e.__isStop=!1,e.play()},r.prototype.defaults={index:0,timeout:5,step:1,per:1,auto:!1,loop:!1},e.exports=r},function(e,t){var n,i={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Function]":"function","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object String]":"string"},r={__Index:0,list:[],get:function(e){return void 0===e?this.list:this.list[e]},fn:function(){},inherit:function(e,t){var n=r.fn;n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.superclass=t.prototype,e.prototype.constructor===Object.prototype.constructor&&(e.prototype.constructor=t)},extend:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},copy:function(e,t,n){var i,o,a;if("object"!=typeof t)return t;if(i=t.valueOf(),t!==i)return new t.constructor(i);if(t instanceof t.constructor&&t.constructor!==Object){o=e?new e:r.clone(t.constructor.prototype);for(a in t)(e||t.hasOwnProperty(a))&&(o[a]=t[a])}else{o={};for(a in t)o.hasOwnProperty(a)&&(o[a]=t[a])}if(n)for(a in n)o.hasOwnProperty(a)&&(o[a]=n[a]);return o},clone:function(e){return r.__cloneFunc.prototype=e,new r.__cloneFunc},__cloneFunc:function(){},delegate:function(e,t){var n;return t=t||window,arguments.length>2?(n=Array.prototype.slice.call(arguments,2),function(){return e.apply(t,n)}):function(){return e.call(t)}},dom:function(e,t){var n,i,r=e,o={wrap:r},a=r[0].getElementsByTagName("*"),s=a.length;for(i=0;s>i;i++)n=a[i].className,n.indexOf(t)>-1&&(n=n.split(t)[1]),n&&(o[n]=r.find(a[i]));return o},template:function(){var e,t,n,i,o=arguments;if(o.length>0&&r.isString(o[0]))if(e=o[0],2===o.length&&r.isObject(o[1]))for(t in o[1])void 0!==o[1][t]&&(n=new RegExp("({"+t+"})","g"),e=e.replace(n,o[1][t]));else for(i=1;i<o.length;i++)void 0!==o[i]&&(n=new RegExp("({["+(i-1)+"]})","g"),e=e.replace(n,o[i]));return e},__type:function(e){return null==e?String(e):i[Object.prototype.toString.call(e)]||"object"},isObject:function(e){return this.isFunction(e)||!(!e||"object"!=typeof e)},isFunction:function(e){return"function"===this.__type(e)},isArray:Array.isArray||function(e){return"array"===this.__type(e)},isNum:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},isString:function(e){return"string"===this.__type(e)},each:function(e,t,n){var i,o;if(r.isArray(e))for(i=0,o=e.length;o>i&&t.call(e[i],i,e[i],n)!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i],n)===!1)break},funManager:{__loadList:{},__loadFun:function(e,t,n){e.methord&&r.isFunction(e.methord())&&(n=n||window,e.methord()(e,function(){t()},n))},load:function(e,t,n,i){i=i||0,e[i]&&r.funManager.__loadFun(e[i],function(){r.funManager.load(e,t,n,i+1)},n),t(i,n)},get:function(e){return this.__loadList[e]}},log:function(e){var t=window.console||{log:function(){}};t.log(e)},Event:{mousewheel:function(e){var t=e.originalEvent,n=t.detail?-1*t.detail:t.wheelDelta/40,i=0>n?-1:1;return{direction:i,unit:n}},__:function(e,t,n,i){var r;for(r in e)if(window[e[r].validator]){t[e[r].validator](e[r].prefix+n,i,!1);break}},add:function(e,t,n){var i=[{validator:"addEventListener",prefix:""},{validator:"attachEvent",prefix:"on"}];this.__(i,e,t,n)},remove:function(e,t,n){var i=[{validator:"removeEventListener",prefix:""},{validator:"detachEvent",prefix:"on"}];this.__(i,e,t,n)}},getUid:function(e){return r.template("me-{0}{1}-{2}",e,(new Date).getTime(),r.__Index++)},Browser:{isTouch:function(){var e=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture;return!!("ontouchstart"in window||e||window.DocumentTouch)},Prefix:function(){var e,t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],n=document.createElement("div");for(e in t)if(void 0!==n.style[t[e]])return r.template("-{0}-",t[e].replace("Perspective","").toLowerCase())},parseURL:function(e){var t,n,i,r,o,a=document.createElement("a");return a.href=e,{source:e,protocol:a.protocol.replace(":",""),host:a.hostname,port:a.port,query:a.search,params:function(){for(t={},n=a.search.replace(/^\?/,"").split("&"),i=n.length,r=0,o;i>r;r++)n[r]&&(o=n[r].split("="),t[o[0]]=o[1]);return t}(),file:(a.pathname.match(/\/([^\/?#]+)$/i)||[null,""])[1],hash:a.hash.replace("#",""),path:a.pathname.replace(/^([^\/])/,"/$1"),relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[null,""])[1],segments:a.pathname.replace(/^\//,"").split("/")}}},Array:{indexOf:function(e,t){var n;for(n=0;n<e.length;n++)if(this[n]===t)return n;return-1},remove:function(e,t){var n=this.indexOf(e,t);return n>-1&&e.splice(n,1),e}}};n=function(e){this.initialized=!1,this.registerEvent={before:[],change:[],after:[]},this.options=e,this.init(e)},n.output=function(){r.log(r.list)},n.prototype.oninit=r.fn,n.prototype.init=function(e){this.initialized=!0,this.__Uid=r.getUid("me"),this.oninit(e),r.list[this.__Uid]=this},n.prototype.destory=function(){this.initialized=!1,delete r.list[this.__Uid]},n.prototype.getUid=function(){return this.__Uid},n.prototype.getOptions=function(){return this.options},n.prototype.config=function(){if(!(arguments.length>0))return this.options;if("string"==typeof arguments[0]){if(!(arguments.length>1))return this.options[name];this.options[arguments[0]]=arguments[1]}},n.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},n.prototype.off=function(e,t){var n=this,i=n.registerEvent[e],o=[];r.each(i,function(e,n){n===t&&o.push(e)}),r.each(o.reverse(),function(e,t){i.splice(t,1)})},r.assembly=n,e.exports=r},,,function(e,t,n){var i,r=n(2),o=n(6),a=n(4),s=n(18),l=r(".goods-container"),c=l.find(".good-info"),u=l.find(".good-item-wrapper"),p=l.find(".good-info-main"),h=l.find(".good-select-color"),d=r(".product-list-nav");o(r("img.lazy")),t.init=function(e){function t(e,t){var n,i,r,o="",a=e.length,s=4,l=Math.ceil(a/s),c=0;for(n=0;l>n;n++)for(o+="<ul>",i=0;s>i&&(r=n*s+i,r!==a);i++)o+='<li><a target="_blank" href="'+e[n*s+i].url+t+'"><img src="'+e[n*s+i].src+'" data-cover="'+e[n*s+i].coverImg+'" /></a></li>',i===s-1&&(o+="</ul>",c++);return l>c&&(o+="</ul>"),{colorListStr:o,ulNum:l}}function n(){p.html(""),h.html(""),u.css({display:"none"})}i=null,c.unbind(),i=s(c,e),i.addHandler("MouseEnter",function(e){var i,o,a,s,c,d,f,m,g,v,y,b,x,w=10,k=35,S=e.target.attr("data-from")||"";s=[],e.target.find(".goodsList").find(".list").each(function(){a={url:r(this).attr("url"),src:r(this).attr("imgUrl"),coverImg:r(this).attr("cover")},s.push(a)}),i={pics:s},o=t(i.pics,S),n(),d=o.colorListStr,c=o.ulNum,p.append(e.targetDuplicate),h.append(r(d)),y=u.css("paddingLeft"),b=u.css("paddingTop"),x=l.css("paddingTop"),f=10+65*c+e.targetWidth,g=(e.targetX-1)*(e.targetWidth+w)-(parseInt(y,10)+1),v=(e.targetY-1)*(e.targetHeight+k)+parseInt(x,10)-(parseInt(b,10)+1),m=e.offsetR-(65*c+25),0>=m&&(g=g+m-25),u.css({width:f,left:g,top:v,display:"inline-block"}),i.pics[0]&&i.pics[0].src&&p.find(".good-thumb img").attr("src",i.pics[0].src)}),i.addHandler("MouseLeave",function(){n()}),u.mouseleave(function(){n()})},r(document).on("hover",".good-select-color li",function(){var e=r(this).find("img").attr("data-cover"),t=r(this).closest(".good-item-wrapper").find(".good-detail-img").find("img");t.attr("src",e)}),d.find("h3").click(function(){var e=r(this).closest(".product-list-nav");e.hasClass("active")?e.find(".sort-child-list").stop(!0,!0).slideUp():e.find(".sort-child-list").stop(!0,!0).slideDown(),e.toggleClass("active")}),function(){var e,t=r("#brand-card"),n=r("#brand-favor");t.length&&r.ajax({type:"POST",url:"/product/index/getNodeContent",data:{node:t.data("node")}}).then(function(e){t.html(e)}),n.length&&(e=r("#pic-link-tpl").html(),r.ajax({type:"POST",url:"/product/index/getAdnav",data:{brandId:n.data("id")}}).then(function(t){t&&r("#brand-ad").html(a.compile(e)({picLink:t}))}))}()},function(e,t,n){function i(){this.handlers={}}var r=n(2);i.prototype={constructor:i,addHandler:function(e,t){"undefined"==typeof this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t)},fire:function(e){var t,n;if(e.target||(e.target=this),this.handlers[e.type]instanceof Array)for(t=this.handlers[e.type],n=0;n<t.length;n++)t[n](e)},removeHandler:function(e,t){var n,i;if(this.handlers[e]instanceof Array){for(n=this.handlers[e],i=0;i<n.length&&n[i]!==t;i++);n.splice(i,1)}}},e.exports=function(e,t){function n(e){var n,i=0,p=0,h=t,d=0,f="",m=0,g=0;switch(e.type){case"mouseenter":n=r(this),o=setTimeout(function(){a=!0,f=n.clone(),d=n.index()+1,i=d%h===0?h:d%h,p=Math.ceil(d/h),m=n.offset().left,g=u-(m+l),s.fire({type:"MouseEnter",target:n,targetWidth:l,targetHeight:c,targetX:i,targetY:p,rowWidth:h,activeIndex:d,targetDuplicate:f,offsetL:m,offsetR:g})},150);break;case"mouseleave":a||(o&&clearTimeout(o),s.fire({type:"MouseLeave"})),a=!1}}var o,a,s=new i,l=e.eq(0).width(),c=e.eq(0).height(),u=r(window).width();return e.bind({mouseenter:n,mouseleave:n}),s}},function(e,t,n){var i,r,o=n(13),a=n(2),s=a(".sale-list-banner"),l=s.find("li"),c=0,u="",p="",h=!0;for(i=0;i<l.length;i++)u+=0===i?'<span class="active"></span>':"<span></span>";p='<div class="sale-list-pagation"><div>'+u+"</div></div>",l.length>1&&s.append(a(p)),r=new o({length:l.length,loop:!0,auto:!0,timeout:2,index:0}),r.on("change",function(e){h&&(h=!1,c++,a(".sale-list-pagation").find("span").removeClass("active"),l.eq(e.from).animate({opacity:0},300),l.eq(e.to).css({zIndex:c}).animate({opacity:1},300,function(){h=!0}),a(".sale-list-pagation").find("span").eq(e.to).addClass("active"))}),s.hover(function(){h&&r.pause()},function(){r.resume()}),a(".sale-list-pagation span").click(function(){var e=a(this).index();h&&r.go(e)}),r.init()},function(e,t,n){function i(e,t){e.each(function(){g(this).closest(".attr").hasClass("checked")||g(this).removeClass("checked").html(y.unchecked)}),t.find(".checkbox").addClass("checked").html(y.checked)}function r(){x.addClass("hide"),k.removeClass("hide")}function o(){k.addClass("hide"),x.removeClass("hide"),E.children("span").removeClass("hover")}function a(e,t){var n,i=window.queryString();i[e]=t,delete i.page,n="?"+decodeURIComponent(g.param(i)),window.location.href=n}function s(){P.children(".senior-sub:eq("+m+")").addClass("hide"),L.children(".attr:eq("+m+")").removeClass("hover"),m=-1}var l,c,u,p,h,d,f,m,g=n(2),v=n(4),y={unchecked:"",checked:""},b={up:"",down:""},x=g(".brand .default"),w=g("#brand-search-input"),k=g(".brand .brand-panel"),S=k.find(".attr"),_=g("#brand-more"),C=g("#brand-multi"),E=g(".brands-index"),A=g(".ud-price-range"),T=/^\d+$/,N=g(".sort-sub-wrap"),P=g(".senior-sub-wrap"),L=g(".senior-attr-wrap"),D='{{# size}}<a class="attr {{#if checked}}checked{{/if}}" href="{{href}}">{{name}}</a>{{/ size}}',I={},O=g(".filter-box .size");D=v.compile(D),g(".filter-box").on("selectstart",".attr, .brands-index span",function(){return!1}),g(".sort-pre").on("click","li",function(){var e=g(this),t=e.index(),n=e.data("id");return e.hasClass("active")?(e.removeClass("active"),N.children(":eq("+t+")").addClass("hide"),void O.addClass("hide")):(e.siblings(".active").removeClass("active"),e.addClass("active"),N.children(":not(.hide)").addClass("hide"),N.children(":eq("+t+")").removeClass("hide"),void(O.data("load")||(I[n]?(O.find(".attr-content").html(I[n]),O.removeClass("hide")):g.ajax({url:"/product/search/sortSize",data:{msort:n}}).then(function(e){"array"===g.type(e)&&e.length?(I[n]=D({size:e}),O.find(".attr-content").html(I[n]),O.removeClass("hide")):O.addClass("hide")}))))}),_.length>0&&(l=_.children("em"),c=_.children(".iconfont")),C.click(function(){"none"===k.css("display")&&_.trigger("click"),r(),k.removeClass("hide").addClass("multi"),g(this).addClass("hide"),_.addClass("hide")}),_.click(function(){var e=g(this);e.hasClass("more")?(o(),l.text("更多"),c.html(b.down),w.val("").trigger("keyup")):(r(),l.text("收起"),c.html(b.up)),g(this).toggleClass("more")}),E.on("mouseenter","span",function(){var e=g(this),t=e.data("index");e.hasClass("hover")||setTimeout(function(){e.siblings("span.hover").removeClass("hover"),e.addClass("hover"),0===e.index()?S.removeClass("hide"):S.addClass("hide").filter("[data-index="+t+"]").removeClass("hide")},120)}),w.keyup(function(){var e=g(this).val().toLowerCase();""===e?S.removeClass("hide"):S.addClass("hide").filter('[data-key*="'+e+'"]').removeClass("hide")}),g("#brand-multi-ok").click(function(){var e=[];g(this).hasClass("dis")||(k.find("span.checked").each(function(){e.push(g(this).data("id"))}),a("brand",e.join(",")))}),g(".multi-select-cancel").click(function(){var e=g(this).closest(".multi");e.hasClass("brand-panel")&&(C.removeClass("hide"),_.trigger("click"),_.removeClass("hide"),w.val("").trigger("keyup"),o()),e.addClass("hide").removeClass("multi"),i(e.find(".checkbox.checked"),e.find(".attr.checked")),g(this).siblings(".multi-select-ok").addClass("dis")}),g(".check-container").on("click",".attr",function(){var e=g(this),t=e.find(".checkbox"),n=e.closest(".brand-panel, .senior-sub").find(".multi-select-ok");t.toggleClass("checked"),t.hasClass("checked")?t.html(y.checked):t.html(y.unchecked),t.hasClass("checked")||e.siblings(".attr").find(".checked").length>0?n.removeClass("dis"):n.addClass("dis")}),g(".brand, .senior").on("click",".attr > a",function(e){g(this).closest(".multi").length>0&&e.preventDefault()}),g(".filter-box").on("click","li.checked, a.checked",function(e){e.preventDefault()}),A.length>0&&(u=A.find(".limit"),p=u.filter(".min"),h=u.filter(".max"),d=A.find(".price-sure"),u.keyup(function(){var e,t,n,i=g.trim(g(this).val()),r=T.test(i);r||(e=parseInt(i,10),g(this).val(isNaN(e)?"":e)),t=g.trim(p.val()),n=g.trim(h.val()),""!==t||""!==n?d.removeClass("hide"):d.addClass("hide")}),d.click(function(){var e,t=g.trim(p.val()),n=g.trim(h.val());""!==t&&""!==n&&+t>+n&&(e=n,n=t,t=e),a("price",t+","+n)})),L.on("mouseenter",".attr",function(){var e=g(this),t=e.index();e.hasClass("no-sub")||(e.addClass("hover").siblings().removeClass("hover"),P.children(".senior-sub:eq("+t+")").removeClass("hide").siblings().addClass("hide"))}).on("mouseleave",".attr",function(){var e=g(this),t=e.index();e.hasClass("no-sub")||(m=t,f=setTimeout(function(){s()},100))}),g(".senior-sub").on("click",".multi-select",function(){g(this).closest(".senior-sub").addClass("multi")}).on("click",".multi-select-ok",function(){var e=g(this),t=e.closest(".senior-sub"),n=[];e.hasClass("dis")||(t.find("span.checked").each(function(){n.push(g(this).data("id")); -}),a(t.data("attr"),n.join(",")))}).on("mouseenter",function(){clearTimeout(f)}).on("mouseleave",function(){s()})},function(e,t,n){var i=n(2),r=i("#count-per-page"),o=r.next("ul"),a=200;i(document).click(function(e){i(e.target).closest(".page-count").length>0||o&&o.slideUp(a)}),r.click(function(){"none"===o.css("display")?o.slideDown(a):o.slideUp(a)})}]); \ No newline at end of file diff --git a/public/dist/yohobuy-node/assets/font/iconfont.eot b/public/dist/yohobuy-node/assets/font/iconfont.eot deleted file mode 100644 index 3be1ea2..0000000 Binary files a/public/dist/yohobuy-node/assets/font/iconfont.eot and /dev/null differ diff --git a/public/dist/yohobuy-node/assets/font/iconfont.svg b/public/dist/yohobuy-node/assets/font/iconfont.svg deleted file mode 100644 index 9469326..0000000 --- a/public/dist/yohobuy-node/assets/font/iconfont.svg +++ /dev/null @@ -1,100 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -Created by FontForge 20120731 at Tue Jun 7 15:10:09 2016 - By admin -</metadata> -<defs> -<font id="iconfont" horiz-adv-x="1024" > - <font-face - font-family="iconfont" - font-weight="500" - font-stretch="normal" - units-per-em="1024" - panose-1="2 0 6 3 0 0 0 0 0 0" - ascent="896" - descent="-128" - x-height="792" - bbox="0 -212 1158 896" - underline-thickness="50" - underline-position="-100" - unicode-range="U+0078-E619" - /> -<missing-glyph horiz-adv-x="374" -d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" /> - <glyph glyph-name=".notdef" horiz-adv-x="374" -d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" /> - <glyph glyph-name=".null" horiz-adv-x="0" - /> - <glyph glyph-name="nonmarkingreturn" horiz-adv-x="341" - /> - <glyph glyph-name="x" unicode="x" horiz-adv-x="1001" -d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5 -t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5 -t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" /> - <glyph glyph-name="uniE600" unicode="" horiz-adv-x="1048" -d="M832 -126.5q0 -35.5 -25 -60.5t-60.5 -25t-60.5 25t-25 60.5t25 60.5t60.5 25t60.5 -25t25 -60.5zM533 -126.5q0 -35.5 -25 -60.5t-60 -25t-60 25t-25 60.5t25 60.5t60 25t60 -25t25 -60.5zM277 620l-35 159q-3 14 -15 23.5t-27 9.5h-147q-22 0 -37.5 -15.5t-15.5 -37.5 -t15.5 -38t37.5 -16h54l157 -627q6 -25 25.5 -40t44.5 -15h527q25 0 44.5 15t25.5 40l113 452q9 34 -13 62t-57 28h-697z" /> - <glyph glyph-name="uniE601" unicode="" -d="M505 337l2 -2q2 -1 3.5 -1t3.5 1l430 364q2 2 1 5.5t-5 3.5h-435h-424q-4 0 -5 -3.5t1 -5.5zM72 669q-3 2 -6 0.5t-3 -4.5v-584q0 -4 3.5 -5t5.5 1l288 346zM953 669.5q-3 1.5 -5 -0.5l-288 -246l287 -346q3 -2 6 -1t3 5v584q0 3 -3 4.5zM641 406l-131 -111l-5 5 -l-125 103l-275 -328q-2 -3 -1 -6t5 -3h396h407q4 0 5 3t-1 6z" /> - <glyph glyph-name="uniE602" unicode="" horiz-adv-x="1048" -d="M297.5 528q-20.5 0 -35 -14.5t-14.5 -35t14.5 -35.5t35 -15t35.5 15t15 35.5t-15 35t-35.5 14.5zM381 251q0 96 84 164t202 68t202 -68t84 -163.5t-84 -163.5t-202 -68t-202 68t-84 163zM286 251q0 -17 2 -35v1q-88 42 -140.5 114t-52.5 157t51.5 157t139.5 114t192 42 -q142 0 249.5 -76.5t128.5 -189.5q-88 43 -189 43q-104 0 -191.5 -43.5t-138.5 -119t-51 -164.5zM953 36q95 93 95 215t-94 214q2 20 2 23q0 111 -64 205t-174.5 148.5t-240 54.5t-239.5 -54.5t-174 -148.5t-64 -205q0 -78 33 -148.5t93 -125.5l-77 -123q-8 -12 -6.5 -26 -t10.5 -25q13 -15 32 -15q9 0 18 4l180 80q4 2 7 4q20 -7 39 -12q48 -80 138.5 -128t199.5 -48q75 0 145 25q1 -1 2 -1l140 -62q8 -4 17 -4q20 0 32 15q10 10 11 24t-7 26zM527 282q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11z -M667 282q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11zM806 282q-16 0 -27 -11t-11 -27t11 -27.5t27 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11z" /> - <glyph glyph-name="uniE603" unicode="" horiz-adv-x="1158" -d="M1069 181h-245v378h132l113 -169v-209zM1158 417l-155 231h-268v-467h-45v508q0 20 -14 34t-34 14h-63l-67 -89h89v-467h-512v467h45l22 89h-108q-20 0 -34 -14t-14 -34v-549q0 -20 14 -34t34 -14h139q-33 -37 -33 -87q0 -53 37.5 -91t91 -38t91.5 38t38 91q0 50 -34 87 -h264h191q-34 -37 -34 -87q0 -53 38 -91t91.5 -38t91 38t37.5 91q0 50 -33 87h134v325zM326 668q-89 -153 -94 -296v-12h129v12q0 43 17 112q17 68 39 116q27 61 67.5 118t62.5 79l4 3v96h-390l-2 -114h245q-33 -40 -78 -114z" /> - <glyph glyph-name="uniE604" unicode="" -d="M875 126l-363 -164l-363 164v610q247 75 363 75t363 -75v-610zM930 808q-34 11 -84.5 26t-159.5 38.5t-174 23.5t-174 -23.5t-159.5 -38.5t-84.5 -26q-14 -4 -22 -15.5t-8 -25.5v-669q0 -27 25 -39l405 -183q9 -3 18 -3t18 3l405 183q25 12 25 39v669q0 14 -8 25.5 -t-22 15.5zM751 552v83h-473v-83h206v-298h-72v237h-87v-237h-66v-84h506v84h-193v119h151v83h-151v96h179z" /> - <glyph glyph-name="uniE605" unicode="" -d="M903 577l-68 69l-388 -388l-231 230l-68 -68l299 -298l65 65z" /> - <glyph glyph-name="uniE606" unicode="" -d="M512 599q47 0 88 -18t72 -49t49 -72t18 -89q0 -46 -18 -87t-49 -72t-72 -49t-88 -18t-88 18t-72 49t-49 72t-18 87q0 48 18 89t49 72t72 49t88 18v0zM512 599z" /> - <glyph glyph-name="uniE607" unicode="" -d="M797 219.5q0 -7.5 -5 -13.5l-29 -28q-6 -6 -13.5 -6t-12.5 6l-225 224l-224 -224q-6 -6 -13.5 -6t-13.5 6l-28 28q-6 6 -6 13.5t6 13.5l266 266q6 6 13.5 6t12.5 -6l267 -266q5 -6 5 -13.5z" /> - <glyph glyph-name="uniE608" unicode="" -d="M284 15q-14 -14 -14 -33t13.5 -32.5t32.5 -13.5t32 14l397 401q13 14 13 33t-13 33l-397 401q-13 14 -32 14t-32.5 -13.5t-13.5 -32.5t13 -33l351 -369l-350 -369v0zM284 15z" /> - <glyph glyph-name="uniE609" unicode="" -d="M745 753q13 14 13 33t-13.5 32.5t-32.5 13.5t-32 -14l-396 -401q-14 -14 -14 -33t14 -33l396 -401q14 -14 32.5 -14t32 13.5t13.5 32.5t-13 33l-351 369l351 369v0zM745 753z" /> - <glyph glyph-name="uniE60A" unicode="" -d="M512.5 750q-12.5 0 -21.5 -9t-9 -22v-311h-249q-12 0 -21.5 -9t-9.5 -22t9.5 -22t21.5 -9h280q12 0 21.5 9t9.5 22v342q0 13 -9.5 22t-22 9zM513 874q-101 0 -193 -39.5t-158.5 -105.5t-106 -158t-39.5 -193t39.5 -193t106 -158.5t158.5 -105.5t193 -39t192.5 39 -t158 105.5t106 158.5t39.5 193t-39.5 193t-106 158t-158 105.5t-192.5 39.5zM513 -56q-118 0 -218 58t-158.5 158t-58.5 218t58.5 218t158.5 158t218 58t218 -58t158 -158t58 -218t-58 -218t-158 -158t-218 -58z" /> - <glyph glyph-name="uniE60B" unicode="" -d="M286 509l-46 -45l272 -272l272 272l-46 45l-226 -226z" /> - <glyph glyph-name="uniE60C" unicode="" -d="M387 158l45 -46l272 272l-272 272l-45 -46l226 -226z" /> - <glyph glyph-name="uniE60D" unicode="" -d="M766 193l-196 192l196 192l-61 60l-196 -193l-196 193l-60 -60l196 -192l-196 -192l60 -59l196 192l196 -192z" /> - <glyph glyph-name="uniE60E" unicode="" -d="M704 665l-41 39l-343 -320l343 -320l41 39l-301 281z" /> - <glyph glyph-name="uniE60F" unicode="" -d="M892 125l-236 236q54 77 54 172q0 124 -87 211t-210.5 87t-211 -87t-87.5 -211t87.5 -211t210.5 -87q95 0 173 55l236 -236q16 -17 38 -18t37 14t14 37t-18 38zM213 533q0 82 58.5 140.5t140.5 58.5t140.5 -58.5t58.5 -140.5t-58.5 -140.5t-140.5 -58.5t-140.5 58.5 -t-58.5 140.5z" /> - <glyph glyph-name="uniE610" unicode="" -d="M512 77l-439 614h878z" /> - <glyph glyph-name="uniE611" unicode="" horiz-adv-x="1173" -d="M569 607q-28 66 -74 108.5t-95 56.5t-100 2.5t-91.5 -45t-66 -94t-26.5 -137.5q0 -36 8.5 -67.5t26 -58t35.5 -47t46.5 -41t49 -34t52.5 -32.5t48 -30q71 -47 124.5 -106.5t63.5 -93.5q7 31 62.5 92t124.5 110q19 14 55.5 36.5t61 38.5t55 42.5t49 52t31.5 62.5t13 79 -q0 76 -26.5 136t-67 92t-92 42.5t-101 -4t-94.5 -56t-72 -104.5z" /> - <glyph glyph-name="uniE612" unicode="" -d="M0 896h1024v-1024h-1024v1024zM85 -43h854v854h-854v-854z" /> - <glyph glyph-name="uniE613" unicode="" -d="M1024 -128h-1024v1024h1024v-1024zM947 674l-34 34q-13 13 -30 13t-30 -13l-486 -495l-196 205q-13 13 -30 13t-30 -13l-34 -34q-13 -13 -13 -30t13 -30l256 -256q23 -22 51 -8q9 0 9 8l546 546q18 13 20 30.5t-12 29.5z" /> - <glyph glyph-name="uniE614" unicode="" -d="M160 996zM865 247q0 -18 -13 -31l-308 -308q-13 -13 -31 -13t-31 13l-309 308q-13 13 -13 31t13.5 31t30.5 13h617q18 0 31 -13t13 -31zM865 511q0 -18 -13 -31t-31 -13h-617q-18 0 -31 13t-13 31t13 31l309 309q13 13 31 13t31 -13l308 -309q13 -13 13 -31z" /> - <glyph glyph-name="uniE615" unicode="" -d="M951 77h-878l439 614z" /> - <glyph glyph-name="uniE616" unicode="" -d="M877 896h-730q-61 0 -104 -43t-43 -104v-730q0 -61 43 -104t104 -43h730q61 0 104 43t43 104v730q0 61 -43 104t-104 43zM939 19q0 -26 -18 -44t-44 -18h-730q-26 0 -44 18t-18 44v730q0 26 18 44t44 18h730q26 0 44 -18t18 -44v-730z" /> - <glyph glyph-name="uniE617" unicode="" -d="M939 -128h-854q-35 0 -60 25t-25 60v854q0 35 25 60t60 25h854q35 0 60 -25t25 -60v-854q0 -35 -25 -60t-60 -25zM939 789q0 10 -6 16t-16 6h-810q-10 0 -16 -6t-6 -16v-810q0 -10 6 -16t16 -6h810q10 0 16 6t6 16v810zM457 183q-10 -12 -30.5 -12t-29.5 12l-171 171 -q-13 10 -13 30q0 18 12.5 30.5t30.5 12.5q20 0 30 -13l141 -141l311 312q13 12 30 12q18 0 30.5 -12.5t12.5 -29.5q0 -21 -13 -30z" /> - <glyph glyph-name="uniE618" unicode="" horiz-adv-x="1000" -d="M662 662v-499l-299 250zM662 662z" /> - <glyph glyph-name="uniE619" unicode="" -d="M384 640v-513l321 257z" /> - </font> -</defs></svg> diff --git a/public/dist/yohobuy-node/assets/font/iconfont.ttf b/public/dist/yohobuy-node/assets/font/iconfont.ttf deleted file mode 100644 index eafa37f..0000000 Binary files a/public/dist/yohobuy-node/assets/font/iconfont.ttf and /dev/null differ diff --git a/public/dist/yohobuy-node/assets/font/iconfont.woff b/public/dist/yohobuy-node/assets/font/iconfont.woff deleted file mode 100644 index 310bced..0000000 Binary files a/public/dist/yohobuy-node/assets/font/iconfont.woff and /dev/null differ diff --git a/public/dist/yohobuy-node/assets/img/product/golden-small.png b/public/dist/yohobuy-node/assets/img/product/golden-small.png deleted file mode 100644 index 024e7d5..0000000 Binary files a/public/dist/yohobuy-node/assets/img/product/golden-small.png and /dev/null differ diff --git a/public/dist/yohobuy-node/assets/img/product/platinum-small.png b/public/dist/yohobuy-node/assets/img/product/platinum-small.png deleted file mode 100644 index ad31efd..0000000 Binary files a/public/dist/yohobuy-node/assets/img/product/platinum-small.png and /dev/null differ diff --git a/public/dist/yohobuy-node/assets/img/product/silver-small.png b/public/dist/yohobuy-node/assets/img/product/silver-small.png deleted file mode 100644 index f41d04b..0000000 Binary files a/public/dist/yohobuy-node/assets/img/product/silver-small.png and /dev/null differ diff --git a/public/gulpfile.js b/public/gulpfile.js index b04f255..8d775d7 100644 --- a/public/gulpfile.js +++ b/public/gulpfile.js @@ -185,15 +185,20 @@ gulp.task('webpack-dev-server', () => { }); // webpack compile in pro -gulp.task('webpack', () => { +gulp.task('webpack', (done) => { var proConfig = Object.assign({}, webpackConfig); proConfig.output.path = dist.js; - proConfig.plugins = [new webpack.optimize.UglifyJsPlugin()]; + proConfig.plugins.push(new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + } + })); webpack(proConfig, (err, stats) => { if (err) { throw new gutil.PluginError('webpack', err); } gutil.log('[webpack compile]:', stats.endTime - stats.startTime, 'ms'); + done(); }); }); diff --git a/public/img/layout/outlets.png b/public/img/layout/outlets.png index 8f43ee7..30e4d98 100644 Binary files a/public/img/layout/outlets.png and b/public/img/layout/outlets.png differ diff --git a/public/img/passport/alertclose.png b/public/img/passport/alertclose.png new file mode 100644 index 0000000..d46a01d Binary files /dev/null and b/public/img/passport/alertclose.png differ diff --git a/public/img/passport/angle.png b/public/img/passport/angle.png new file mode 100644 index 0000000..1fa7f3b Binary files /dev/null and b/public/img/passport/angle.png differ diff --git a/public/img/passport/arrowbottom.png b/public/img/passport/arrowbottom.png new file mode 100644 index 0000000..a214d28 Binary files /dev/null and b/public/img/passport/arrowbottom.png differ diff --git a/public/img/passport/bindsuccess.png b/public/img/passport/bindsuccess.png new file mode 100644 index 0000000..51ded6e Binary files /dev/null and b/public/img/passport/bindsuccess.png differ diff --git a/public/img/passport/btnbackground.png b/public/img/passport/btnbackground.png new file mode 100644 index 0000000..747e144 Binary files /dev/null and b/public/img/passport/btnbackground.png differ diff --git a/public/img/passport/choosed.png b/public/img/passport/choosed.png new file mode 100644 index 0000000..d914962 Binary files /dev/null and b/public/img/passport/choosed.png differ diff --git a/public/img/passport/edit-info.png b/public/img/passport/edit-info.png new file mode 100644 index 0000000..a40e44e Binary files /dev/null and b/public/img/passport/edit-info.png differ diff --git a/public/img/passport/go-shopping.png b/public/img/passport/go-shopping.png new file mode 100644 index 0000000..f98c11e Binary files /dev/null and b/public/img/passport/go-shopping.png differ diff --git a/public/img/passport/third-sbf9e987704.png b/public/img/passport/third-sbf9e987704.png new file mode 100644 index 0000000..9606a67 Binary files /dev/null and b/public/img/passport/third-sbf9e987704.png differ diff --git a/public/img/passport/third/alipay.png b/public/img/passport/third/alipay.png new file mode 100644 index 0000000..49c0c97 Binary files /dev/null and b/public/img/passport/third/alipay.png differ diff --git a/public/img/passport/third/douban.png b/public/img/passport/third/douban.png new file mode 100644 index 0000000..c5b80de Binary files /dev/null and b/public/img/passport/third/douban.png differ diff --git a/public/img/passport/third/qq.png b/public/img/passport/third/qq.png new file mode 100644 index 0000000..675d53f Binary files /dev/null and b/public/img/passport/third/qq.png differ diff --git a/public/img/passport/third/renren.png b/public/img/passport/third/renren.png new file mode 100644 index 0000000..c85dc59 Binary files /dev/null and b/public/img/passport/third/renren.png differ diff --git a/public/img/passport/third/weibo.png b/public/img/passport/third/weibo.png new file mode 100644 index 0000000..fc6a7e8 Binary files /dev/null and b/public/img/passport/third/weibo.png differ diff --git a/public/img/passport/third/weixin.png b/public/img/passport/third/weixin.png new file mode 100644 index 0000000..59b41b3 Binary files /dev/null and b/public/img/passport/third/weixin.png differ diff --git a/public/img/passport/tip-sf68385e157.png b/public/img/passport/tip-sf68385e157.png new file mode 100644 index 0000000..bb8b05e Binary files /dev/null and b/public/img/passport/tip-sf68385e157.png differ diff --git a/public/img/passport/tip/angle.png b/public/img/passport/tip/angle.png new file mode 100644 index 0000000..1fa7f3b Binary files /dev/null and b/public/img/passport/tip/angle.png differ diff --git a/public/img/passport/tip/block.png b/public/img/passport/tip/block.png new file mode 100644 index 0000000..418a662 Binary files /dev/null and b/public/img/passport/tip/block.png differ diff --git a/public/img/passport/tip/error.png b/public/img/passport/tip/error.png new file mode 100644 index 0000000..48768b7 Binary files /dev/null and b/public/img/passport/tip/error.png differ diff --git a/public/img/passport/tip/info.png b/public/img/passport/tip/info.png new file mode 100644 index 0000000..75a8b15 Binary files /dev/null and b/public/img/passport/tip/info.png differ diff --git a/public/img/passport/tip/succ-info.png b/public/img/passport/tip/succ-info.png new file mode 100644 index 0000000..55656e2 Binary files /dev/null and b/public/img/passport/tip/succ-info.png differ diff --git a/public/img/passport/tip/success-icon.png b/public/img/passport/tip/success-icon.png new file mode 100644 index 0000000..a0acd70 Binary files /dev/null and b/public/img/passport/tip/success-icon.png differ diff --git a/public/img/passport/tip/success.png b/public/img/passport/tip/success.png new file mode 100644 index 0000000..5a11647 Binary files /dev/null and b/public/img/passport/tip/success.png differ diff --git a/public/img/passport/tip/warn.png b/public/img/passport/tip/warn.png new file mode 100644 index 0000000..3f0506b Binary files /dev/null and b/public/img/passport/tip/warn.png differ diff --git a/public/img/passport/warn.png b/public/img/passport/warn.png new file mode 100644 index 0000000..a452a0c Binary files /dev/null and b/public/img/passport/warn.png differ diff --git a/public/img/passport/yohofamily.png b/public/img/passport/yohofamily.png new file mode 100644 index 0000000..94be0ce Binary files /dev/null and b/public/img/passport/yohofamily.png differ diff --git a/public/img/product/sale-out-bg.png b/public/img/product/sale-out-bg.png new file mode 100644 index 0000000..980d9a1 Binary files /dev/null and b/public/img/product/sale-out-bg.png differ diff --git a/public/img/product/sale-out-tip.png b/public/img/product/sale-out-tip.png new file mode 100644 index 0000000..7689fce Binary files /dev/null and b/public/img/product/sale-out-tip.png differ diff --git a/public/img/sprite.passport.png b/public/img/sprite.passport.png new file mode 100644 index 0000000..7d76982 Binary files /dev/null and b/public/img/sprite.passport.png differ diff --git a/public/js/channel/channel.page.js b/public/js/channel/channel.page.js index 8a53041..a19d884 100644 --- a/public/js/channel/channel.page.js +++ b/public/js/channel/channel.page.js @@ -15,7 +15,7 @@ var homePage = $('.home-page').data('page'), require('../common'); require('../plugins/slider'); -require('../plugins/logo-brand'); +require('../product/index/logo-brand'); require('../plugins/accordion'); @@ -27,7 +27,7 @@ $(document).on('mouseout', '.imgopacity a img', function() { }); if ($.inArray(homePage, ['boys', 'girls', 'kids', 'lifestyle']) > -1) { - require('../plugins/new-arrivls')({ + require('../product/index/new-arrivls')({ type: homePage, url: '/common/getNewArrival', count: (homePage === 'boys') || (homePage === 'lifestyle') ? 5 : 4, diff --git a/public/js/channel/img-brand.js b/public/js/channel/img-brand.js index 12cf3ad..3f7b35a 100644 --- a/public/js/channel/img-brand.js +++ b/public/js/channel/img-brand.js @@ -1,6 +1,5 @@ var $ = require('yoho-jquery'); -window.jQuery = $; require('yoho-slider'); exports.init = function(selector) { diff --git a/public/js/common.js b/public/js/common.js index 020bb24..a958e2e 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -98,7 +98,7 @@ function getShoppingKey() { a.async = 1; a.src = j; m.parentNode.insertBefore(a, m); -}(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js', '_yas')); +}(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas')); (function() { var uid = getUid(); @@ -108,7 +108,7 @@ function getShoppingKey() { window._ozuid = uid; // 暴露ozuid if (window._yas) { - window._yas(1 * new Date(), '1.0.14', 'yohobuy_web', uid, '', ''); + window._yas(1 * new Date(), '1.0.17', 'yohobuy_web', uid, '', ''); } }()); diff --git a/public/js/common/error.page.js b/public/js/common/error.page.js new file mode 100644 index 0000000..27d3575 --- /dev/null +++ b/public/js/common/error.page.js @@ -0,0 +1 @@ +require('../common'); diff --git a/public/js/common/top-slider.js b/public/js/common/top-slider.js index a0c41e8..e6a8075 100644 --- a/public/js/common/top-slider.js +++ b/public/js/common/top-slider.js @@ -1,6 +1,5 @@ var $ = require('yoho-jquery'); -window.jQuery = $; require('yoho-slider'); $(function() { diff --git a/public/js/header.js b/public/js/header.js index 935bd9f..b70733e 100644 --- a/public/js/header.js +++ b/public/js/header.js @@ -75,7 +75,7 @@ function updateLoginInfo(data) { var info = { usercenter: 'http://www.yohobuy.com/home?t=' + new Date().getTime(), nickname: data.profile_name, - signout: 'http://www.yohobuy.com/logout_' + data.token + signout: 'http://www.yohobuy.com/logout.html' }; if (data.vip.curVipInfo.curLevel * 1 === 3) { @@ -153,14 +153,24 @@ function loadCartDetail(key) { }; $.getJSON('http://www.yohobuy.com/common/shoppingCart/?callback=?', param, function(jsonData) { - var totalGoods, data; + var totalGoods = [], + infoArr = [ + 'main_goods', + 'advance_goods', + 'outlet_goods', + 'gift_goods', + 'need_pay_gifts' + ], + data; if (jsonData.code === 200) { data = jsonData.data; - totalGoods = $.merge(data.main_goods, data.advance_goods); - totalGoods = $.merge(totalGoods, data.outlet_goods); - totalGoods = $.merge(totalGoods, data.gift_goods); - totalGoods = $.merge(totalGoods, data.need_pay_gifts); + $.each(infoArr, function(k, v) { + if (data[v]) { + totalGoods = $.merge(totalGoods, data[v]); + } + }); + if (totalGoods && totalGoods.length) { data.totalGoods = totalGoods; $miniCart.html(cartFn({ diff --git a/public/js/passport/back-index.page.js b/public/js/passport/back-index.page.js new file mode 100644 index 0000000..ad52ef8 --- /dev/null +++ b/public/js/passport/back-index.page.js @@ -0,0 +1,5 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ + +require('./back/back'); diff --git a/public/js/passport/back-reset-pwd.page.js b/public/js/passport/back-reset-pwd.page.js new file mode 100644 index 0000000..9eb28de --- /dev/null +++ b/public/js/passport/back-reset-pwd.page.js @@ -0,0 +1,5 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ + +require('./back/reset'); diff --git a/public/js/passport/back-reset-success.js b/public/js/passport/back-reset-success.js new file mode 100644 index 0000000..fb5a4cb --- /dev/null +++ b/public/js/passport/back-reset-success.js @@ -0,0 +1,3 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ diff --git a/public/js/passport/back-send-email-ok.page.js b/public/js/passport/back-send-email-ok.page.js new file mode 100644 index 0000000..fb5a4cb --- /dev/null +++ b/public/js/passport/back-send-email-ok.page.js @@ -0,0 +1,3 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ diff --git a/public/js/passport/back-verify-mobile-code.page.js b/public/js/passport/back-verify-mobile-code.page.js new file mode 100644 index 0000000..fff44a1 --- /dev/null +++ b/public/js/passport/back-verify-mobile-code.page.js @@ -0,0 +1,5 @@ +/** + * Created by TaoHuang on 2016/6/21. + */ + +require('./back/verification'); diff --git a/public/js/passport/back/ac-email.js b/public/js/passport/back/ac-email.js new file mode 100644 index 0000000..b42b759 --- /dev/null +++ b/public/js/passport/back/ac-email.js @@ -0,0 +1,85 @@ +/** + * 邮箱自动补全 + * @author:xuqi<qi.xu@yoho.cn> + * @date: 2016/2/22 + */ +var $ = require('yoho-jquery'); + +var mailPostfix = { + num: ['qq.com', '163.com', '126.com', 'sina.com', 'gmail.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'], + other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'] +}; + +var emailAcTime; + +/** + * @param $input 需要自动完成的$对象 + * @param cb 鼠标移开/点击自动完成项后需要执行的操作(验证等) + */ +module.exports = function($input, cb) { + var ulHtml = '<ul id="email-autocomplete" class="email-autocomplete hide"></ul>'; + + var $emailAutoComplete; + + $input.parent().append(ulHtml); + + $emailAutoComplete = $('#email-autocomplete'); + + $input.on('keyup', function() { + var account = $.trim($(this).val()), + html = '', + accountMatch, + matchStr, + postfix, + i; + + // 输入@时自动补全邮箱后缀 + // 此处>0非错误,用于避免输入的第一个字符为@被识别为邮箱 + if (account.indexOf('@') > 0) { + accountMatch = account.match(/^[0-9]+@(.*)/); + if (accountMatch) { + + // 数字邮箱补全 + postfix = mailPostfix.num; + matchStr = accountMatch[1]; + } else { + postfix = mailPostfix.other; + matchStr = account.match(/@(.*)/)[1]; + } + + for (i = 0; i < postfix.length; i++) { + if (postfix[i].indexOf(matchStr) > -1) { + html += '<li>' + account.slice(0, account.indexOf('@')) + '@' + postfix[i] + '</li>'; + } + } + + if (html !== '' && /.com$/.test(account) === false) { + $emailAutoComplete.html(html).removeClass('hide'); + } else { + + // 隐藏autocomplete + $emailAutoComplete.html('').addClass('hide'); + } + } + }).on('blur', function() { + emailAcTime = setTimeout(function() { + + // 未点击自动完成项 + $emailAutoComplete.addClass('hide'); + + cb && cb(); + }, 200); + }); + + // 邮箱自动完成列表项点击 + $emailAutoComplete.on('click', 'li', function() { + clearTimeout(emailAcTime); // 清空默认关闭 + + // 点击自动完成项后进行验证 + $input.val($(this).text()).focus(); + + $emailAutoComplete.addClass('hide'); + + cb && cb(); + }); +}; diff --git a/public/js/passport/back/back.js b/public/js/passport/back/back.js new file mode 100644 index 0000000..ae2df11 --- /dev/null +++ b/public/js/passport/back/back.js @@ -0,0 +1,233 @@ +/** + * 找回密码 + * @author: xuqi<qi.xu@yoho.cn> + * @date: 2015/12/14 + */ + +var $ = require('yoho-jquery'), + regx = require('./mail-phone-regx'), + emailReg = regx.emailRegx, + phoneRegx = regx.phoneRegx; + +var emailAc = require('./ac-email'); // 邮箱自动完成 + +var $cr = $('#country-code-hide'), + $phoneNum = $('#phone-num'), + $ca = $('#captcha'), + $ccList = $('#country-code-list'), + $cc = $('#country-code'), + $btn = $('#find-btn'), + $accErr = $('#account-err'), + $caErr = $('#captcha-err'), + caCount = 4, // 验证码位数 + hasPh = false, + hasCa = false; + + +require('yoho-jquery-placeholder'); + +function imgcode() { + var time = new Date(), + $captchaImg = $('#captcha-img'), + captchaImgSrc = $captchaImg.attr('src').split('?')[0]; + + $('#captcha-img').attr('src', captchaImgSrc + '?t=' + time.getTime()); +} + +function enableBtn() { + if (hasPh && hasCa) { + $btn.removeClass('disable').prop('disabled', false); + } else { + $btn.addClass('disable').prop('disabled', true); + } +} + +function authcode() { + if (!hasPh || !hasCa) { + enableBtn(); + return; + } + + $.ajax({ + type: 'POST', + url: '/passport/back/authcode', + data: { + verifyCode: $.trim($ca.val()), + phoneNum: $phoneNum.val(), + area: $cr.val() + } + + }).then(function(data) { + if (data.code === 200) { + hasCa = true; + } else if (data.code === 402) { + hasPh = false; + hasCa = true; + $accErr.removeClass('hide').find('em').text('该账号不存在'); + $phoneNum.addClass('error'); + } else if (data.code === 400) { + hasCa = false; + imgcode(); + } + enableBtn(); + }); +} + +function vaPn(v) { + var pass = true, + errTxt = ''; + + v = $.trim(v); + if (v !== '') { + if (/^[0-9]+$/.test(v)) { + if (phoneRegx[$cr.val()].test(v)) { + pass = true; + } else { + errTxt = '手机号码格式不正确, 请重新输入'; + pass = false; + } + } else { + if (emailReg.test(v)) { + pass = true; + } else { + errTxt = '邮箱格式不正确, 请重新输入'; + pass = false; + } + } + } else { + errTxt = '账户名不能为空'; + pass = false; + } + hasPh = pass; + authcode(); + + return { + pass: pass, + errTxt: errTxt + }; +} + +function vaCa() { + var v = $.trim($ca.val()); + + if (v === '' || v.length < caCount) { + hasCa = false; + enableBtn(); + return; + } + + hasCa = true; + + authcode(); +} + +emailAc($phoneNum, function() { + var pnVa = vaPn($phoneNum.val()); + + if (pnVa.pass) { + $accErr.addClass('hide'); + $phoneNum.removeClass('error'); + } else { + $accErr.removeClass('hide').find('em').text(pnVa.errTxt); + $phoneNum.addClass('error'); + } +} +); + +$ca.attr('maxlength', caCount); + +// IE8 placeholder +$('input').placeholder(); + +$('#change-captcha, #captcha-img').on('click', function() { + imgcode(); +}); + +$cc.on('click', function(e) { + e.stopPropagation(); + if ($ccList.css('style') === 'block') { + $ccList.slideUp('fast'); + } else { + $ccList.slideDown('fast'); + } +}); + +$ccList.delegate('li', 'click', function(e) { + var $cur = $(this), + code = $cur.data('cc'), + pnVa; + + e.stopPropagation(); + $cr.val(code); + $cc.find('em').html($cur.text()); + + // 切换后验证手机号码 + if ($.trim($phoneNum.val()) !== '') { + pnVa = vaPn($phoneNum.val()); + enableBtn(); + if (hasPh) { + $accErr.addClass('hide'); + $phoneNum.removeClass('error'); + } else { + $accErr.removeClass('hide').text(pnVa.errTxt); + $phoneNum.addClass('error'); + } + } + $ccList.slideUp('fast'); +}); + +$(document).click(function() { + if ($ccList.css('display') === 'block') { + $ccList.slideUp(); + } +}); + +$phoneNum.keyup(function() { + vaPn($.trim($(this).val())); +}).focus(function() { + $(this).removeClass('error'); + + // focus隐藏错误提示 + $accErr.addClass('hide'); +}); + +// 验证码在鼠标移开后验证, keyup时不再验证 +$ca.blur(function() { + var errTxt = $.trim($ca.val()) === '' ? '验证码不能为空' : '验证码不正确'; + + if (hasCa) { + $caErr.addClass('hide'); + $ca.removeClass('error'); + } else { + $caErr.removeClass('hide').find('em').text(errTxt); + $ca.addClass('error'); + + // 验证码错误则刷新验证码 + if ($ca.val() < caCount) { + + // 防止重复刷新验证码 + imgcode(); + } + } +}).focus(function() { + $(this).removeClass('error'); + + // focus隐藏错误提示 + $caErr.addClass('hide'); +}).keyup(function() { + vaCa(); +}); + +$('#find-btn').click(function(e) { + + if (/^[0-9]+$/.test($.trim($phoneNum.val()))) { + $('#find-form').attr('action', '/passport/back/mobile'); + } + if ($(this).hasClass('disable')) { + return; + } + if (!hasCa || !hasPh) { + e.preventDefault(); + return true; + } +}); diff --git a/public/js/passport/back/mail-phone-regx.js b/public/js/passport/back/mail-phone-regx.js new file mode 100644 index 0000000..2296b48 --- /dev/null +++ b/public/js/passport/back/mail-phone-regx.js @@ -0,0 +1,29 @@ +/** + * 国家区号Map手机号码以及邮箱验证正则 + * @author: xuqi<qi.xu@yoho.cn> + * @date: 2015/12/11 + */ + +var countryPhoneRegx = { + '+86': /^1[35847]{1}[0-9]{9}$/, + '+852': /^[965]{1}[0-9]{7}$/, + '+853': /^[0-9]{8}$/, + '+886': /^[0-9]{10}$/, + '+65': /^[98]{1}[0-9]{7}$/, + '+60': /^1[1234679]{1}[0-9]{8}$/, + '+1': /^[0-9]{10}$/, + '+82': /^01[0-9]{9}$/, + '+44': /^7[789]{1}[0-9]{8}$/, + '+81': /^0[9|8|7][0-9]{9}$/, + '+61': /^[0-9]{11}$/ +}; + +var emailRegx = /^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/; + +var pwdValidateRegx = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/; + +exports.phoneRegx = countryPhoneRegx; + +exports.emailRegx = emailRegx; + +exports.pwdValidateRegx = pwdValidateRegx; diff --git a/public/js/passport/back/pwd-strength.js b/public/js/passport/back/pwd-strength.js new file mode 100644 index 0000000..fbf827c --- /dev/null +++ b/public/js/passport/back/pwd-strength.js @@ -0,0 +1,67 @@ +/* + * 计算密码复杂度 + */ + +function gettype(str, i) { + if (str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) { + return 1; + } else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) { + return 2; + } else if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) { + return 3; + } + + return 4; +} + +function isregular(cur, pre, type) { + var curCode = cur.charCodeAt(0); + var preCode = pre.charCodeAt(0); + + if (curCode - preCode === 0) { + return true; + } + + if (type !== 4 && (curCode - preCode === 1 || curCode - preCode === -1)) { + return true; + } + + return false; +} + +function getcomplex(curType, preType) { + if (preType === 0 || curType === preType) { + return 0; + } else if (curType === 4 || preType === 4) { + return 2; + } else { + return 1; + } +} + +function computeComplex(password) { + var complex = 0, + length = password.length, + pre = '', + preType = 0, + i = 0, + cur, + curType; + + + for (i = 0; i < length; i++) { + cur = password.charAt(i); + curType = gettype(password, i); + + if (preType !== curType || !isregular(cur, pre, curType)) { + complex += curType + getcomplex(curType, preType); + } + + pre = cur; + preType = curType; + } + + return complex; +} + +module.exports = computeComplex; diff --git a/public/js/passport/back/reset.js b/public/js/passport/back/reset.js new file mode 100644 index 0000000..405ccf3 --- /dev/null +++ b/public/js/passport/back/reset.js @@ -0,0 +1,234 @@ +/** + * 找回密码 + * @author: xuqi<qi.xu@yoho.cn> + * @date: 2015/12/14 + */ + +var $ = require('yoho-jquery'); + +var $pwd = $('#pwd'), + $repwd = $('#re-input'), + $next = $('#reset-pwd-btn'), + $pwdErr = $('#pwd-err'), + $repwdErr = $('#repwd-err'), + $pwdTips = $('#pwd-tips'); + +var hasNoErrPw = false; + +var $pwdIntensity = $('.pwd-intensity'), + $pwdParent = $pwdIntensity.closest('.pwd-intensity-container'), + $pwdTip1 = $('#pwd-tip1'); + +var pwdRegx = require('./mail-phone-regx').pwdValidateRegx; + +require('yoho-jquery-placeholder'); + + +/* + * 计算密码复杂度 + */ + +function gettype(str, i) { + if (str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) { + return 1; + } else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) { + return 2; + } else if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) { + return 3; + } + + return 4; +} + +function isregular(cur, pre, type) { + var curCode = cur.charCodeAt(0); + var preCode = pre.charCodeAt(0); + + if (curCode - preCode === 0) { + return true; + } + + if (type !== 4 && (curCode - preCode === 1 || curCode - preCode === -1)) { + return true; + } + + return false; +} + +function getcomplex(curType, preType) { + if (preType === 0 || curType === preType) { + return 0; + } else if (curType === 4 || preType === 4) { + return 2; + } else { + return 1; + } +} + +function computeComplex(password) { + var complex = 0, + length = password.length, + pre = '', + preType = 0, + i = 0, + cur, + curType; + + + for (i = 0; i < length; i++) { + cur = password.charAt(i); + curType = gettype(password, i); + + if (preType !== curType || !isregular(cur, pre, curType)) { + complex += curType + getcomplex(curType, preType); + } + + pre = cur; + preType = curType; + } + + return complex; +} + +function pwdKeyupEvt() { + var pwd = $pwd.val(), + pwdStrength = computeComplex(pwd), + level = 0; + + // TODO:自定义密码强度规则,需要修正 + if (pwdStrength === 0) { + level = 0; + } else if (pwdStrength <= 10) { + level = 1; + } else if (pwdStrength <= 20) { + level = 2; + } else { + level = 3; + } + switch (level) { + case 0: + $pwdParent.removeClass('red yellow green'); + $pwdIntensity.removeClass('color'); + break; + case 1: + $pwdParent.addClass('red').removeClass('yellow green'); + $pwdIntensity.filter('.low').addClass('color'); + $pwdIntensity.filter('.mid,.high').removeClass('color'); + break; + case 2: + $pwdParent.addClass('yellow').removeClass('red green'); + $pwdIntensity.filter('.low,.mid').addClass('color'); + $pwdIntensity.filter('.high').removeClass('color'); + break; + case 3: + $pwdParent.addClass('green').removeClass('yellow red'); + $pwdIntensity.addClass('color'); + break; + } + + // 提示框 + if (pwd === '') { + $pwdTip1.removeClass('red yes no').addClass('default'); + } else if (pwd.length < 6 || pwd.length > 20) { + $pwdTip1.removeClass('default yes').addClass('no red'); + } else { + $pwdTip1.removeClass('default no red').addClass('yes'); + } + + if (pwdRegx.test(pwd)) { + hasNoErrPw = true; + } else { + hasNoErrPw = false; + } +} + +// IE8 placeholder +$('input').placeholder(); + +$('.va').keyup(function() { + var pass = true; + + if ($(this).hasClass('pwd')) { + pwdKeyupEvt(); + } else { + if ($(this).val() === '') { + pass = false; + } + } + if (pass && hasNoErrPw && $pwd.val() === $repwd.val()) { + pass = true; + } else { + pass = false; + } + if (pass) { + $next.removeClass('disable').prop('disabled', false); + } else { + $next.addClass('disable').prop('disabled', true); + } +}).blur(function() { + var $this = $(this), + v = $this.val(); + + if ($this.hasClass('pwd')) { + if (v === '') { + $this.addClass('error'); + $pwdErr.removeClass('hide').find('em').text('请输入密码'); + } else if (v.length < 6 || v.length > 20) { + $this.addClass('error'); + $pwdErr.removeClass('hide').find('em').text('密码只支持6-20位'); + } else if (!pwdRegx.test(v)) { + $this.addClass('error'); + $pwdErr.removeClass('hide').find('em').text('密码须字母和数字组合'); + } else { + $pwdErr.addClass('hide'); + if ($repwd.val() !== '') { + if (v !== $repwd.val()) { + $repwd.addClass('error'); + $repwdErr.removeClass('hide').find('em').text('两次密码输入不一致,请重新输入'); + } else { + $repwd.removeClass('error'); + $repwdErr.addClass('hide'); + } + } + } + } else { + if (v === '') { + $this.addClass('error'); + $repwdErr.removeClass('hide').find('em').text('请输入密码确认'); + } else { + if ($pwd.val() !== '' && v !== $pwd.val()) { + $this.addClass('error'); + $repwdErr.removeClass('hide').find('em').text('两次密码输入不一致,请重新输入'); + } else { + $this.removeClass('error'); + $repwdErr.addClass('hide'); + } + } + } +}).focus(function() { + $(this).removeClass('error'); + + // focus后错误提示隐藏 + if ($(this).hasClass('pwd')) { + $pwdErr.addClass('hide'); + } else { + $repwdErr.addClass('hide'); + } +}); + +$pwd.focus(function() { + $pwdErr.addClass('hide'); + $pwdTips.removeClass('hide'); +}).blur(function() { + $pwdTips.addClass('hide'); +}); + +$('#pwd, #repwd').keydown(function(e) { + var code = e.keyCode || e.which; + + // 空格输入过滤 + if (code === 32) { + e.preventDefault(); + return; + } +}); diff --git a/public/js/passport/back/verification.js b/public/js/passport/back/verification.js new file mode 100644 index 0000000..1068446 --- /dev/null +++ b/public/js/passport/back/verification.js @@ -0,0 +1,116 @@ +/** + * 验证手机 + * @author: xuqi<qi.xu@yoho.cn> + * @date: 2015/12/14 + */ + +var $ = require('yoho-jquery'); + +var $sc = $('#send-captcha'), + $msgTip = $('#captcha-tip'), + $errTip = $('#err-tip'), + $next = $('#next-step'), + seconds, + itime; + +$sc.click(function() { + $.post('/passport/back/sendbackmobile', { + mobile: $('#mobile').val(), + area: $('#area').val(), + verifyCode: $('#captchaPic').val() + }, function(jsonData) { + if (jsonData.code === 200) { + $errTip.hide(); + if ($(this).hasClass('disable')) { + return; + } + seconds = 60; + + // $sc.addClass('disable').prop('disabled', true); + $sc.addClass('disable').attr('disabled', true); + $msgTip.removeClass('hide'); + + $sc.val(seconds-- + '秒后可重新操作'); + itime = setInterval(function() { + if (seconds === 0) { + clearInterval(itime); + + // $sc.val('发送验证码').removeClass('disable').prop('disabled', false); + $sc.val('发送验证码').removeClass('disable').removeAttr('disabled'); + } else { + $sc.val(seconds-- + '秒后可重新操作'); + } + }, 1000); + + } else { + $(this).addClass('error'); + $errTip.removeClass('hide').text('发送失败'); + } + }); +}); + +seconds = 60; + +// $sc.addClass('disable').prop('disabled', true); +$sc.addClass('disable').attr('disabled', true); +$msgTip.removeClass('hide'); + +$sc.val(seconds-- + '秒后可重新操作'); +itime = setInterval(function() { + if (seconds === 0) { + clearInterval(itime); + + // $sc.val('发送验证码').removeClass('disable').prop('disabled', false); + $sc.val('发送验证码').removeClass('disable').removeAttr('disabled'); + } else { + $sc.val(seconds-- + '秒后可重新操作'); + } +}, 1000); + + +$('#captcha').keyup(function() { + var v = $.trim($(this).val()), + that = this; + + if (v.length === 4) { + $.ajax({ + type: 'POST', + url: '/passport/back/backmobile', + dataType: 'json', + data: { + code: $('#captcha').val(), + verifyCode: $('#captchaPic').val(), + area: $('#area').val(), + mobile: $('#mobile').val() + }, + success: function(res) { + if (res.code === 200) { + + console.log(res.data); + + // 添加验证码正确验证 + $next.removeClass('disable').attr('href', res.data); + $errTip.addClass('hide'); + $(that).removeClass('error'); + } else { + $next.addClass('disable'); + $errTip.removeClass('hide').find('em').text('验证码输入错误'); + $(that).addClass('error'); + } + } + }); + } else { + $next.addClass('disable').attr('href', 'javascript:;'); + } +}).blur(function() { + var v = $.trim($(this).val()); + + if (v === '') { + + // 添加验证码正确验证 + $(this).addClass('error'); + $errTip.removeClass('hide').text('请输入验证码'); + } +}).focus(function() { + $(this).removeClass('error'); +}); diff --git a/public/js/plugins/dialog.js b/public/js/plugins/dialog.js index 2c5ff47..dabc9fc 100644 --- a/public/js/plugins/dialog.js +++ b/public/js/plugins/dialog.js @@ -78,7 +78,7 @@ function Dialog(options) { } // 绑定按钮事件 - if (!!opt.btns) { + if (opt.btns) { for (i = 0; i < opt.btns.length; i++) { bindBtnEvt(i); } diff --git a/public/js/plugins/filter.js b/public/js/plugins/filter.js index 7cd8baf..39cf022 100644 --- a/public/js/plugins/filter.js +++ b/public/js/plugins/filter.js @@ -12,8 +12,8 @@ var checkUnicode = { checked: '' }, moreUnicode = { - up: '', - down: '' + up: '', + down: '' }; // 品牌相关变量 diff --git a/public/js/plugins/slider.js b/public/js/plugins/slider.js index 795dfbb..b9b9bac 100644 --- a/public/js/plugins/slider.js +++ b/public/js/plugins/slider.js @@ -29,7 +29,7 @@ var $ = require('yoho-jquery'), lazyLoad(this.$element.find('img.lazy')); return; } - if (!!this.options.pagination) { + if (this.options.pagination) { this.smallItem = $(this.options.pagination).find('li'); } else { this._createPage(); @@ -170,4 +170,4 @@ var $ = require('yoho-jquery'), orient: true, // 左右切换箭头的显示 pagination: null }; -})($); +}($)); diff --git a/public/js/plugins/logo-brand.js b/public/js/product/index/logo-brand.js index 6ce0c55..0e952ef 100644 --- a/public/js/plugins/logo-brand.js +++ b/public/js/product/index/logo-brand.js @@ -8,7 +8,7 @@ var $ = require('yoho-jquery'), Handlebars = require('yoho-handlebars'), lazyLoad = require('yoho-jquery-lazyload'); -(function($) { +(function() { var LogoBrand = function(element, options) { this.$element = $(element); this.options = $.extend({}, $.fn.logoBrand.defaults, options); @@ -48,8 +48,8 @@ var $ = require('yoho-jquery'), // 插入切换按钮的位置 out = out + '<li class="logo-brand-switch" data-page="' + Math.floor(i / showNum) + '">' + - '<a class="prev iconfont" href="javascript:;"></a>' + - '<a class="next iconfont" href="javascript:;"></a></li>' + + '<a class="prev iconfont" href="javascript:;"></a>' + + '<a class="next iconfont" href="javascript:;"></a></li>' + '<li data-page="' + Math.floor(i / showNum) + '">' + item + '</li>'; } else if (i !== 0 && i % showNum === 0) { @@ -153,4 +153,4 @@ var $ = require('yoho-jquery'), showNum: 16, url: '/boys/getBrand' }; -})($); +}()); diff --git a/public/js/plugins/new-arrivls.js b/public/js/product/index/new-arrivls.js index f241338..aaa6b59 100644 --- a/public/js/plugins/new-arrivls.js +++ b/public/js/product/index/new-arrivls.js @@ -112,7 +112,7 @@ module.exports = function(data) { delete data.count; delete data.rows; - loadAjax = function(url, data, count) { + loadAjax = function() { var options = { type: 'POST', @@ -154,14 +154,14 @@ module.exports = function(data) { }; - load.on('after', function(p) { + load.on('after', function() { data.pageCount = count * rows[1]; loadAjax(url, data); }); - load.on('before', function(p) { + load.on('before', function() { load.tpl = '{{#each this}}'; diff --git a/public/js/plugins/product-event.js b/public/js/product/index/product-event.js index 7101892..7101892 100644 --- a/public/js/plugins/product-event.js +++ b/public/js/product/index/product-event.js diff --git a/public/js/plugins/product.js b/public/js/product/index/product.js index 2a83778..d977888 100644 --- a/public/js/plugins/product.js +++ b/public/js/product/index/product.js @@ -83,88 +83,12 @@ exports.init = function(num) { }); } - // 原来的 - // productList.addHandler('MouseEnter', function(event) { - // var itemMr = 10, // list的右边距 - // itemMb = 35, // list的下边距 - // ulStr = '', - // ulNum, - // wrapperWidth, - // diffWidth, - // wrapperX, - // wrapperY, - // wrapperPl, // 鼠标移入时弹层的左内边距 - // wrapperPt, // 鼠标移入时弹层的上内边距 - // containerPt, // 商品列表容器的上内边距 - // _from = event.target.attr('data-from') || ''; - // - // $.ajax({ - // type: 'POST', - // url: '/product/list/getProductPic', - // dataType: 'jsonp', - // jsonp: 'callback', - // data: { - // skn: event.target.attr('data-skn'), - // skc: event.target.attr('data-skc') - // } - // }).then(function(res) { - // var data = res.data, - // colorList = createColorList(data.pics, _from); - // - // removeHtmlFn(); - // - // ulStr = colorList.colorListStr; // ajax请求的颜色列表 - // ulNum = colorList.ulNum;// ajax请求的颜色的数量 - // - // $goodInfoMain.append(event.targetDuplicate); - // $goodSelectColor.append($(ulStr)); - // - // // 点击收藏商品不需要了 - // // if (data.isFavorite) { - // // $goodInfoMain.find('.col-btn').addClass('coled'); - // // } else { - // // $goodInfoMain.find('.col-btn').removeClass('coled'); - // // } - // - // wrapperPl = $goodItemWrapper.css('paddingLeft'); - // wrapperPt = $goodItemWrapper.css('paddingTop'); - // containerPt = $goodsContainer.css('paddingTop'); - // - // wrapperWidth = 10 + (15 + 50) * ulNum + event.targetWidth; - // - // // wrapperWidth = $goodItemWrapper.width(); - // - // wrapperX = (event.targetX - 1) * (event.targetWidth + itemMr) - (parseInt(wrapperPl) + 1); - // wrapperY = (event.targetY - 1) * - // (event.targetHeight + itemMb) + parseInt(containerPt) - (parseInt(wrapperPt) + 1); - // - // // todo - // // event.offsetR表示当前列表距离浏览器右侧边缘的距离 - // diffWidth = event.offsetR - ((15 + 50) * ulNum + 25); - // - // if (diffWidth <= 0) { - // wrapperX = wrapperX + diffWidth - 25; - // } - // $goodItemWrapper.css({ - // width: wrapperWidth, - // left: wrapperX, - // top: wrapperY, - // display: 'inline-block' - // }); - // - // // 鼠标悬浮获取到商品信息后显示第一张图片 - // if (data.pics[0] && data.pics[0].src) { - // $goodInfoMain.find('.good-thumb img').attr('src', data.pics[0].src); - // } - // }); - // }); - productList.addHandler('MouseEnter', function(event) { var itemMr = 10, // list的右边距 itemMb = 35, // list的下边距 - imageList, colorList, - pic, pics, + pic, + pics, ulNum, ulStr, wrapperWidth, diffWidth, @@ -177,21 +101,13 @@ exports.init = function(num) { pics = []; - event.target.find('.goodsList').find('.list').each(function() { - pic = { - url: $(this).attr('url'), - src: $(this).attr('imgUrl'), - coverImg: $(this).attr('cover') - }; + event.target.find('.hideList > li').each(function() { + pic = $(this).data(); + pic.coverImg = pic.src; pics.push(pic); }); - - imageList = { - pics: pics - }; - - colorList = createColorList(imageList.pics, _from); + colorList = createColorList(pics, _from); removeHtmlFn(); @@ -227,8 +143,8 @@ exports.init = function(num) { }); // 鼠标悬浮获取到商品信息后显示第一张图片 - if (imageList.pics[0] && imageList.pics[0].src) { - $goodInfoMain.find('.good-thumb img').attr('src', imageList.pics[0].src); + if (pics[0] && pics[0].src) { + $goodInfoMain.find('.good-thumb img').attr('src', pics[0].src); } }); @@ -244,9 +160,9 @@ exports.init = function(num) { }; // 鼠标放在颜色列表上效果 -$(document).on('hover', '.good-select-color li', function() { +$(document).on('mouseenter', '.good-select-color li', function() { var coverImg = $(this).find('img').attr('data-cover'), - $coverImg = $(this).closest('.good-item-wrapper').find('.good-detail-img').find('img'); + $coverImg = $(this).closest('.good-item-wrapper').find('.good-detail-img img'); $coverImg.attr('src', coverImg); }); diff --git a/public/js/product/outlets.page.js b/public/js/product/outlets.page.js index 34ddb9b..d523fcb 100644 --- a/public/js/product/outlets.page.js +++ b/public/js/product/outlets.page.js @@ -8,9 +8,9 @@ var $ = require('yoho-jquery'), lazyLoad = require('yoho-jquery-lazyload'); var $limitList = $('.limit-main .good-list'), + $limitBrand = $('.limit-main .brand-list'), $fixNav = $('.sort-layer .full-line'), - $navPar, - homePage = $('.outlets-page').data('page'); + $navPar; var limitTime = []; @@ -35,8 +35,8 @@ function convertTime(time) { s = Math.floor(time / aSecond % 60); showTime += d > 0 ? d + '天' : ''; - showTime += h > 0 ? h + '小时' : ''; - showTime += m > 0 ? m + '分钟' : ''; + showTime += h > 0 ? h + '时' : ''; + showTime += m > 0 ? m + '分' : ''; showTime += s > 0 ? s + '秒' : ''; } @@ -44,54 +44,84 @@ function convertTime(time) { } function setPageTime() { - var i, showTime; + var i, text, showTime, $par; for (i = 0; i < limitTime.length; i++) { + if (limitTime[i].time < 0) { + return; + } + limitTime[i].time -= 1000; showTime = convertTime(limitTime[i].time); - limitTime[i].dom.text(showTime); + if (showTime) { + text = showTime; + if (limitTime[i].pre) { + text = limitTime[i].pre + ' ' + text; + } + } else { + $par = limitTime[i].dom.closest('.item-info').parent(); + $par.find('a').attr('onclick', 'return false;'); + text = '活动已结束'; + } + limitTime[i].dom.text(text); } } -function limitPageSwitch(num) { - - $limitList.animate({ +function limitPageSwitch(dom, num) { + dom.animate({ 'margin-left': (-num * 10) + '0%' - }, 'fast'); - - $limitList.data({ + }, 'fast').data({ page: num }); } -function formatExtraGood() { - var $item = $limitList.find('.good-item'), - html = '', +// 上线预告&潮品推荐 公共处理方法 +function formatExtraList(items, num) { + var html = '', list = [], i = 0; - if (!$limitList.length) { + if (!items.length) { return; } - $item.each(function() { - if ((i % 5) === 0) { + items.each(function() { + if ((i % num) === 0) { list.push(''); } - list[list.length - 1] += $item[i].outerHTML; + list[list.length - 1] += items[i].outerHTML; i++; }); - $limitList.data({max: list.length}); + if (list.length > 3) { + list.length = 3; + } for (i = 0; i < list.length; i++) { html += '<div class="list-page">' + list[i] + '</div>'; } - $limitList.html(html); + return { + length: list.length, + html: html + }; +} + +function extraInfo() { + var good = formatExtraList($limitList.find('.good-item'), 5), + brand = formatExtraList($limitBrand.find('.brand-item'), 9); + + if (good && good.length > 1) { + $limitList.html(good.html).data({max: good.length}); + $limitList.siblings('.page-btns').show(); + } + + if (brand && brand.length > 1) { + $limitBrand.html(brand.html).data({max: brand.length}); + $limitBrand.siblings('.page-btns').show(); + } } -// if ($fixNav.length) { $navPar = $fixNav.parent(); @@ -113,54 +143,52 @@ $('.time').each(function() { if (data.limit) { limitTime.push({ dom: $(this), - time: data.limit + time: data.limit, + pre: data.pre ? data.pre : '' }); } }); -$('.good-page-btns > label').click(function() { +$('.page-btns > label').click(function() { var nowTime = new Date().getTime(), - data = $limitList.data(), - max = data.max - 1, - page = data.page ? data.page : 0; + $dom, data, max, page; - if (data.time && nowTime - data.time < 700) { + if ($(this).closest('.good-page-btns').length) { + $dom = $limitList; + } else { + $dom = $limitBrand; + } + + data = $dom.data(); + max = data.max ? data.max : 1; + page = data.page ? data.page : 0; + + if (data.time && nowTime - data.time < 500) { return; } - $limitList.data({ + $dom.data({ time: nowTime }); if ($(this).hasClass('pre-page-btn')) { - if (page > 0) { - page -= 1; - } else { - limitPageSwitch(-0.1); - } + page += max - 1; } else { - if (page < max) { - page += 1; - } else { - limitPageSwitch(max + 0.1); - } + page += 1; } - limitPageSwitch(page); + page = page % max; + + limitPageSwitch($dom, page); + $(window).trigger('scroll'); }); setInterval(setPageTime, 1000); -if (homePage) { - $('.slide-container').slider({ - orient: false - }); -} else { - $('.slide-container').slider({ - orient: true - }); -} +$('.slide-container').slider({ + orient: true +}); -formatExtraGood(); +extraInfo(); lazyLoad($('img.lazy')); diff --git a/public/js/product/outlets/special.js b/public/js/product/outlets/special.js index 1af0304..18e3eb9 100644 --- a/public/js/product/outlets/special.js +++ b/public/js/product/outlets/special.js @@ -4,8 +4,9 @@ * @date: 2016/06/3 */ -// var $ = require('yoho-jquery'); + var product = require('../index/product'); -// require('../product'); -// require('../../common/filter'); -// require('../../common/sort-pager'); + require('../../plugins/filter'); + require('../../plugins/sort-pager'); + + product.init(4); diff --git a/public/js/product/sale.page.js b/public/js/product/sale.page.js index ba652cc..ad1d79d 100644 --- a/public/js/product/sale.page.js +++ b/public/js/product/sale.page.js @@ -1,6 +1,11 @@ +/** + * sale页面 + * @author: da<abel.wang@yoho.cn> + * @date: 2016/05/31 + */ var $ = require('yoho-jquery'), lazyLoad = require('yoho-jquery-lazyload'), - product = require('../plugins/product'); + product = require('./index/product'); var limitTime = []; @@ -37,7 +42,7 @@ function getNaviData(items) { goodItems.html(''); goodItems.append(res); - lazyLoad($('img.lazy')); + lazyLoad(items.closest('.sale-box').find('.lazy')); }); } @@ -78,8 +83,8 @@ function convertTime(time) { s = Math.floor(time / aSecond % 60); showTime += d > 0 ? d + '天' : ''; - showTime += h > 0 ? h + '小时' : ''; - showTime += m > 0 ? m + '分钟' : ''; + showTime += h > 0 ? h + '时' : ''; + showTime += m > 0 ? m + '分' : ''; showTime += s > 0 ? s + '秒' : ''; } @@ -87,11 +92,23 @@ function convertTime(time) { } function setPageTime() { - var i, showTime; + var i, text, showTime; for (i = 0; i < limitTime.length; i++) { + if (limitTime[i].time < 0) { + return; + } + limitTime[i].time -= 1000; showTime = convertTime(limitTime[i].time); + if (showTime) { + text = showTime; + if (limitTime[i].pre) { + text = limitTime[i].pre + ' ' + text; + } + } else { + text = '活动已结束'; + } $('.time-calculate').removeClass('hidden'); $('.time-calculate').text(showTime); } diff --git a/public/js/product/sale/banner.js b/public/js/product/sale/banner.js index a372726..3b2455f 100644 --- a/public/js/product/sale/banner.js +++ b/public/js/product/sale/banner.js @@ -23,7 +23,10 @@ for (i = 0; i < $item.length; i++) { } } -pagationBoxStr = '<div class="sale-list-pagation"><div>' + pagationStr + '</div></div>'; +pagationBoxStr = '<div class="sale-list-pagation">' + +'<div class="slide-pagination-inner"><div class="slide-shade"></div><div>' + + pagationStr + '</div></div></div>'; + if ($item.length > 1) { $contain.append($(pagationBoxStr)); @@ -37,31 +40,32 @@ slide = new Slide({ index: 0 }); +if ($item.length > 1) { + slide.on('change', function(data) { + if (current) { + current = false; + } else { + return; + } + index++; + + + $('.sale-list-pagation').find('span').removeClass('active'); + $item.eq(data.from).animate({ + opacity: 0 + }, 300); + $item.eq(data.to).css({ + zIndex: index + }).animate({ + opacity: 1 + }, 300, function() { + current = true; + }); + + $('.sale-list-pagation').find('span').eq(data.to).addClass('active'); -slide.on('change', function(data) { - if (current) { - current = false; - } else { - return; - } - index++; - - - $('.sale-list-pagation').find('span').removeClass('active'); - $item.eq(data.from).animate({ - opacity: 0 - }, 300); - $item.eq(data.to).css({ - zIndex: index - }).animate({ - opacity: 1 - }, 300, function() { - current = true; }); - - $('.sale-list-pagation').find('span').eq(data.to).addClass('active'); - -}); +} $contain.hover(function() { if (current) { diff --git a/public/scss/channel/_brand.css b/public/scss/channel/_brand.css index 03fcaa4..a29a59b 100644 --- a/public/scss/channel/_brand.css +++ b/public/scss/channel/_brand.css @@ -9,16 +9,20 @@ .brands-tabs { position: relative; + a { display: block; + img { width: 100%; height: 100%; display: block; } } + li { float: left; + p { display: block; font-size: 30px; @@ -30,22 +34,27 @@ margin-top: -15px; z-index: 3; } + .g-mask { opacity: 0.4; } + &:hover .g-mask, .g-mask-on { opacity: 0; } } + .hover-contain { position: relative; border-bottom: 1px solid #dfdfdf; + .hoverarr { background-color: #3d3d3d; position: absolute; bottom: 0; z-index: 10; + i { width: 0; height: 0; @@ -60,9 +69,11 @@ } } } + .header-navs { margin-right: -15px; } + .category-nav { border: 2px solid #222; padding-left: 16px; @@ -73,10 +84,12 @@ position: relative; z-index: 100; background-color: #fff; + span { display: inline-block; margin-right: 15px; } + a { display: inline-block; padding: 0 7px; @@ -85,18 +98,21 @@ cursor: pointer; } } + .category-fix { position: fixed; top: 0; z-index: 100; margin-top: 0 !important; } + .brands-list { dl { position: relative; border-top: 1px dotted #999; padding: 20px 0; } + dt { position: absolute; width: 130px; @@ -107,38 +123,46 @@ top: 50%; margin-top: -9px; } + dd { margin-left: 130px; + li { float: left; display: block; width: 170px; height: 18px; } + a { color: #666; line-height: 18px; font-size: 12px; position: relative; } + span { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-block; + &:hover { text-decoration: underline; } } + .brands-dialog { display: inline; position: relative; } + .hot { font-weight: bold; color: #222; } + i { position: relative; top: -4px; @@ -154,17 +178,21 @@ .brands-tabs { width: 100%; + li { margin-left: 10px; + a { position: relative; width: 222px; height: 180px; } } + li:first-child { margin-left: 0; } + .hover-contain { height: 30px; @@ -222,33 +250,40 @@ .g-list { margin-top: -32px; } + li { margin-right: 8px; margin-top: 32px; + a { width: 378px; height: 250px; } } } + .singlegoods { .g-list { margin-top: -10px; } + li { margin-right: 10px; margin-top: 10px; + a { width: 280px; height: 374px; } } + .singlegoods-title { position: absolute; left: 0; bottom: 0; height: 50px; width: 100%; + p { position: absolute; z-index: 2; @@ -264,18 +299,22 @@ } } } + .video { .g-list { margin-top: -10px; } + li { margin-right: 8px; margin-top: 10px; + a { width: 378px; height: 242px; } } + .video-play { display: block; position: absolute; @@ -287,12 +326,14 @@ height: 56px; background-image: resolve(img/index/play.png); } + .video-title { position: absolute; left: 0; bottom: 0; height: 32px; width: 100%; + p { position: absolute; z-index: 2; @@ -308,15 +349,19 @@ } } } + .news { margin-bottom: 40px; + .news-pic { position: relative; float: left; width: 764px; height: 436px; + .slide-container { height: 100%; + li a { height: 100%; width: 764px; @@ -325,21 +370,26 @@ .slide-wrapper { height: 100%; } + .slide-switch { display: none; } + .prev { left: 0; margin-left: 0; } + .next { right: 0; margin-right: 0; } + .slide-switch.show { display: block; } } + .slide-tips { position: absolute; left: 0; @@ -359,40 +409,48 @@ color: #fff; } } + .slide-pagination { right: 0; left: auto; bottom: 0; + .slide-shade { opacity: 0; background: none; } + span { margin-top: 3px; } } } + .news-txt { float: right; padding: 20px 16px; float: right; border: 1px solid #000; overflow: hidden; + ul { height: 100%; } + li { position: relative; display: block; margin-bottom: 10px; margin-left: 20px; } + a { font-size: 14px; line-height: 27px; cursor: pointer; color: #010101; display: block; + &:hover { color: #fff; background: #000; @@ -400,6 +458,7 @@ transition: padding 0.4s; } } + i { position: absolute; top: 0; @@ -407,6 +466,7 @@ font-size: 22px; } } + .news-txt { width: 342px; height: 394px; @@ -419,15 +479,19 @@ li { margin-right: 10px; margin-bottom: 10px; + a { width: 280px; + img { height: 160px; } } + .name { font-size: 14px; } + .des { font-size: 12px; } @@ -436,33 +500,39 @@ .brands-items { margin: 25px auto; + .brands-item { float: left; padding: 15px 0; width: 50%; } + a.brands-pic { float: left; width: 280px; height: 136px; display: block; + img { width: 100%; height: 100%; } } + .brand-info { float: right; padding: 0 20px; width: 255px; color: #000; + h3 { width: 100%; font-size: 20px; line-height: 1; - @mixin ellipsis; + @mixin ellipsis ; } + .brand-desc { padding: 12px 0; height: 92px; @@ -472,9 +542,11 @@ } } } + .pagination { margin: 40px 0 80px; text-align: center; + a { height: 24px; padding: 0 9px; @@ -484,6 +556,7 @@ margin-right: 8px; color: #222; font-size: 12px; + i { position: relative; top: -1px; @@ -491,6 +564,7 @@ transform: scale(0.8); } } + a.cur { background: #222; color: #fff; @@ -502,16 +576,20 @@ .header-navs { margin-right: -10px; } + .sit-nav { padding-top: 10px; font-size: 12px; + .sep { margin: 0 6px; } } + .brands-category { width: 990px; } + .brands-tabs { li { a { @@ -519,8 +597,10 @@ height: 154px; } } + .hover-contain { height: 25px; + .hoverarr { height: 4px; width: 190px; @@ -560,33 +640,40 @@ .g-list { margin-top: -26px; } + li { margin-right: 9px; margin-top: 26px; + a { width: 324px; height: 214px; } } } + .singlegoods { .g-list { margin-top: -10px; } + li { margin-right: 10px; margin-top: 10px; + a { width: 240px; height: 324px; } } + .singlegoods-title { position: absolute; left: 0; bottom: 0; height: 50px; width: 100%; + p { position: absolute; z-index: 2; @@ -602,18 +689,22 @@ } } } + .video { .g-list { margin-top: -10px; } + li { margin-right: 9px; margin-top: 10px; + a { width: 324px; height: 206px; } } + .video-play { display: block; position: absolute; @@ -625,12 +716,14 @@ height: 56px; background-image: resolve(img/index/play.png); } + .video-title { position: absolute; left: 0; bottom: 0; height: 30px; width: 100%; + p { position: absolute; z-index: 2; @@ -646,52 +739,65 @@ } } } + .news { .news-pic { width: 660px; height: 376px; + .slide-container { height: 376px; + img { height: 376px; } } } + .news-txt { width: 284px; height: 334px; + li { margin-bottom: 13px; } } } + .ads { margin-bottom: 30px; li { margin-right: 10px; margin-bottom: 10px; + a { width: 240px; + img { height: 138px; } } + .name { font-size: 14px; } + .des { font-size: 12px; } } } + .brands-items { a.brands-pic { width: 240px; height: 116px; } + .brand-info { width: 212px; + .brand-desc { height: 72px; } @@ -711,6 +817,7 @@ .layer-content { padding: 20px 20px 20px 35px; + .title { font-size: 24px; line-height: 24px; @@ -720,16 +827,19 @@ text-overflow: ellipsis; white-space: nowrap; } + .desc { margin: 5px 0; height: 72px; overflow: hidden; + img { width: 80px; height: 50px; margin: 3px 5px 0 0; float: left; } + .right { width: 180px; float: right; @@ -738,9 +848,11 @@ max-height: 80px; } } + .featured { font-size: 16px; margin-right: -15px; + img { height: 100px; width: 80px; diff --git a/public/scss/common/_error.css b/public/scss/common/_error.css new file mode 100644 index 0000000..ca29c73 --- /dev/null +++ b/public/scss/common/_error.css @@ -0,0 +1,24 @@ +.wrapper-404 { + width: 560px; + margin: 80px auto; + min-height: 240px; + + .text1 { + font-size: 24px; + margin-top: 60px; + line-height: 24px; + } + + .text2 { + margin: 18px 0 10px; + line-height: 12px; + } + + .text3 .button-2 { + height: 24px; + line-height: 24px; + font-size: 12px; + color: #fff; + margin-right: 5px; + } +} diff --git a/public/scss/common/_floor-header.css b/public/scss/common/_floor-header.css new file mode 100644 index 0000000..38663a7 --- /dev/null +++ b/public/scss/common/_floor-header.css @@ -0,0 +1,43 @@ +/* + *楼层头部样式 + */ +.floor-header { + position: relative; + margin: 80px 0 40px; + + .floor-title { + margin: 0 auto; + width: 298px; + height: 31px; + line-height: 31px; + border: 1px solid #000; + font-size: 16px; + text-align: center; + } + + .header-navs { + position: absolute; + padding: 10px 0; + top: 0; + right: 0; + font-size: 14px; + + li { + float: left; + padding: 1px 15px; + border-left: 1px solid #ccc; + + &:first-child { + border-left: none; + } + + &:hover { + text-decoration: underline; + } + + a { + color: #333; + } + } + } +} diff --git a/public/scss/common/_foot-pager.css b/public/scss/common/_foot-pager.css new file mode 100644 index 0000000..95e83b6 --- /dev/null +++ b/public/scss/common/_foot-pager.css @@ -0,0 +1,25 @@ +.foot-pager { + padding: 20px 0; + font-size: 12px; + color: #6a6a6a; + border-top: 1px solid #eaeceb; + + .pager { + float: right; + + a { + height: 24px; + padding: 0 9px; + line-height: 24px; + display: inline-block; + text-align: center; + margin-right: 8px; + color: #222; + } + + .cur { + color: #fff; + background-color: #222; + } + } +} diff --git a/public/scss/common/_header.css b/public/scss/common/_header.css index f609c3d..c65f6a1 100644 --- a/public/scss/common/_header.css +++ b/public/scss/common/_header.css @@ -282,7 +282,7 @@ li { float: left; - padding: 8px 23px 5px; + padding: 8px 22px 5px; a { font-size: 12px; @@ -314,7 +314,7 @@ background: resolve('layout/outlets.png') no-repeat center center; width: 200px; height: 34px; - left: 42%; + left: 45%; margin-top: 28px; position: absolute; display: none; @@ -324,7 +324,7 @@ background: resolve('layout/logo-en.png') no-repeat center center; width: 182px; height: 53px; - left: 42%; + left: 43%; margin-top: 22px; position: absolute; animation: logoflip 20s infinite; @@ -437,19 +437,20 @@ top: 30px; right: -14px; width: 378px; - background: #f8f8f8 resolve('layout/empty_car.png') no-repeat 106px 132px; z-index: 1000; + background: #f8f8f8; display: none; .empty-cart { padding: 280px 0 200px; text-align: center; + background: resolve('layout/empty_car.png') no-repeat 106px 132px; } .loading-cart { padding: 200px 0; text-align: center; - background: #f8f8f8 reslove('layout/loading.gif') no-repeat center 170px; + background: resolve('layout/loading.gif') no-repeat center 170px; } .rich-cart { @@ -744,7 +745,6 @@ } .sub-nav-list { - padding-left: 15%; a { color: #222; @@ -760,6 +760,10 @@ li:hover a { border-color: #555; } + + li:first-child { + margin-left: 15%; + } } } diff --git a/public/scss/common/_index.css b/public/scss/common/_index.css index 64bc743..9b8ad9c 100644 --- a/public/scss/common/_index.css +++ b/public/scss/common/_index.css @@ -16,52 +16,6 @@ } } -.yoho-page { - /* - 楼层头部样式 - */ - .floor-header { - position: relative; - margin: 80px 0 40px; - - .floor-title { - margin: 0 auto; - width: 298px; - height: 31px; - line-height: 31px; - border: 1px solid #000; - font-size: 16px; - text-align: center; - } - - .header-navs { - position: absolute; - padding: 10px 0; - top: 0; - right: 0; - font-size: 14px; - - li { - float: left; - padding: 1px 15px; - border-left: 1px solid #ccc; - - &:first-child { - border-left: none; - } - - &:hover { - text-decoration: underline; - } - - a { - color: #333; - } - } - } - } -} - /* 热门推荐模板样式 */ @@ -236,3 +190,7 @@ @import "footer"; @import "slider"; @import "404"; +@import "path-nav"; +@import "floor-header"; +@import "error"; +@import "foot-pager"; diff --git a/public/scss/common/_path-nav.css b/public/scss/common/_path-nav.css new file mode 100644 index 0000000..9557dff --- /dev/null +++ b/public/scss/common/_path-nav.css @@ -0,0 +1,19 @@ +.path-nav { + font-size: 12px; + padding: 15px 0; + height: 18px; + line-height: 18px; + color: #666; + + a { + color: #666; + } + + .iconfont { + font-size: 12px; + } + + .last { + font-weight: bold; + } +} diff --git a/public/scss/common/_slider.css b/public/scss/common/_slider.css index ef41084..2ef2a25 100644 --- a/public/scss/common/_slider.css +++ b/public/scss/common/_slider.css @@ -1 +1,62 @@ -.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:8}.unslider-fade .unslider-wrap li.unslider-active{z-index:10}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px} \ No newline at end of file +/* stylelint-disable */ +.unslider { + overflow: auto; + margin: 0; + padding: 0; +} + +.unslider-wrap { + position: relative; +} + +.unslider-wrap.unslider-carousel > li { + float: left; +} + +.unslider-vertical > ul { + height: 100%; +} + +.unslider-vertical li { + float: none; + width: 100%; +} + +.unslider-fade { + position: relative; +} + +.unslider-fade .unslider-wrap li { + position: absolute; + left: 0; + top: 0; + right: 0; + z-index: 8; +} + +.unslider-fade .unslider-wrap li.unslider-active { + z-index: 10; +} + +.unslider li, +.unslider ol, +.unslider ul { + list-style: none; + margin: 0; + padding: 0; + border: none; +} + +.unslider-arrow { + position: absolute; + left: 20px; + z-index: 2; + cursor: pointer; +} + +.unslider-arrow.next { + left: auto; + right: 20px; +} + +/* stylelint-enable */ \ No newline at end of file diff --git a/public/scss/index.css b/public/scss/index.css index 1568f34..da72059 100644 --- a/public/scss/index.css +++ b/public/scss/index.css @@ -7,3 +7,4 @@ /* 模块 */ @import "channel/index"; @import "product/index"; +@import 'passport/index'; diff --git a/public/scss/passport/_back.css b/public/scss/passport/_back.css new file mode 100644 index 0000000..c040ae0 --- /dev/null +++ b/public/scss/passport/_back.css @@ -0,0 +1,238 @@ +.back-page { + font-size: 14px; + + .content { + margin: 175px 0 0 !important; + } + + .back-header { + position: relative; + width: 268px; + line-height: 40px; + margin-bottom: 5px; + + .country-code { + float: right; + cursor: pointer; + color: #b9b9b9; + .iconfont { + font-size: 14px; + vertical-align: middle; + } + } + } + + .title { + float: left; + margin: 0px; + font-size: 22px; + line-height: 40px; + color: #000; + font-weight: normal; + } + .title2 { + margin: 0 0 5px; + font-size: 22px; + line-height: 40px; + color: #000; + font-weight: normal; + } + + .err-tip.captcha-err { + top: 10px; + left: 326px; + } + + .country-code-list { + display: none; + position: absolute; + padding: 0 10px; + color: #000; + background-color: #fff; + border: 1px solid #000; + margin-top: 5px; + cursor: pointer; + z-index: 100; + top: 30px; + right: 0; + border-radius: 5px; + + li { + height: 20px; + line-height: 20px; + } + } + + .input-container-li { + position: relative; + margin-bottom: 22px; + + .btn { + width: 270px; + height: 45px; + line-height: 45px; + cursor: pointer; + font-size: 20px; + border: none; + letter-spacing: 0; + } + + .captcha { + width: 160px; + } + + .captcha-img { + height: 37px; + width: 90px; + border: 0; + margin-left: 10px; + vertical-align: middle; + outline: none; + cursor: pointer; + } + .change-captcha { + color: #ff1901; + font-size: 12px; + text-decoration: underline; + margin-left: 10px; + cursor: pointer; + } + } +} + +.send-email-page { + font-size: 14px; + + .content { + margin: 216px 0 0 !important; + } + + .send-tips { + line-height: 28px; + color: #4c4c4c; + text-align: center; + font-size: 15px; + + .iconfont { + margin: 0 8px 0 0; + } + } + + .no-find { + margin: 10px 0 0 0; + line-height: 20px; + color: #a5a4a4; + text-align: center; + } + + .to-my-email { + a { + display: block; + margin: 53px auto 0; + width: 270px; + height: 45px; + line-height: 45px; + background: #ff1901; + text-align: center; + color: #fff; + letter-spacing: 2px; + } + } +} + +.verification-page .content{ + li { + position: relative; + margin-bottom: 43px; + } + + .btn { + display: inline-block; + border: none; + } + + .head-title { + font-size: 24px; + color: #000; + } + + .pn-label { + color: #828282; + font-size: 16px; + } + + .country-code { + margin: 0 10px; + } + + .country-code, .phone-num { + color: #000; + font-size: 16px; + } + + .captcha { + width: 160px !important; + } + + .send-captcha { + width: 133px; + font-size: 12px; + position: relative; + top: -1px; + letter-spacing: 0; + } + + .err-tip { + left: 310px; + } + + .captcha-tips { + position: absolute; + top: 50px; + color: #a5a4a4; + + .iconfont { + color: #0F9ACD; + font-size: 14px; + margin: 0 8px 0 0; + vertical-align: 12%; + } + } +} + +.reset-success-page { + .content { + margin: 255px 0 0 !important; + } + + .success-text { + line-height: 35px; + + .iconfont { + font-size: 30px; + color: #ee3f14; + } + + span { + font-size: 24px; + margin: 0 18px; + } + + #count-down { + color: #ee3f14; + } + } + + .success-btn { + display: block; + margin: 43px auto 0; + width: 269px; + line-height: 269px; + height: 45px; + line-height: 45px; + font-size: 14px; + color: #fff; + text-align: center; + background-color: #ff1901; + } +} \ No newline at end of file diff --git a/public/scss/passport/_index.css b/public/scss/passport/_index.css new file mode 100644 index 0000000..b1e8d38 --- /dev/null +++ b/public/scss/passport/_index.css @@ -0,0 +1,217 @@ +.passport-page { + width: 1150px; + margin-left: auto; + margin-right: auto; + + .content { + float: left; + margin-top: 107px; + padding-left: 85px; + } + + .input { + height: 43px; + font-size: 16px; + line-height: 1.2; + line-height: 43px\9; + width: 268px; + border: 1px solid #dbdbdb; + text-indent: 10px; + color: #9a9a9a; + color: rgba(0,0,0,.5); + } + + .error { + border-color: #f00 !important; + } + + .btn { + display: block; + height: 46px; + line-height: 46px; + width: 100%; + text-align: center; + color: #fff; + background-color: #ff1901; + letter-spacing: 10px; + font-size: 20px; + cursor: pointer; + + &.disable { + background-color: #555; + cursor: default; + } + } + + .pwd-intensity-container { + width: 270px; + text-align: right; + padding-top: 5px; + + &.red { + .pwd-intensity { + color: #ee0011; + } + .color { + background: #ee0011; + color: #fff; + } + } + + &.yellow { + .pwd-intensity { + color: #f6da1e; + } + .color { + background: #f6da1e; + color: #fff; + } + } + + &.green { + .pwd-intensity { + color: #3ee392; + } + .color { + background: #3ee392; + color: #fff; + } + } + .pwd-intensity { + height: 15px; + font-size: 12px; + background-color: #e8e8e8; + padding: 0px 10px; + text-align: center; + color: #b9b9b9; + } + } + + .pwd-tips { + position: absolute; + top: -10px; + left: 285px; + width: 160px !important; + height: 72px; + padding-top: 7px; + font-size: 12px; + background: url(/passport/tip/block.png) no-repeat; + + > div { + position: relative; + height: 22px; + line-height: 22px; + margin-left: 15px; + padding-left: 15px; + font-size: 12px; + color: #b9b9b9; + + i { + position: absolute; + width: 14px; + height: 14px; + left: -2px; + top: 50%; + margin: -7px 0 0; + background: url(/passport/tip/info.png) no-repeat; + } + + &.no { + color: red; + + i { + background: url(/passport/tip/error.png) no-repeat; + } + } + + &.yes i { + background: url(/passport/tip/success.png) no-repeat; + } + } + } + + .email-autocomplete { + position: absolute; + width: 248px; + padding: 0 10px; + z-index: 1; + margin-top: 5px; + border-radius: 5px; + cursor: pointer; + border: 1px solid #fefefe; + background-color: #161616; + color: #fff; + font-size: 16px; + + li { + height: 24px; + line-height: 24px; + } + } + + .err-tip { + position: absolute; + font-size: 14px; + white-space: nowrap; + top: 8px; + left: 285px; + padding: 6px 0; + color: #f00; + + i { + display: block; + float: left; + height: 14px; + width: 14px; + background: url(/passport/tip/error.png) no-repeat; + + margin-right: 5px; + } + + a { + text-decoration: underline; + color: #f00; + } + } + + /*完善信息提示框*/ + .page-tip { + display: block; + width: 100%; + height: 30px; + line-height: 30px; + text-align: center; + font-size: 20px; + font-weight: bold; + color: #ccc; + clear: both; + margin-bottom: 15px; + } +} + +.passport-cover { + float: left; + margin: 107px 0; + width: 575px; + + .cover-content { + width: 100%; + height: 318px; + padding: 50px 0; + border-right: 1px solid #dfdfdf; + } + + .cover-img { + display: block; + width: 252px; + height: 190px; + margin: 0 auto; + margin-top: 50px; + } +} + +@import "login"; +@import "register"; +@import "back"; +@import "welcome"; +@import "relate"; diff --git a/public/scss/passport/_login.css b/public/scss/passport/_login.css new file mode 100644 index 0000000..f0ef24a --- /dev/null +++ b/public/scss/passport/_login.css @@ -0,0 +1,154 @@ +.login-page { + .relative { + position: relative; + } + + .right { + float: right; + } + + .login-ul > li { + margin-bottom: 25px; + } + + .title { + float: left; + font-size: 20px; + } + + .country-code { + cursor: pointer; + color: #b9b9b9; + } + + .country-list { + display: none; + position: absolute; + padding: 0 10px; + background: #fff; + border: 1px solid #000; + top: 20px; + right: 0; + z-index: 1; + + border-radius: 5px; + + li { + height: 20px; + line-height: 20px; + color: #000; + } + } + + .captcha-wrap { + position: relative; + + .err-tip { + left: 335px; + } + } + + /* 验证码 */ + .captcha{ + width: 160px; + float: left; + } + + .captcha-img { + height: 37px; + width: 90px; + border: 0; + vertical-align: middle; + outline: none; + margin-left: 10px; + margin-top: 4px; + float: left; + } + + .change-captcha { + position: absolute; + top: 0; + right: -50px; + cursor: pointer; + float: left; + height: 43px; + font-size: 14px; + line-height: 43px; + color: #ff1901; + } + + .remember-me { + cursor: pointer; + } + + .other-opts { + color: #b9b9b9; + font-size: 14px; + + .iconfont { + font-size: 14px; + } + + .fast-reg { + color: #ff1901; + } + } + + .forget-password { + color: #b9b9b9; + } + + .third-party-login { + display: table; + + a { + display: table-cell; + width: 45px; + background-size: 100% 100%; + } + + .icon { + display: block; + width: 30px; + height: 30px; + margin: 0 auto; + } + + .weixin { + background: url(/passport/third/weixin.png) no-repeat; + } + + .qq { + background: url(/passport/third/qq.png) no-repeat; + } + + .weibo { + background: url(/passport/third/weibo.png) no-repeat; + } + + .alipay { + background: url(/passport/third/alipay.png) no-repeat; + } + + .douban { + background: url(/passport/third/douban.png) no-repeat; + } + + .renren { + background: url(/passport/third/renren.png) no-repeat; + } + } + + .caps-lock { + position: absolute; + color: #666; + border: #ffe57d; + background: #fff6d2; + white-space: nowrap; + top: 8px; + left: 278px; + padding: 0 20px; + height: 27px; + line-height: 30px; + } +} diff --git a/public/scss/passport/_register.css b/public/scss/passport/_register.css new file mode 100644 index 0000000..2509e9b --- /dev/null +++ b/public/scss/passport/_register.css @@ -0,0 +1,279 @@ +.register-page { + font-size: 14px; + color: #b9b9b9; + + li { + margin-bottom: 25px; + width: 270px; + position: relative; + + &.w330 { + width: 330px; + } + + input, select { + outline: none; + } + + .input { + height: 43px; + line-height: 43px; + font-size: 16px; + width: 268px; + border: 1px solid #dbdbdb; + text-indent: 10px; + color: #9a9a9a; + padding: 0; + + &.error { + border: 1px solid red; + } + + &.phone-num { + width: 209px; + display: block; + float: left; + position: absolute; + top: 0; + right: 0; + } + + &.captcha, &.msg-captcha{ + width: 160px; + float: left; + } + + &.agree-terms { + vertical-align: middle; + } + } + + .send-captcha { + top: 0; + background: #ff1901; + position: absolute; + width: 100px; + right: 0; + font-size: 12px; + text-indent: 0; + letter-spacing: 0; + + &.disable { + background: #555; + } + } + + .link { + text-decoration: underline; + color: #ff1901; + } + + .btn { + height: 45px; + line-height: 45px; + color: #fff; + border: none; + padding: 0; + font-family: '黑体' Regular; + text-align: center; + } + + /*区域下拉选择框*/ + .region { + height: 30px; + padding: 4px 0; + width: 132px; + border-color: #c1c1c1; + color: #9a9a9a; + font-size: 16px; + font-family: '黑体' Regular; + } + + /*手机号*/ + .country-code { + width: 58px; + height: 43px; + line-height: 43px; + text-align: center; + white-space: nowrap; + border: 1px solid #dbdbdb; + border-right: 0; + font-size: 16px; + display: block; + float: left; + } + + /*验证码*/ + .captcha-img { + height: 37px; + width: 90px; + border: 0; + vertical-align: middle; + outline: none; + margin-left: 10px; + margin-top: 4px; + float: left; + } + .change-captcha { + margin-left: 10px; + cursor: pointer; + float: left; + height: 43px; + line-height: 43px; + } + + /*密码强度*/ + .pwd-intensity-container { + width: 270px; + text-align: right; + margin-top: 5px; + height: auto; + overflow: hidden; + + .pwd-intensity { + height: 15px; + font-size: 12px; + background-color: #e8e8e8; + padding: 1px 10px; + text-align: center; + } + + &.red { + color: red; + + .color { + background: red; + color: #fff; + } + } + + &.yellow .color { + background: #ff0; + color: #fff; + } + + &.green .color { + background: #3ee392; + color: #fff; + } + } + + /*服务条款*/ + &.items-container { + font-size: 13px; + text-align: right; + white-space: nowrap; + } + + /*立即注册*/ + .register-btn { + width: 270px; + font-size: 20px; + font-weight: bold; + background: #ff1901; + + &.disable { + background: #555; + } + } + + /*立即登录*/ + &.quick-login-container { + width: 270px; + font-size: 13px; + text-align: right; + white-space: nowrap; + } + + &.skip-user-info { + font-size: 18px; + text-align: center; + a { + color: #ff1901; + text-decoration: underline; + } + } + } + + .msg-tip { + position: absolute; + top: 17px; + left: 285px; + white-space: nowrap; + + &:before { + content: ''; + display: inline-block; + width: 12px; + height: 12px; + margin-right: 5px; + background: url(/passport/tip/succ-info.png) no-repeat; + } + } + .err-tip { + z-index: 1000; + position: absolute; + height: 30px; + line-height: 30px; + color: red; + background-color: #ffebeb; + border: 1px solid #ffbdbe; + padding: 0 10px; + + b { + display: block; + position: absolute; + top: 30px; + left: 20px; + background: url(/passport/tip/angle.png) no-repeat; + width: 17px; + height: 9px; + + } + } + + /*注册成功*/ + .success-box { + font-size: 14px; + color: #b9b9b9; + margin-top: 130px; + + .success-text { + line-height: 29px; + padding-left: 46px; + font-size: 16px; + color: #000; + + span { + font-size: 22px; + } + + &:before { + content: ''; + display: inline-block; + background: url(/passport/tip/success-icon.png) no-repeat; + width: 29px; + height: 29px; + margin-right: 5px; + position: relative; + top: 6px; + } + + #count-down { + color: #ff1901; + } + } + + .success-btn { + display: block; + margin: 46px auto 0; + width: 270px; + height: 45px; + line-height: 45px; + background: #ff1901; + text-align: center; + color: #fff; + letter-spacing: 2px; + } + } +} \ No newline at end of file diff --git a/public/scss/passport/_relate.css b/public/scss/passport/_relate.css new file mode 100644 index 0000000..f090f16 --- /dev/null +++ b/public/scss/passport/_relate.css @@ -0,0 +1,187 @@ +.third-relate-page { + min-height: 600px; + + .relate-main { + padding-top: 100px; + } + + .user-wrapper { + width: 280px; + margin: 0 auto; + + .user-thumb { + width: 94px; + height: 94px; + border-radius: 50%; + display: inline-block; + overflow: hidden; + + img { + width: 100%; + height: 100%; + } + } + + label { + width: 190px; + line-height: 94px; + margin-left: 20px; + font-size: 18px; + font-weight: 700; + color: #545454; + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: absolute; + } + } + + .remind-info { + width: 490px; + min-height: 54px; + padding-left: 50px; + margin: 35px auto; + background: resolve('passport/warn.png') no-repeat; + text-align: center; + + h3 { + font-size: 18px; + font-weight: 700; + color: #545454; + margin-bottom: 12px; + } + + a { + color: #f22c26; + text-decoration: underline; + cursor: pointer; + } + + p { + font-size: 16px; + color: #888; + } + } + + .option-btn { + text-align: center; + + a { + width: 192px; + height: 46px; + color: #fff; + font-size: 18px; + line-height: 46px; + display: inline-block; + background-color: #f12200; + cursor: pointer; + } + + a:first-child { + margin-right: 14px; + } + } + + .remind-tips { + width: 390px; + margin: 0 auto; + font-size: 14px; + color: #888; + text-align: center; + margin-top: 30px; + text-decoration: underline; + display: block; + + a { + color: #f12200; + cursor: pointer; + } + + > * { + text-decoration: underline; + } + } + + .code-validate { + padding-top: 140px; + } + + .action-link { + width: 440px; + margin: 0 auto; + padding-left: 180px; + color: #545454; + line-height: 46px; + + .code-name { + margin-left: -100px; + position: absolute; + } + + input { + width: 260px; + height: 40px; + padding-left: 10px; + font-size: 16px; + margin-right: 14px; + } + + label { + width: 140px; + height: 46px; + font-size: 14px; + color: #fff; + background-color: #f12200; + display: inline-block; + text-align: center; + cursor: pointer; + } + + .count-down { + color: #979797; + background-color: #d8d8d8; + display: none; + } + + .code-error { + position: absolute; + width: 200px; + display: inline-block; + color: #f00; + padding-left: 10px; + + i { + display: inline-block; + height: 14px; + width: 14px; + background: url(/passport/tip/error.png) no-repeat; + vertical-align: middle; + margin-right: 5px; + margin-top: -2px; + } + } + } + + .waiting { + .get-code { + display: none; + } + + .count-down { + display: inline-block; + } + } + + .relate-btn { + width: 212px; + height: 46px; + font-family: arial, "Microsoft YaHei"; + color: #fff; + font-size: 18px; + background-color: #f12200; + border: 0; + outline: none; + margin: 20px 0; + } +} \ No newline at end of file diff --git a/public/scss/passport/_welcome.css b/public/scss/passport/_welcome.css new file mode 100644 index 0000000..d388774 --- /dev/null +++ b/public/scss/passport/_welcome.css @@ -0,0 +1,56 @@ +.welcome-page { + text-align: center; + color: #7f7f7f; + + .content { + padding-top: 82px; + } + + .wel-title { + font-size: 30px; + margin-bottom: 30px; + + em { + font-style: normal; + color: #ff1901; + } + } + + .wel-sub-title { + font-size: 16px; + margin-bottom: 60px; + } + + .link { + display: block; + + span { + color: #7f7f7f; + } + } + + .link-img { + height: 91px; + width: 91px; + background-size: 100% 100%; + margin-bottom: 10px; + } + + .go-shopping { + float: left; + padding-left: 100px; + + div { + background-image: resolve('passport/go-shopping.png'); + } + } + + .complete-info { + float: right; + padding-right: 100px; + + div { + background-image: resolve('passport/edit-info.png'); + } + } +} \ No newline at end of file diff --git a/public/scss/plugin/_dialog.css b/public/scss/plugin/_dialog.css deleted file mode 100644 index 95bed57..0000000 --- a/public/scss/plugin/_dialog.css +++ /dev/null @@ -1,115 +0,0 @@ -.yoho-dialog { - position: fixed; - padding: 20px; - top: 50%; - left: 50%; - min-height: 130px; - min-width: 350px; - background: #f8f8f8; - z-index: 1001; - border: 5px solid rgba(0, 0, 0, 0.38); - - .close { - position: absolute; - top: 5px; - right: 5px; - cursor: pointer; - } - - .content { - text-align: center; - } - - .btns { - text-align: center; - } - .alert-sure { - background: #000; - color: #fff; - } - .confirm-sure { - background: #000; - color: #fff; - } - .btn { - display: inline-block; - width: 56px; - height: 26px; - line-height: 26px; - text-align: center; - border: 1px solid #000; - cursor: pointer; - margin-left: 10px; - &:first-child { - margin-left: 0; - } - } - - &.alert-dialog .content, - &.confirm-dialog .content { - width: 350px; - height: auto; - min-height: 90px; - overflow: hidden; - line-height: 20px; - position: relative; - padding-top: 40px; - padding-bottom: 20px; - p { - position: absolute; - left: 0; - bottom: 25px; - width: 100%; - color: #444; - line-height: 25px; - } - div { - position: absolute; - top: 0; - left: 100px; - padding-top: 30px; - font-size: 22px; - font-weight: bold; - width: 150px; - height: 30px; - line-height: 30px; - margin: 0 auto; - span { - background: url(/cart/del.png); - float: left; - width: 27px; - height: 30px; - } - } - } - - &.subcontent-dialog { - padding: 30px 0; - - .content { - font-weight: bold; - margin: 0 auto 30px; - } - - .sub-content { - text-align: center; - font-size: 12px; - color: #555; - margin-left: 5px; - margin-bottom: 5px; - } - - .btn { - margin-top: 25px; - width: 100px; - font-size: 13px; - margin-left: 0; - margin-right: 0; - - &.black { - background-color: #000; - color: #fff; - } - } - } -} diff --git a/public/scss/plugin/_index.css b/public/scss/plugin/_index.css index aa8332d..3a26adc 100644 --- a/public/scss/plugin/_index.css +++ b/public/scss/plugin/_index.css @@ -1,2 +1 @@ @import "slider"; -@import "dialog"; diff --git a/public/scss/product/_good.css b/public/scss/product/_good.css index be26416..0d04ca1 100644 --- a/public/scss/product/_good.css +++ b/public/scss/product/_good.css @@ -6,7 +6,7 @@ .good-detail-img { width: 100%; - height: 100%; + height: 315px; position: relative; .good-thumb, @@ -29,6 +29,24 @@ text-align: center; bottom: 0; } + + .sale-out { + width: 100%; + height: 100%; + text-align: center; + top: 0; + position: absolute; + background: resolve('product/sale-out-bg.png'); + } + + .sale-out-tip { + width: 110px; + height: 110px; + margin-top: 105px; + display: inline-block; + background: resolve('product/sale-out-tip.png') no-repeat center center; + text-indent: -9999px; + } } .good-detail-text { @@ -47,7 +65,6 @@ > .price { margin-top: 5px; - text-align: center; } .brand { @@ -60,58 +77,16 @@ .market-price { text-decoration: line-through; color: #999; - margin-right: 10px; + margin-right: 15px; } - span.vip-tag { - background-image: resolve("sale/vip.png"); - background-repeat: no-repeat; - background-size: 100% 90%; - width: 40px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - width: 30px; - } - - span.vip-1 { - background-image: resolve("product/silver-small.png"); - background-repeat: no-repeat; - width: 30px; - display: inline-block; - height: 12px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; - } - - span.vip-2 { - background-image: resolve("product/golden-small.png"); - background-repeat: no-repeat; - width: 30px; - display: inline-block; - height: 12px; + .discount { + font-size: 12px; + line-height: 22px; color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; - } - - span.vip-3 { - background-image: resolve("product/platinum-small.png"); - background-repeat: no-repeat; - width: 30px; + padding: 0 6px 0 16px; + background: resolve('product/discount-tag.png') no-repeat; display: inline-block; - height: 12px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; } } @@ -252,11 +227,3 @@ } } } - -.good-info-big { - width: 280px; - height: 380px; - margin-right: 10px; - float: left; - margin-bottom: 100px; -} diff --git a/public/scss/product/_index.css b/public/scss/product/_index.css index 7353e0e..fec121b 100644 --- a/public/scss/product/_index.css +++ b/public/scss/product/_index.css @@ -1,6 +1,5 @@ @import "search"; @import "list"; -@import "new-sale"; @import "filter-box"; @import "sort-pager"; @import "good"; @@ -10,22 +9,10 @@ @import "hot-rank"; @import "shop-entry"; @import "detail"; -@import "sale/_index.css"; -@import "outlets/_index.css"; +@import "sale/index"; +@import "outlets/index"; .product-page { - /* 分页 */ - .product-pager { - padding: 20px 0; - font-size: 12px; - color: #6a6a6a; - border-top: 2px solid #eaeceb; - - .pager { - float: right; - } - } - .list-left { width: 160px; } diff --git a/public/scss/product/_new-sale.css b/public/scss/product/_new-sale.css deleted file mode 100644 index aa30a8b..0000000 --- a/public/scss/product/_new-sale.css +++ /dev/null @@ -1,195 +0,0 @@ -.new-sale-page { - .sale-list-banner { - width: 100%; - position: relative; - - ul { - overflow: hidden; - width: 100%; - position: relative; - z-index: 1; - - li { - width: 100%; - height: 100%; - display: block; - position: absolute; - top: 0; - left: 0; - } - } - } - - .sale-list-pagation { - z-index: 2; - position: absolute; - left: 0; - bottom: 50px; - width: 100%; - height: 20px; - text-align: center; - - div { - display: inline-block; - } - - span { - display: block; - width: 20px; - height: 20px; - background: resolve('product/default-normal.png'); - float: left; - margin: 0 10px; - cursor: pointer; - - &.active { - background: resolve('product/default-active.png'); - } - } - } - - .header-title { - position: relative; - width: 100%; - height: 42px; - margin: 20px 0; - text-align: center; - font-size: 20px; - - .count-wrap { - position: relative; - } - - .count { - background: #fff; - padding: 0 5px; - color: #999; - font-size: 12px; - margin-top: 6px; - } - - .line-through { - position: absolute; - bottom: 9px; - left: 0; - right: 0; - height: 1px; - border-top: 1px dotted #999; - } - } - - .new-banner img { - display: block; - width: 100%; - } - - .new-brands { - position: relative; - width: 100%; - margin-top: 25px; - - > * { - float: left; - } - - .pre - .next { - position: absolute; - display: block; - width: 40px; - height: 40px; - line-height: 40px; - color: #fff; - background: #e0e0e0; - text-align: center; - top: 50%; - margin-top: -20px; - cursor: pointer; - - opacity: 0.8; - - &:hover { - opacity: 0.9; - } - } - - .pre { - left: 0; - } - - .next { - right: 0; - } - - .brands-wrap { - position: relative; - overflow: hidden; - width: 890px; - height: 76px; - margin-left: 40px; - } - - .brands { - position: absolute; - width: auto; - height: 76px; - } - - .brands li { - float: left; - margin-left: 14px; - - a { - /* - display:block; - */ - - width: 164px; - height: 76px; - line-height: 76px; - vertical-align: middle; - text-align: center; - } - - img { - vertical-align: middle; - max-width: 100%; - max-height: 100%; - border: none; - } - } - } - - .new-floor-title { - position: relative; - margin: 35px auto; - width: 300px; - height: 31px; - line-height: 31px; - font-size: 18px; - border: 1px solid #000; - - .date { - position: absolute; - left: -1px; - top: -1px; - width: 155px; - height: 33px; - color: #fff; - text-align: center; - background: resolve('product/floor-title.png'); - } - - .title { - float: right; - margin-right: 40px; - } - } -} - -.min-screen -.new-sale-page -.new-brands -.brands-wrap { - width: 730px; -} diff --git a/public/scss/product/_sort-pager.css b/public/scss/product/_sort-pager.css index 6ad81c2..a793bb6 100644 --- a/public/scss/product/_sort-pager.css +++ b/public/scss/product/_sort-pager.css @@ -142,20 +142,3 @@ } } } - -.pager { - a { - height: 24px; - padding: 0 9px; - line-height: 24px; - display: inline-block; - text-align: center; - margin-right: 8px; - color: #222; - } - - .cur { - color: #fff; - background-color: #222; - } -} diff --git a/public/scss/product/outlets/_channel.css b/public/scss/product/outlets/_channel.css index b9cc73e..7ef9047 100644 --- a/public/scss/product/outlets/_channel.css +++ b/public/scss/product/outlets/_channel.css @@ -1,4 +1,5 @@ .outlets-channel-page { + width: 1150px !important; .slide-thumb-container { height: 510px; @@ -57,36 +58,8 @@ .slide-switch { display: block; - a { - position: absolute; - top: 50%; - margin: -30px 0 0; - width: 60px; - height: 60px; - line-height: 56px; - text-align: center; - z-index: 2; - background: #fff; - opacity: 0.55; - - &.prev { - left: 50%; - margin-left: -575px; - } - - &.next { - right: 50%; - margin-right: -575px; - } - - &:hover { - opacity: 0.9; - } - - .iconfont { - font-size: 32px; - color: #59585a; - } + .next { + right: 290px; } } @@ -165,6 +138,7 @@ .slide-container { height: 450px; + margin-top: 10px; width: 100%; position: relative; @@ -601,8 +575,8 @@ } .tpl-brands { - width: 378px; - height: 512px; + width: 377px; + height: 504px; li a { height: 248px; diff --git a/public/scss/product/outlets/_index.css b/public/scss/product/outlets/_index.css index 096e063..9ab7c1a 100644 --- a/public/scss/product/outlets/_index.css +++ b/public/scss/product/outlets/_index.css @@ -1,11 +1,13 @@ .outlets-page { + .center-content { + width: 1150px !important; + } .column-img-tab { - height: 178px; margin-top: 15px; li { width: 380px; - height: 178px; + max-height: 178px; margin-left: 5px; float: left; overflow: hidden; @@ -54,8 +56,8 @@ } .logo-img { - width: 79%; - height: 25%; + width: 140px; + height: auto; margin: 25px 0 40px; float: none; } @@ -75,6 +77,7 @@ .title { font-size: 16px; margin: 28px 0 14px; + padding: 0 8px; font-weight: bold; } @@ -108,11 +111,45 @@ } } + .brand-list { + width: 1135px; + max-height: 273px; + overflow: hidden; + + .list-page { + width: 378px; + max-height: 918px; + overflow: hidden; + display: inline-block; + vertical-align: top; + } + + .brand-item { + width: 125px; + height: 90px; + float: left; + border: 1px solid #ccc; + margin-top: -1px; + margin-left: -1px; + text-align: center; + } + + .brand-item img { + width: 90%; + margin-top: 19px; + } + + } + + .brand-page-btns { + margin-top: 10px; + } + .good-list { width: 300%; .list-page { - width: 33%; + width: 33.33%; max-height: 918px; overflow: hidden; display: inline-block; @@ -122,10 +159,21 @@ .good-item { padding: 15px; } + + .good-item > a { + width: 90px; + height: 120px; + display: inline-block; + } + + .good-item > img { + width: 100%; + height: 100%; + } } .item-text { - width: 225px; + width: 64%; padding-right: 10px; padding-top: 5px; float: right; @@ -142,11 +190,10 @@ .sale-price { color: #ec0011; - margin-right: 15px; + margin-right: 8px; } .market-price { - color: #999; margin-right: 15px; text-decoration: line-through; } @@ -161,10 +208,10 @@ } } - .good-page-btns { + .page-btns { text-align: center; padding-bottom: 10px; - user-select: none; + display: none; label { width: 40px; @@ -229,10 +276,12 @@ .brand-logo { width: 120px; float: right; + margin-top: 14px; + margin-right: 8px; } .activity-info { - width: 360px; + width: 380px; padding: 10px 20px; p { @@ -333,17 +382,6 @@ display: none; } } - - .product-pager { - padding: 20px 0; - font-size: 12px; - color: #6a6a6a; - border-top: 2px solid #eaeceb; - - .pager { - float: right; - } - } } @import "channel"; diff --git a/public/scss/product/outlets/_main-product.css b/public/scss/product/outlets/_main-product.css index a92ea13..aec77c1 100644 --- a/public/scss/product/outlets/_main-product.css +++ b/public/scss/product/outlets/_main-product.css @@ -2,7 +2,7 @@ .all-goods-menu { height: 35px; line-height: 35px; - padding: 45px 0 10px; + padding-top: 45px; .menu-tag { color: #d0021b; @@ -44,19 +44,25 @@ } } + .sort-layer { + margin-top: 10px; + } + .product-list { width: 1160px; .list-item { width: 222px; + height: 372px; margin: 23px 10px 23px 0; + overflow: hidden; float: left; } .thumb { width: 100%; - height: 130%; - display: inline-block; + height: 296px; + display: block; img { width: 100%; diff --git a/public/scss/product/outlets/_special.css b/public/scss/product/outlets/_special.css index 985634c..b748f54 100644 --- a/public/scss/product/outlets/_special.css +++ b/public/scss/product/outlets/_special.css @@ -1,4 +1,8 @@ .outlets-special-page { + .center-content { + width: 1150px !important; + } + .main-banner { height: 360px; } @@ -57,4 +61,8 @@ } } + + .brand .attr-content { + max-width: 730px; + } } diff --git a/public/scss/product/sale/_index.css b/public/scss/product/sale/_index.css index 93ffbbd..3d6f13f 100644 --- a/public/scss/product/sale/_index.css +++ b/public/scss/product/sale/_index.css @@ -1,4 +1,4 @@ -@import "_new-sale.css"; +@import "new-sale"; .center-content { width: 1150px; @@ -9,46 +9,43 @@ .sale-page { margin-top: 10px; - .slide-switch { - display: block; - - a { - position: absolute; - top: 50%; - margin: -30px 0 0; - width: 60px; - height: 60px; - line-height: 56px; - text-align: center; - z-index: 2; - background: #fff; - opacity: 0.55; + .slide-container { + position: relative; + height: 450px; - &.prev { - left: 50%; - margin-left: -575px; - } + ul { + width: 100%; + height: 100%; + position: relative; + } - &.next { - right: 50%; - margin-right: -575px; - } + li { + width: 100%; + height: 100%; + display: block; + position: absolute; + top: 0; + left: 0; + } - &:hover { - opacity: 0.9; - } + li > a { + width: 100%; + height: 100%; + display: block; + } - .iconfont { - font-size: 32px; - color: #59585a; - } + .slide-wrapper { + height: 100%; } - } - .slide-container { - position: relative; - height: 450px; - overflow: hidden; + .slide-switch { + position: relative; + width: 1150px; + left: 50%; + margin-left: -575px; + top: -225px; + display: block; + } } /* @@ -147,7 +144,7 @@ .pic { position: relative; - height: 400px; + height: 375px; } .time { @@ -155,13 +152,21 @@ position: absolute; left: 0; bottom: 0; - opacity: 0.5; + opacity: 0.7; width: 100%; - font-size: 22px; + letter-spacing: 1px; + font-size: 16px; line-height: 30px; text-align: right; color: #fff; background: #4e4e4e; + span { + margin-right: 10px; + } + } + + .time-span { + margin-right: 20px; } .detail { @@ -169,13 +174,13 @@ } .brand { - margin: 24px 10px 10px; + margin: 10px; } .text { padding: 24px 10px 48px 0; font-size: 16px; - height: 74px; + padding-bottom: 20px; color: #fd5659; } @@ -184,7 +189,6 @@ font-weight: bold; text-align: right; margin-right: 20px; - max-width: 220px; overflow: hidden; text-overflow: ellipsis; @@ -205,11 +209,12 @@ } .title { - font-size: 22px; + font-size: 14px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + text-align: center; } } @@ -235,11 +240,11 @@ } .title { - font-size: 10px; - height: 40px; + height: 20px; width: auto; font-size: 10px; - line-height: 40px; + line-height: 20px; + font-weight: 500; text-align: center; max-width: 200px; overflow: hidden; @@ -254,7 +259,8 @@ } .time { - font-size: 14px; + font-size: 13px; + font-weight: 600; } } } @@ -262,8 +268,11 @@ .sale-nav { display: inline-block; width: 100%; + height: 40px; + background-color: #f5f5f5; } li { + cursor: pointer; float: left; width: 20%; height: 40px; @@ -363,7 +372,6 @@ top: 10px; right: 10px; line-height: 60px; - background: url("furniture/top-tag-bg.png?1450667948"); font-size: 20px; color: #fff; } @@ -411,66 +419,6 @@ color: #565656; font-size: 13px; } - span.vip-tag { - background-image: resolve("sale/vip.png"); - background-repeat: no-repeat; - background-size: 100% 90%; - width: 40px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - width: 30px; - } - - span.vip-1 { - background-image: resolve("product/silver-small.png"); - background-repeat: no-repeat; - width: 30px; - display: inline-block; - height: 12px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; - } - - span.vip-2 { - background-image: resolve("product/golden-small.png"); - background-repeat: no-repeat; - width: 30px; - display: inline-block; - height: 12px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; - } - - span.vip-3 { - background-image: resolve("product/platinum-small.png"); - background-repeat: no-repeat; - width: 30px; - display: inline-block; - height: 12px; - color: #fff; - font-style: italic; - margin-right: 5px; - margin-left: 5px; - position: absolute; - } - - .price-sale { - margin-left: 10px; - padding-left: 10px; - width: 36px; - height: 20px; - line-height: 20px; - background: url('../assets/images/furniture/sale-tag-bg.png?1450667948'); - color: #fff; - } } } @@ -489,6 +437,123 @@ height: 77px; } } + + .good-info { + .good-detail-img { + width: 100%; + height: 100%; + position: relative; + } + + .good-detail-text { + + > a { + margin-top: 16px; + line-height: 1.5; + display: block; + text-align: center; + font-weight: 600; + + @mixin ellipsis; + } + + > .price { + margin-top: 5px; + text-align: center; + font-weight: bold; + } + + .brand { + display: none; + } + + .market-price { + text-decoration: line-through; + margin-left: 30px; + color: #444; + font-weight: bold; + } + } + } + + .sale-vip-box { + .good-info { + width: 280px; + height: 380px; + margin-right: 10px; + float: left; + margin-bottom: 100px; + } + + .good-detail-text { + + > a { + margin-top: 16px; + line-height: 1.5; + display: block; + text-align: center; + font-weight: 600; + + @mixin ellipsis; + } + + > .price { + margin-top: 5px; + text-align: center; + font-weight: bold; + } + + .brand { + display: none; + } + + .market-price { + text-decoration: line-through; + color: #444; + font-weight: bold; + } + + .vip-span { + background-repeat: no-repeat; + background-size: 100% 100%; + line-height: 20px; + color: #fff; + font-style: italic; + margin-right: 5px; + margin-left: 10px; + margin-bottom: -3px; + padding-right: 5px; + padding-left: 5px; + display: inline-block; + } + + .vip-tag { + background-image: resolve("sale/vip.png"); + margin-left: 30px; + width: 20px; + height: 15px; + } + + .vip-1 { + background-image: resolve("product/silver.png"); + margin-left: 30px; + width: 16px; + height: 16px; + } + .vip-2 { + background-image: resolve("product/golden.png"); + margin-left: 30px; + width: 16px; + height: 16px; + } + .vip-3 { + background-image: resolve("product/platinum.png"); + margin-left: 30px; + width: 16px; + height: 16px; + } + } + } } .sale-discount-page { @@ -507,14 +572,17 @@ display: inline-block; margin-right: 10px; padding: 0 10px; + height: 25px; + vertical-align: center; font-weight: lighter; - line-height: 16px; - vertical-align: text-bottom; + line-height: 25px; color: #fff; background: #ff575c; } .time { + left-margin: 10px; + .iconfont { margin-right: 5px; } @@ -547,4 +615,76 @@ .pager { float: right; } + + .good-info { + .good-detail-text { + + > .price { + margin-top: 5px; + text-align: left; + font-weight: bold; + } + + .brand { + display: none; + } + + .sale-price { + margin-left: 20px; + } + + .market-price { + text-decoration: line-through; + margin-left: 5px; + margin-right: 0; + color: #444; + font-weight: bold; + } + + strong { + font-weight: normal; + color: #565656; + font-size: 13px; + float: left; + } + + .vip-span { + background-repeat: no-repeat; + background-size: 100% 100%; + line-height: 20px; + color: #fff; + font-style: italic; + position: relative; + top: -3px; + margin-right: 5px; + margin-left: 10px; + padding-right: 5px; + padding-left: 5px; + float: left; + } + + .vip-tag { + background-image: resolve("sale/vip.png"); + width: 20px; + height: 15px; + } + + .vip-1 { + background-image: resolve("product/silver.png"); + width: 18px; + height: 16px; + } + .vip-2 { + background-image: resolve("product/golden.png"); + width: 18px; + height: 16px; + } + .vip-3 { + background-image: resolve("product/platinum.png"); + width: 18px; + height: 16px; + margin-bottom: 1px; + } + } + } } diff --git a/public/scss/product/sale/_new-sale.css b/public/scss/product/sale/_new-sale.css index bc158fb..91b4a9b 100644 --- a/public/scss/product/sale/_new-sale.css +++ b/public/scss/product/sale/_new-sale.css @@ -1,7 +1,8 @@ .sale-discount-page { .sale-list-banner { - width: 100%; + width: 1150px; position: relative; + margin: auto; ul { overflow: hidden; @@ -186,6 +187,199 @@ } } +.new-sale-page { + + .sale-list-banner { + width: 100%; + position: relative; + + ul { + overflow: hidden; + width: 100%; + position: relative; + z-index: 1; + + li { + width: 100%; + height: 100%; + display: block; + position: absolute; + top: 0; + left: 0; + } + } + } + + .sale-list-pagation { + z-index: 2; + position: absolute; + left: 0; + bottom: 50px; + width: 100%; + height: 20px; + text-align: center; + + div { + display: inline-block; + } + + span { + position: relative; + display: inline-block; + margin: 0 7px; + width: 12px; + height: 12px; + background: #fff; + cursor: pointer; + opacity: 0.6; + border-radius: 6px; + z-index: 2; + + &.active { + opacity: 1; + } + } + } + + .header-title { + position: relative; + width: 100%; + height: 42px; + margin: 20px 0; + text-align: center; + font-size: 20px; + + .count-wrap { + position: relative; + } + + .count { + background: #fff; + padding: 0 5px; + color: #999; + font-size: 12px; + margin-top: 6px; + } + + .line-through { + position: absolute; + bottom: 9px; + left: 0; + right: 0; + height: 1px; + border-top: 1px dotted #999; + } + } + + .new-banner img { + display: block; + width: 100%; + } + + .new-brands { + position: relative; + width: 100%; + margin-top: 25px; + + > * { + float: left; + } + + .pre + .next { + position: absolute; + display: block; + width: 40px; + height: 40px; + line-height: 40px; + color: #fff; + background: #e0e0e0; + text-align: center; + top: 50%; + margin-top: -20px; + cursor: pointer; + + opacity: 0.8; + + &:hover { + opacity: 0.9; + } + } + + .pre { + left: 0; + } + + .next { + right: 0; + } + + .brands-wrap { + position: relative; + overflow: hidden; + width: 890px; + height: 76px; + margin-left: 40px; + } + + .brands { + position: absolute; + width: auto; + height: 76px; + } + + .brands li { + float: left; + margin-left: 14px; + + a { + /* + display:block; + */ + + width: 164px; + height: 76px; + line-height: 76px; + vertical-align: middle; + text-align: center; + } + + img { + vertical-align: middle; + max-width: 100%; + max-height: 100%; + border: none; + } + } + } + + .new-floor-title { + position: relative; + margin: 35px auto; + width: 300px; + height: 31px; + line-height: 31px; + font-size: 18px; + border: 1px solid #000; + + .date { + position: absolute; + left: -1px; + top: -1px; + width: 155px; + height: 33px; + color: #fff; + text-align: center; + background: resolve('product/floor-title.png'); + } + + .title { + float: right; + margin-right: 40px; + } + } +} + .min-screen .new-sale-page .new-brands .brands-wrap { width: 730px; } diff --git a/public/webpack.config.js b/public/webpack.config.js index 2cd7c1c..fad0ee4 100644 --- a/public/webpack.config.js +++ b/public/webpack.config.js @@ -6,6 +6,7 @@ 'use strict'; +const webpack = require('webpack'); const path = require('path'); const _ = require('lodash'); const shelljs = require('shelljs'); @@ -18,6 +19,12 @@ shelljs.ls(path.join(__dirname, '/js/**/*.page.js')).forEach((f) => { // Important // 生成规则:module.page: './js/module/xx.page.js' entries[`${dir[0]}.${dir[1].match(/(.*).page.js/)[1]}`] = `./js/${dir.join('/')}`; + entries.libs = [ + 'yoho-handlebars', + 'yoho-jquery', + 'yoho-jquery-lazyload', + 'yoho-slider' + ]; }); module.exports = { @@ -25,5 +32,17 @@ module.exports = { output: { path: path.join(__dirname, 'bundle'), // absolute path filename: '[name].js' - } + }, + plugins: [ + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.optimize.CommonsChunkPlugin({ + name: 'libs', + filename: 'libs.js' + }), + new webpack.ProvidePlugin({ + $: 'yoho-jquery', + jQuery: 'yoho-jquery', + 'window.jQuery': 'yoho-jquery' + }) + ] }; diff --git a/test/library/api.test.js b/test/library/api.test.js deleted file mode 100644 index 94dbf22..0000000 --- a/test/library/api.test.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * http api 测试 - * - * @author: jiangfeng<jeff.jiang@yoho.cn> - * @date: 2016/05/17 - */ -'use strict'; - -const test = require('ava'); -const sign = require('../../library/sign'); - - -const API = require('../../library/api').API; -const ServiceAPI = require('../../library/api').ServiceAPI; -const SearchAPI = require('../../library/api').SearchAPI; - -const getUrl = 'operations/api/v6/category/getCategory'; - -test('api constructor test', (t) => { - let api = new ServiceAPI(); - let api2 = new API(); - let api3 = new SearchAPI(); - - t.true(api !== null); - t.true(api2 !== null); - t.true(api3 !== null); -}); - -test('api get test', t => { - let api = new ServiceAPI(); - - return api.get(getUrl, sign.apiSign({})).then(result => { - if (result && result.code) { - t.pass(); - } else { - t.fail(); - } - }); -}); - -test('api get test, api return an error', t => { - let api = new ServiceAPI(); - - return api.get(getUrl + '/error', sign.apiSign({})).catch(err => { - - // 故意调用一个错误的接口 - if (err && err.code === 500) { - t.pass(); - } else { - t.fail(); - } - }); -}); - -test('api get use cache test', t => { - let api = new ServiceAPI(); - - return api.get(getUrl, sign.apiSign({}), true).then(result => { - if (result && result.code) { - t.pass(); - } else { - t.fail(); - } - }); -}); - -test('api post test', t => { - let api = new ServiceAPI(); - - return api.post(getUrl, sign.apiSign({})).then(result => { - if (result && result.code) { - t.pass(); - } else { - t.fail(); - } - }); -}); - -test('api multiple call test', (t) => { - let api = new ServiceAPI(); - let multi = [api.get(getUrl, sign.apiSign({})), api.get(getUrl, sign.apiSign({}))]; - - return api.all(multi).then(result => { - if (result.length === 2) { - t.pass(); - } else { - t.fail(); - } - }); -}); - -test('api multiple fail call test', (t) => { - let api = new ServiceAPI(); - - return api.all(1).catch((e) => { - if (e) { - t.pass(); - } else { - t.fail(); - } - }); -}); diff --git a/test/library/cache.test.js b/test/library/cache.test.js deleted file mode 100644 index 98840f3..0000000 --- a/test/library/cache.test.js +++ /dev/null @@ -1,114 +0,0 @@ -/** - * cache 测试 - * - * @author: jf<jeff.jiang@yoho.cn> - * @date: 2016/5/18 - */ - -'use strict'; - -import test from 'ava'; - -import cache from '../../library/cache'; - -let testKey = 'test_unit_key:' + (new Date()).getTime(); -let testValue = 'anotherValue'; -let anotherKey = 'test_unit_key2:' + (new Date()).getTime(); -let anotherValue = {a: 1}; - -let slaveTestKey = 'test_unit_key3:' + (new Date()).getTime(); -let slaveTestValue = 'anotherValue3'; - -test.before('set test key', (t) => { - cache.set(testKey, testValue); - cache.set(anotherKey, anotherValue); - t.pass(); -}); - -test.after('del test key', (t) => { - cache.del(testKey); - cache.del(anotherKey); - t.pass(); -}); - -test('cache get test', (t) => { - return cache.get(testKey).then((v) => { - t.is(v, testValue); - }); -}); - -test('cache get multi test', (t) => { - cache.set(anotherKey, anotherValue); - return cache.getMulti([testKey, anotherKey]).then((values) => { - t.is(values[testKey], testValue); - t.is(values[anotherKey], JSON.stringify(anotherValue)); - }); -}); - -test('cache get from slave test', (t) => { - return cache.getFromSlave(testKey).then((v) => { - t.is(v, testValue); - }); -}); - -test('cache get multi from slave test', (t) => { - cache.set(anotherKey, anotherValue); - return cache.getMultiFromSlave([testKey, anotherKey]).then((values) => { - t.is(values[testKey], testValue); - t.is(values[anotherKey], JSON.stringify(anotherValue)); - }); -}); - -test('cache set to slave', (t) => { - return cache.setSlave(slaveTestKey, { - value: slaveTestValue - }).then(() => { - return cache.getFromSlave(slaveTestKey); - }).then((v) => { - v = JSON.parse(v); - t.is(v.value, slaveTestValue); - cache.del(slaveTestKey); - }); -}); - -test('cache get test, key is not a string', (t) => { - return cache.get(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache get multi test, key is not an array', (t) => { - return cache.getMulti(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache get from slave test, key is not a string', (t) => { - return cache.getFromSlave(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache get multi from slave test, key is not an array', (t) => { - return cache.getMultiFromSlave(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache set test, key is not a string', (t) => { - return cache.set(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache set multi test, key is not an array', (t) => { - return cache.setSlave(123).then((v) => { - t.notOk(v); - }); -}); - -test('cache del test, key is not a string', (t) => { - return cache.del(123).then((v) => { - t.notOk(v); - }); -}); diff --git a/test/library/camel-case.test.js b/test/library/camel-case.test.js deleted file mode 100644 index 3cb9ab4..0000000 --- a/test/library/camel-case.test.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * 对象键名驼峰测试 - * - * @author: jiangfeng<jeff.jiang@yoho.cn> - * @date: 2016/05/17 - */ - -import {test} from 'ava'; - -const camelCase = require('../../library/camel-case'); - -test('camel case object', t => { - let o = { - A_B: 'ab_cd' - }; - - t.is(camelCase(o).aB, 'ab_cd'); -}); - -test('camel case array', t => { - let arr = [{ - A_B: 'ab_cd' - }, { - A_B: 'ab_cd' - }]; - - t.is(camelCase(arr)[1].aB, 'ab_cd'); -}); diff --git a/test/library/helpers.test.js b/test/library/helpers.test.js deleted file mode 100644 index 38d5419..0000000 --- a/test/library/helpers.test.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * library helpers 类单元测试 - * @author jeff.jiang<jeff.jiang@yoho.cn> - * @date 2016/05/17 - */ - -'use strict'; - -const test = require('ava'); -const helpers = require('../../library/helpers'); - -test('qiniu image url handle', t => { - let url = 'http://img11.static.yhbimg.com/yhb-img01/2016/04/18/03/016d50b20cfdec5a91c614b68546bc9d72.jpg?imageView2/{mode}/w/{width}/h/{height}'; - let expected = 'http://img11.static.yhbimg.com/yhb-img01/2016/04/18/03/016d50b20cfdec5a91c614b68546bc9d72.jpg?imageView2/2/w/400/h/300'; - - t.is(helpers.image(url, 400, 300), expected); -}); - -test('uri format', t => { - let uri = '/test'; - let qs = { name: 'yoho' }; - let mod = 'list'; - let expected = '//list.yohobuy.com/test?name=yoho'; - - t.is(helpers.urlFormat(uri, qs, mod), expected); -}); - -test('upper char to lowercase', t => { - let str = 'ABc'; - let expected = 'abc'; - - t.is(helpers.lowerCase(str), expected); -}); - -test('lower char to uppercase', t => { - let str = 'abc!'; - let expected = 'ABC!'; - - t.is(helpers.upperCase(str), expected); -}); diff --git a/test/library/logger.test.js b/test/library/logger.test.js deleted file mode 100644 index e2661b5..0000000 --- a/test/library/logger.test.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * logger 工具类测试 - */ - -const test = require('ava'); -const logger = require('../../library/logger'); - -test('logger error test', t => { - logger.error('error test', () => { - t.pass(); - }); -}); - -test('logger info test', t => { - logger.info('info test', () => { - t.pass(); - }); -}); diff --git a/test/library/sign.test.js b/test/library/sign.test.js deleted file mode 100644 index 9cf591e..0000000 --- a/test/library/sign.test.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 签名类测试 - * - * @author: jiangfeng<jeff.jiang@yoho.cn> - * @date: 2016/05/17 - */ - -const test = require('ava'); -const sign = require('../../library/sign'); - -test('app sign test', t => { - let params = { - client_type: 'h5', // eslint-disable-line - a: 1, - b: 'b' - }; - let signedParams = sign.apiSign(params); - - t.true(sign.checkSign(signedParams)); -}); - -test('app sign test webSign', t => { - let params = { - uid: '123', - key: '3fc5a9fcea9fea49cce5432202a167ad' - }; - - t.true(sign.webSign(params)); -}); diff --git a/test/library/timer.test.js b/test/library/timer.test.js deleted file mode 100644 index 0fcf5cf..0000000 --- a/test/library/timer.test.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Timer 计时类测试 - * - * @author: jiangfeng<jeff.jiang@yoho.cn> - * @date: 2016/05/17 - */ - -const test = require('ava'); -const Timer = require('../../library/timer'); - -const sleep = (timeout) => { - return new Promise((resolve) => { - setTimeout(() => { - resolve(); - }, timeout); - }); -}; - -test.cb('timer class ', t => { - let timer = new Timer(); - - timer.put('test'); - sleep(300).then(() => { - let diff = timer.put('test'); - - t.true(diff >= 300); - t.end(); - }); -}); diff --git a/utils/product-process.js b/utils/product-process.js index 41525e8..5b0a12c 100644 --- a/utils/product-process.js +++ b/utils/product-process.js @@ -1,7 +1,9 @@ 'use strict'; const _ = require('lodash'); -const camelCase = require('../library/camel-case'); -const helpers = require('../library/helpers'); + +const camelCase = global.yoho.camelCase; +const helpers = global.yoho.helpers; +const images = require(`${global.utils}/images`); /** * 根据性别来决定 默认图片获取字段 如果是 2、3 @@ -18,6 +20,24 @@ const procProductImg = (product, gender) => { return product.cover1 || product.cover2 || product.imagesUrl || ''; }; + +/** + * 处理列表大图周边小图数据,拼接添加 href + * @param origin goods 原始数据 + * @returns {{}} goods 输出数据,结构不变 + */ +const handleGoodsListData = (origin) => { + _.forEach(origin, (value, key) => { + if (!_.isEmpty(value.goodsList)) { + _.forEach(value.goodsList, (subValue, subKey) => { + origin[key].goodsList[subKey].url = + helpers.urlFormat(`/product/pro_${value.productId}_${subValue.goodsId}/${value.cnAlphabet}.html`); + }); + } + }); + return origin; +}; + /** * 商品搜索商品数据处理 */ @@ -34,18 +54,26 @@ exports.processProductList = (list, options) => { showPoint: true, gender: '2,3' }, options); + list = camelCase(list); _.forEach(list, (product) => { + + // 商品信息有问题,则不显示 - if (!product.productId || !product.goodsList.length) { + if (!product.productSkn || !product.goodsList.length) { return; } - // 市场价和售价一样,则不显示市场价 + // 如果库存为0,显示已抢完 + if (product.storageNum === 0 && product.status === 1) { + product.isSaleOut = true; + } + + // 市场价和售价一样,则不显示市场价, 不显示折扣信息 if (product.marketPrice === product.salesPrice) { - product.marketPrice = false; - } else if (product.marketPrice && product.salesPrice) { + delete product.marketPrice; + } else { product.discount = (product.salesPrice / product.marketPrice * 10).toFixed(1); } @@ -73,23 +101,6 @@ exports.processProductList = (list, options) => { thumb: product.defaultImages }); - if (options.showPoint) { - product.marketPrice += '.00'; - product.salesPrice += '.00'; - - if (product.vip1Price) { - product.vip1Price = parseInt(product.vip1Price, 10) + '.00'; - } - - if (product.vip2Price) { - product.vip2Price = parseInt(product.vip2Price, 10) + '.00'; - } - - if (product.vip3Price) { - product.vip3Price = parseInt(product.vip3Price, 10) + '.00'; - } - } - product.isSoonSoldOut = product.isSoonSoldOut === 'Y'; product.url = helpers.urlFormat(`/product/pro_${product.productId}_${product.goodsList[0].goodsId}/${product.cnAlphabet}.html`); // eslint-disable-line @@ -128,7 +139,7 @@ exports.processProductList = (list, options) => { pruductList.push(product); }); - return pruductList; + return handleGoodsListData(pruductList); }; @@ -259,3 +270,76 @@ exports.processFilter = (list, options) => { return filters; }; + +// 处理单个商品 +exports.processProduct = (productData, options) => { + let result = {}; + + options = Object.assign({ + showTags: true, + showNew: true, + showSale: true, + width: 290, + height: 388, + showPoint: true + }, options); + + // 商品信息有问题,则不显示 + if (!productData.product_skn || !productData.goods_list[0]) { + return false; + } + + // 市场价和售价一样,则不显示市场价 + if (parseInt(productData.market_price, 0) === parseInt(productData.sales_price, 0)) { + productData.market_price = false; + } + + // 设置默认图片 + _.forEach(productData.goods_list, item => { + if (item.is_default === 'Y') { + productData.default_images = item.images_url; + } + }); + + if (!productData.default_images) { + productData.default_images = productData.goods_list[0].images_url; + } + + result.id = productData.product_skn; + result.product_id = productData.product_id; + result.thumb = images.getImageUrl(productData.default_images, options.width, options.height); + result.name = productData.product_name; + result.price = !productData.market_price ? false : productData.market_price; + result.salePrice = productData.sales_price; + if (options.showPoint) { + result.price += '.00'; + result.salePrice += '.00'; + } + + result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y'); + result.url = helpers.urlFormat(`/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}/${productData.cn_alphabet}.html`, null, 'list'); // eslint-disable-line + + + if (options.showTags) { + result.tags = {}; + result.tags.is_new = options.showNew && productData.is_new && productData.is_new === 'Y'; // 新品 + result.tags.is_discount = options.showSale && productData.is_discount && productData.is_discount === 'Y'; // 在售 + result.tags.is_limited = productData.is_limited && productData.is_limited === 'Y'; // 限量 + result.tags.is_yohood = productData.is_yohood && productData.is_yohood === 'Y'; // YOHOOD + result.tags.midYear = productData['mid-year'] && productData['mid-year'] === 'Y'; // 年中 + result.tags.yearEnd = productData['year-end'] && productData['year-end'] === 'Y'; // 年末 + result.tags.is_advance = productData.is_advance && productData.is_advance === 'Y'; // 再到着 + + if (result.is_soon_sold_out && result.tags.is_discount) { + result.tags.is_new = false;// 打折与即将售完组合显示打折 + } else if (result.tags.is_discount && + (result.tags.is_new || result.tags.is_limited || result.tags.is_yohood || result.tags.is_advance)) { + result.tags.is_discount = false;// 打折与其它组合则隐藏打折 + } else if (result.tags.is_yohood && result.tags.is_new) { + result.tags.is_new = false;// YOHOOD和新品组合显示YOHOOD + } + } + return result; +}; + + diff --git a/utils/resources-process.js b/utils/resources-process.js index 30ded14..f825f2b 100644 --- a/utils/resources-process.js +++ b/utils/resources-process.js @@ -1,5 +1,5 @@ const _ = require('lodash'); -const camelCase = require('../library/camel-case'); +const camelCase = global.yoho.camelCase; /** * 处理楼层数据