using System; using System.Collections.Generic; using System.Text; using System.Threading; using AllBase; using Work.Api; using System.Data; using Newtonsoft.Json; using System.Linq; //using JavaScriptEngineSwitcher.V8; //using JavaScriptEngineSwitcher.Core; using Work.ManageClass; namespace Work.CollectClass { public class GetProductOnlineClass { public string Name; public ShopChatBase Shop; public bool ReplaceModel = true, isOnline = false, JustCollection = false, JustSales = false; public bool NoSold = false, NoVisit = false, NoNeerReplace = false, OffOroduct = false; public int NoNeerDays = 0, VisitCount = 0, OffProductCount = 0; public Dictionary chacheDic = new Dictionary(); public int onSaleHour = 0; public int offSaleHour = 0; public string delTitle = ""; public static long endAdvanceTime = 0; public long arrangePid = 0; public long minPrice = 0; public long maxPrice = 0; public string arrangeGoodName = ""; public List goodIds = new List(); public List keywordxs = new List(); public delegate void delegateMessage(string message); public static delegateMessage del; public static bool NoPrce = false; public static List arrangeStatusList = new List(); public static List autoStatusList = new List(); public static List delGroupStatusList = new List(); public GetProductOnlineClass(string name, ShopChatBase shop) { Name = name; Shop = shop; } /// /// 获取在线商品禁售 /// public void GetPromotionPlan() { UploadPinduoduoMain.PromotionPlanList.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/venus/api/adPlan/canCreatePlan"; string refere = "https://mms.pinduoduo.com/exp/searchpromotion/create"; int randx = new Random(Guid.NewGuid().GetHashCode()).Next(000000, 999999); string codex = ""; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} string data = "{\"mallId\":" + mallId + ",\"planName\":\"" + randx + "\",\"sceneType\":0,\"crawlerInfo\":\"#codex#\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#codex#", codex), cookies); //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} url = "https://mms.pinduoduo.com/venus/api/subway/goods/mall/goods"; data = "{\"mallId\":" + mallId + ",\"orderBy\":0,\"pageNumber\":#pageNum#,\"pageSize\":100,\"sortBy\":0,\"crawlerInfo\":\"#codex#\"}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#codex#", codex).Replace("#pageNum#", "1"), cookies); int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#codex#", codex).Replace("#pageNum#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#codex#", codex).Replace("#pageNum#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#codex#", codex).Replace("#pageNum#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "goodsId"); int catId = BaseRegex.GetIntJson(ref list, "catId"); p.CatId = catId; p.Titlte = BaseRegex.GetStringJson(ref list, "goodsName"); p.MailId = mallId; p.ShopName = Shop.ShopName; p.Price = BaseRegex.GetLongJson(ref list, "minGroupPrice"); if (p.GoodsId == 0) continue; UploadPinduoduoMain.PromotionPlanList.Add(p); //UploadPinduoduoMain.PromotionPlanTempList.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取推广产品 " + shopName + ",分页:" + i); } int planId = 0; for (int i = 0; i < goodIds.Count; i++) { var goodInfo = UploadPinduoduoMain.PromotionPlanList.Find(s => s.GoodsId == long.Parse(goodIds[i])); if (goodInfo == null) continue; if (UploadPinduoduoMain.dicPlan.ContainsKey(goodInfo.GoodsId)) { PromPlan planx = new PromPlan(); planx.planName = randx; planx.goodId = goodInfo.GoodsId; planx.goodName = goodInfo.Titlte; planx.status = "该商品在计划中" + UploadPinduoduoMain.dicPlan[goodInfo.GoodsId] + "被使用过"; UploadPinduoduoMain.PromPlanList.Add(planx); LogSave.Add(Name, "商品" + goodInfo.GoodsId + "推广计划失败"); continue; } if (i >= 20) break; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} url = "https://mms.pinduoduo.com/venus/api/subway/keyword/recommend"; refere = "https://mms.pinduoduo.com/exp/searchpromotion/create"; data = "{\"goodsId\":" + goodInfo.GoodsId + ",\"goodsName\":\"" + goodInfo.Titlte + "\",\"mallId\":" + mallId + ",\"crawlerInfo\":\"" + codex + "\"}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); string wordList = html; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} //url = "https://mms.pinduoduo.com/venus/api/subway/creative/isUnmodifiableTitle"; //data = "{\"mallId\":" + mallId + ",\"goodsId\":" + goodInfo.GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; //html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} url = "https://mms.pinduoduo.com/venus/api/goods/image/list"; refere = "https://mms.pinduoduo.com/exp/searchpromotion/create"; data = "{\"mallId\":" + mallId + ",\"goodsId\":" + goodInfo.GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); string imagelist = html; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} if (planId == 0) { url = "https://mms.pinduoduo.com/venus/api/adPlan/create"; refere = "https://mms.pinduoduo.com/exp/searchpromotion/create"; data = "{\"mallId\":" + mallId + ",\"maxCost\":1000000000,\"planName\":\"" + randx + "\",\"sceneType\":0,\"planDiscount\":{\"catTemplateId\":null,\"discounts\":[{\"index\":0,\"rate\":1000},{\"index\":1,\"rate\":1000},{\"index\":2,\"rate\":1000},{\"index\":3,\"rate\":1000},{\"index\":4,\"rate\":1000},{\"index\":5,\"rate\":1000},{\"index\":6,\"rate\":1000},{\"index\":7,\"rate\":1000},{\"index\":8,\"rate\":1000},{\"index\":9,\"rate\":1000},{\"index\":10,\"rate\":1000},{\"index\":11,\"rate\":1000},{\"index\":12,\"rate\":1000},{\"index\":13,\"rate\":1000},{\"index\":14,\"rate\":1000},{\"index\":15,\"rate\":1000},{\"index\":16,\"rate\":1000},{\"index\":17,\"rate\":1000},{\"index\":18,\"rate\":1000},{\"index\":19,\"rate\":1000},{\"index\":20,\"rate\":1000},{\"index\":21,\"rate\":1000},{\"index\":22,\"rate\":1000},{\"index\":23,\"rate\":1000}]},\"productType\":1,\"crawlerInfo\":\"" + codex + "\"}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); if (html.Contains("\"success\":false")) { Thread.Sleep(3000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); string errorx = BaseRegex.GetStringJson(ref html, "errorMsg"); LogSave.Add(Name, "商品" + goodInfo.GoodsId + errorx); if (errorx != null && errorx.Contains("您今天的操作配额已用完,请明天再用")) { del("您今天的操作配额已用完,请明天再用"); return; } } planId = BaseRegex.GetIntJson(ref html, "result"); } if (planId == 0) { if (html.Contains("您今天的操作配额已用完,请明天再用")) { LogSave.Add(Name, "您今天的操作配额已用完,请明天再用"); return; } Thread.Sleep(10 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); planId = BaseRegex.GetIntJson(ref html, "result"); } string imageStr = ""; var mc = BaseRegex.GetMatchRegex(ref imagelist, @"{[^>]+?}"); for (int j = 0; mc != null && j < mc.Count; j++) { if (j > 3) break; string list = mc[j].Groups[0].Value; long imageId = BaseRegex.GetLongJson(ref list, "imageId"); string imageUrl = BaseRegex.GetStringJson(ref list, "imageUrl"); int imageWidth = BaseRegex.GetIntJson(ref list, "imageWidth"); int imageHeight = BaseRegex.GetIntJson(ref list, "imageHeight"); int priority = BaseRegex.GetIntJson(ref list, "priority"); int imageType = BaseRegex.GetIntJson(ref list, "imageType"); imageStr += ",{\"imageId\":" + imageId + ",\"imageUrl\":\"" + imageUrl + "\",\"imageWidth\":" + imageWidth + ",\"imageHeight\":" + imageHeight + ",\"priority\":" + priority + ",\"imageType\":" + imageType + ",\"title\":\"" + goodInfo.Titlte + "\",\"price\":" + goodInfo.Price + ",\"errorInfo\":\"\",\"creativeSpecificationId\":6}"; } string creativeList = "[" + imageStr.Substring(1) + "]"; string wordStr = ""; //for (int j = 0; j < keywordxs.Count; j++) //{ // if (j >= 150) // break; // string word = keywordxs[j]; // wordStr += ",{\"bid\": 200,\"mallId\": " + mallId + ",\"word\": \"" + word + "\",\"wordSource\": 2}"; //} //if (keywordxs.Count == 0) //{ mc = BaseRegex.GetMatchRegex(ref wordList, @"""word"":""([\w\W]+?)"","); for (int j = 0; mc != null && j < mc.Count; j++) { if (j >= 150) break; string word = mc[j].Groups[1].Value; wordStr += ",{\"bid\": 200,\"mallId\": " + mallId + ",\"word\": \"" + word + "\",\"wordSource\": 2}"; } //} string keywords = "[" + wordStr.Substring(1) + "]"; ////检查关键词 //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} //url = "https://mms.pinduoduo.com/venus/api/text/checkCharacter"; //data = "{\"mallId\":" + mallId + ",\"text\":\"[object Object]\",\"crawlerInfo\":\"" + codex + "\"}"; //html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} url = "https://mms.pinduoduo.com/venus/api/subway/unit/create"; refere = "https://mms.pinduoduo.com/exp/searchpromotion/create"; data = "{\"mallId\":" + mallId + ",\"planId\":" + planId + ",\"trackId\":\"\",\"unit\":{\"goodsId\":" + goodInfo.GoodsId + ",\"creativeList\":" + creativeList + ",\"unitBids\":[],\"keywords\":" + keywords + "},\"crawlerInfo\":\"" + codex + "\"}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); string error = BaseRegex.GetStringJson(ref html, "errorMsg"); if (error != null && error.Contains("您今天的操作配额已用完,请明天再用")) { del("您今天的操作配额已用完,请明天再用"); return; } LogSave.Add(Name, "商品" + goodInfo.GoodsId + "推广计划完成"); PromPlan plan = new PromPlan(); plan.planName = randx; plan.goodId = goodInfo.GoodsId; plan.goodName = goodInfo.Titlte; plan.status = "推广计划完成"; if (!string.IsNullOrEmpty(error) && error.Contains("频繁")) { Thread.Sleep(20 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies); error = BaseRegex.GetStringJson(ref html, "errorMsg"); } if (!string.IsNullOrEmpty(error)) plan.status = error; if (string.IsNullOrEmpty(error)) UploadPinduoduoMain.dicPlan.Add(goodInfo.GoodsId, randx); UploadPinduoduoMain.PromPlanList.Add(plan); Thread.Sleep(10 * 1000); } LogSave.Add(Name, "计划" + randx + "生成完成"); } /// /// 获取在线 /// public void GetOnline() { Shop.OnlineProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = goodInfo.id; p.GoodsSn = long.Parse(goodInfo.goods_sn); p.Titlte = goodInfo.goods_name; p.CatId = goodInfo.cat_id; p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = goodInfo.sold_quantity; p.ShopName = Shop.ShopName; string price = goodInfo.sku_group_price[0].ToString(); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } p.OffLine = !isOnline; if (ReplaceModel) { if (p.SaleCount > 0 && UploadPinduoduoMain.NoSold) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } UploadPinduoduoMain.ProductReplaceTemp.Add(p); } if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnlineProduct.Add(p); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (p.SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } UploadPinduoduoMain.ProductReplaceTemp.Add(p); } if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnlineProduct.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); //界面数据量太多会卡,处理界面卡的问题 if (Shop.OnlineProduct.Count > 4000) Thread.Sleep(1500); } LogSave.Add(Name, "获取完成"); } /// /// 获取在线 /// public void GetRepeatOnline() { List repeatList = new List(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; string titlte = goodInfo.goods_name; repeatList.Add(titlte); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; string title = BaseRegex.GetStringJson(ref list, "goods_name"); repeatList.Add(title); } } Thread.Sleep(300); LogSave.Add(Name, "防标题重复 " + shopName + ",第" + (i + 1) + "页"); } if (!UploadPinduoduoMain.ShopTitles.ContainsKey(Shop.ShopName)) UploadPinduoduoMain.ShopTitles.Add(Shop.ShopName, repeatList); else UploadPinduoduoMain.ShopTitles[Shop.ShopName] = repeatList; LogSave.Add(Name, "获取完成"); } /// /// 获取在线 /// public void GetArrangeOnline() { Shop.OnOrOffArrProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + ""; if (minPrice > 0) { if (maxPrice == 0) maxPrice = 1000000000; data = "{\"order_by\":\"id:desc\",\"sku_price_range\":[" + minPrice * 100 + "," + maxPrice * 100 + "],\"sold_quantity\":[#sold#,1000000000],\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + ""; } if (!string.IsNullOrEmpty(arrangeGoodName)) { data += ",\"goods_name\":\"" + arrangeGoodName + "\""; } data += "}"; if (UploadPinduoduoMain.JustSales) data = data.Replace("#sold#", "1"); else data = data.Replace("#sold#", "0"); string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); DelGroupStatus delstatus = new DelGroupStatus(); delstatus.shopName = Shop.ShopName; delstatus.goodsCount = allCount; arrangeStatusList.Add(delstatus); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = goodInfo.id; p.GoodsSn = long.Parse(goodInfo.goods_sn); p.Titlte = goodInfo.goods_name; p.CatId = goodInfo.cat_id; p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = goodInfo.sold_quantity; p.ShopName = Shop.ShopName; string price = goodInfo.sku_group_price[0].ToString(); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = int.Parse(goodInfo.fav_cnt); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } p.OffLine = !isOnline; //if (ReplaceModel ) //{ // if (p.SaleCount > 0 && UploadPinduoduoMain.NoSold) // { // LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); // continue; // } // UploadPinduoduoMain.ProductReplaceTemp.Add(p); //} if (JustCollection) { if (favcnt <= 0) continue; } if (JustSales) { if (p.SaleCount <= 0) continue; } //UploadPinduoduoMain.ProductArrangeTemp.Add(p); if (!Shop.OnOrOffArrProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffArrProduct.Add(p); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = BaseRegex.GetIntJson(ref list, "fav_cnt"); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); //if (ReplaceModel) //{ // if (p.SaleCount > 0) // { // LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); // continue; // } // UploadPinduoduoMain.ProductReplaceTemp.Add(p); //} if (JustCollection) { if (favcnt <= 0) continue; } if (JustSales) { if (p.SaleCount <= 0) continue; } //UploadPinduoduoMain.ProductArrangeTemp.Add(p); if (!Shop.OnOrOffArrProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffArrProduct.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); ////界面数据量太多会卡,处理界面卡的问题 //if (Shop.OnOrOffArrProduct.Count > 4000) // Thread.Sleep(1500); } LogSave.Add(Name, "获取完成"); } public void GetAllArrangeOnline() { Shop.OnOrOffArrProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + ""; if (minPrice > 0) { if (maxPrice == 0) maxPrice = 1000000000; data = "{\"order_by\":\"id:desc\",\"sku_price_range\":[" + minPrice * 100 + "," + maxPrice * 100 + "],\"sold_quantity\":[#sold#,1000000000],\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + ""; } if (!string.IsNullOrEmpty(arrangeGoodName)) { data += ",\"goods_name\":\"" + arrangeGoodName + "\""; } data += "}"; if (UploadPinduoduoMain.JustSales) data = data.Replace("#sold#", "1"); else data = data.Replace("#sold#", "0"); string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); DelGroupStatus delstatus = new DelGroupStatus(); delstatus.shopName = Shop.ShopName; delstatus.goodsCount = allCount; arrangeStatusList.Add(delstatus); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = goodInfo.id; p.GoodsSn = long.Parse(goodInfo.goods_sn); p.Titlte = goodInfo.goods_name; p.CatId = goodInfo.cat_id; p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = goodInfo.sold_quantity; p.ShopName = Shop.ShopName; string price = goodInfo.sku_group_price[0].ToString(); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = int.Parse(goodInfo.fav_cnt); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } p.OffLine = !isOnline; //if (ReplaceModel ) //{ // if (p.SaleCount > 0 && UploadPinduoduoMain.NoSold) // { // LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); // continue; // } // UploadPinduoduoMain.ProductReplaceTemp.Add(p); //} if (JustCollection) { if (favcnt <= 0) continue; } if (JustSales) { if (p.SaleCount <= 0) continue; } //UploadPinduoduoMain.ProductArrangeTemp.Add(p); if (!Shop.OnOrOffArrProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffArrProduct.Add(p); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = BaseRegex.GetIntJson(ref list, "fav_cnt"); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); //if (ReplaceModel) //{ // if (p.SaleCount > 0) // { // LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); // continue; // } // UploadPinduoduoMain.ProductReplaceTemp.Add(p); //} if (JustCollection) { if (favcnt <= 0) continue; } if (JustSales) { if (p.SaleCount <= 0) continue; } //UploadPinduoduoMain.ProductArrangeTemp.Add(p); if (!Shop.OnOrOffArrProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffArrProduct.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); ////界面数据量太多会卡,处理界面卡的问题 //if (Shop.OnOrOffArrProduct.Count > 4000) // Thread.Sleep(1500); } LogSave.Add(Name, "获取完成"); } public void GetResurSalesOnline() { Shop.ResurVioSalesProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_onsale\":1,\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", "1"), CpsSetAllGoods.getAnti0aon()); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); for (int i = 0; i < page; i++) { if (i > 5) break; if (i != 0) { html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, cookies, data.Replace("#page#", (i + 1).ToString()), CpsSetAllGoods.getAnti0aon()); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = goodInfo.id; p.GoodsSn = long.Parse(goodInfo.goods_sn); p.Titlte = goodInfo.goods_name; p.CatId = goodInfo.cat_id; p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = goodInfo.sold_quantity; p.ShopName = Shop.ShopName; string price = goodInfo.sku_group_price[0].ToString(); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = int.Parse(goodInfo.fav_cnt); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } p.OffLine = !isOnline; if (p.SaleCount > 0) continue; if (!Shop.ResurVioSalesProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.ResurVioSalesProduct.Add(p); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; int favcnt = BaseRegex.GetIntJson(ref list, "fav_cnt"); p.favcnt = favcnt; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (p.SaleCount > 0) continue; if (!Shop.ResurVioSalesProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.ResurVioSalesProduct.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); } /// /// 获取在线商品禁售 /// public void GetResurOnline() { GetResurSalesOnline(); Shop.ResurVioProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/genji/bloodroot/goodsBlacklist/query/list"; string refere = "https://mms.pinduoduo.com/pg/violation_list"; int minStartTime = BaseClass.GetTime(DateTime.Now.AddDays(-90)); int maxStartTime = BaseClass.GetTime(DateTime.Now); string data = "{\"pageNum\":#pageNum#,\"pageSize\":10,\"minStartTime\":" + minStartTime + ",\"maxStartTime\":" + maxStartTime + "}"; //string data = "{\"order_by\":\"id:desc\",\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#pageNum#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("recordsTotal")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#pageNum#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("recordsTotal")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#pageNum#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "recordsTotal"); int page = allCount / 10 + (allCount % 10 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#pageNum#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("recordsTotal")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#pageNum#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("recordsTotal")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#pageNum#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "goodsId"); long longid = BaseRegex.GetLongJson(ref list, "goodsIdLong"); if (longid > 0) p.GoodsId = longid; p.GoodsSn = BaseRegex.GetLongJson(ref list, "goodsSn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goodsName"); p.MailId = BaseRegex.GetLongJson(ref list, "mallId"); p.ShopName = Shop.ShopName; if (p.GoodsId == 0) continue; string reason = BaseRegex.GetStringJson(ref list, "reason"); if (reason != "重复铺货") continue; UploadPinduoduoMain.ProductResurVioTemp.Add(p); if (!Shop.ResurVioProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.ResurVioProduct.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取禁售产品 " + shopName + ",分页:" + i); //界面数据量太多会卡,处理界面卡的问题 if (Shop.ResurVioProduct.Count > 4000) Thread.Sleep(1500); } LogSave.Add(Name, "获取完成"); } public void UploadMethod() { int count = 0; if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); for (int j = 0; j < Shop.OnlineProduct.Count; j++) { if (Shop.OnlineProduct[j].OffLine == isOnline) continue; if (OffOroduct) { if (count >= OffProductCount) { break; } } var api = new PinduoduoApiGetProduct(Shop); //string html = ""; //if (isOnline) //{ // html = api.SetOnline(Shop.OnlineProduct[j].GoodsId, false); //} //else //{ // html = api.SetOnline(Shop.OnlineProduct[j].GoodsId, true); //} string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/onSale"; if (isOnline) urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + Shop.OnlineProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); if (html.Contains("\"success\":false")) { if (isOnline) { html = api.SetOnline(Shop.OnlineProduct[j].GoodsId, false); } else { html = api.SetOnline(Shop.OnlineProduct[j].GoodsId, true); } } Shop.OnlineProduct[j].Message = !isOnline ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductReplaceTemp.Add(Shop.OnlineProduct[j]); Thread.Sleep(5 * 1000); count++; } } public void UploadArrangeMethod() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); var api = new PinduoduoApiGetProduct(Shop); string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/onSale"; if (isOnline) urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + arrangePid + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = arrangePid; p.Message = !isOnline ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductArrangeTemp.Add(p); Thread.Sleep(5 * 1000); } public void UploadAutoOnMethod() { UploadAutoOn(); var p = new GetProductOnlineClass(Name, Shop); p.ReplaceModel = true; p.isOnline = false; p.GetAllOnlineIds(); UploadAutoOn(); OnOrOffStatus onOrOffStatus = new OnOrOffStatus(); onOrOffStatus.shopName = Shop.ShopName; onOrOffStatus.onStatus = "上架执行完成"; UploadPinduoduoMain.onOrOffStatusList.Add(onOrOffStatus); } public void UploadAutoOn() { int count = 0; string message = ""; if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.AutoShop.goodsOnCount = Shop.OffIds.Count; AutoShopTemp.Add(Shop); string error_msg = ""; for (int j = 0; j < Shop.OffIds.Count; j++) { var api = new PinduoduoApiGetProduct(Shop); string html = api.SetOnline(Shop.OffIds[j], true); if (!string.IsNullOrEmpty(html) && html.Contains("\"error_msg\"")) { error_msg = BaseRegex.GetStringJson(ref html, "error_msg"); Shop.ClearNoVisitShop.goodOnStatus = error_msg; ShopTemp.Add(Shop); break; } Thread.Sleep(3 * 1000); count++; Shop.AutoShop.onCount = count; Shop.AutoShop.goodOnStatus = "上架第" + count + "个"; AutoShopTemp.Add(Shop); } for (int j = 0; j < offlines.Count; j++) { var api = new PinduoduoApiGetProduct(Shop); string html = api.SetOnline(offlines[j], true); if (!string.IsNullOrEmpty(html) && html.Contains("\"error_msg\"")) { error_msg = BaseRegex.GetStringJson(ref html, "error_msg"); Shop.ClearNoVisitShop.goodOnStatus = error_msg; ShopTemp.Add(Shop); break; } Thread.Sleep(3 * 1000); count++; Shop.AutoShop.onCount = count; Shop.AutoShop.goodOnStatus = "上架第" + count + "个"; AutoShopTemp.Add(Shop); } if (!string.IsNullOrEmpty(error_msg)) return; Shop.AutoShop.goodOnStatus = "上架第" + count + "个(完成)"; AutoShopTemp.Add(Shop); } public List offlines = new List(); public void UploadAutoOffMethod() { int count = 0; string message = ""; offlines.Clear(); if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.AutoShop.goodsOffCount = Shop.OnIds.Count; AutoShopTemp.Add(Shop); for (int j = 0; j < Shop.OnIds.Count; j++) { if (UploadPinduoduoMain.onStartFlag) { offlines.Add(Shop.OnIds[j]); } var api = new PinduoduoApiGetProduct(Shop); string html = api.SetOnline(Shop.OnIds[j], false); Thread.Sleep(3 * 1000); count++; Shop.AutoShop.offCount = count; Shop.AutoShop.goodOffStatus = "下架第" + count + "个"; AutoShopTemp.Add(Shop); } Shop.AutoShop.goodOffStatus = "下架第" + count + "个(完成)"; AutoShopTemp.Add(Shop); } public static Dictionary loopOffLines = new Dictionary(); public int loopoffCount = 0; public void UploadLoopOffMethod() { string url = "https://mms.pinduoduo.com/earth/api/mallPunishment"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"size\":\"5\" }"; //第一页匹配结果 string htmlxt = CpsSetAllGoods.Request_mms_pinduoduo_com(url, refere, Shop.Cookies, data, CpsSetAllGoods.getAnti0aon()); //惩罚店铺 int level = BaseRegex.GetIntJson(ref htmlxt, "punishmentLevel"); string punishment = string.Empty; if (level == 1) { punishment = "一级惩罚"; } else if (level == 2) { punishment = "二级惩罚"; } else if (level == 3) { punishment = "三级惩罚"; } else { punishment = "无"; } if (level > 0) { Shop.AutoShop.goodOffStatus = "店铺处于" + punishment + "中,跳过上下架"; AutoShopTemp.Add(Shop); return; } while (true) { var p = new GetProductOnlineClass(Name, Shop); p.ReplaceModel = true; p.isOnline = true; p.GetAllLoopOnlineIds(); string message = ""; if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.AutoShop.goodsOffCount = Shop.OnIds.Count; AutoShopTemp.Add(Shop); for (int j = 0; j < Shop.OnIds.Count; j++) { var api = new PinduoduoApiGetProduct(Shop); string html = api.SetOnline(Shop.OnIds[j], false); Thread.Sleep(3 * 1000); if (Shop.OnIds[j] == 0) continue; loopOffLines.Add(Shop.OnIds[j], Shop.ShopName); Thread.Sleep(1000); loopoffCount++; Shop.AutoShop.offCount = loopoffCount; Shop.AutoShop.goodsOnCount = loopOffLines.Count; Shop.AutoShop.goodOffStatus = "循环下架第" + loopoffCount + "个"; AutoShopTemp.Add(Shop); } Shop.AutoShop.goodOffStatus = "循环下架执行完成,半小时候继续执行"; AutoShopTemp.Add(Shop); //OnOrOffStatus onOrOffStatus = new OnOrOffStatus(); //onOrOffStatus.shopName = Shop.ShopName; //onOrOffStatus.offStatus = "循环下架执行完成,半小时候继续执行"; //UploadPinduoduoMain.onOrOffStatusList.Add(onOrOffStatus); Thread.Sleep(30 * 60 * 1000); } } public static int looponCount = 0; public static void UploadLoopOnMethod() { while (true) { if (loopOffLines.Keys.Count == 0) { Thread.Sleep(10); continue; } string message = ""; if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } try { KeyValuePair kvp = loopOffLines.FirstOrDefault(); long goodsId = kvp.Key; string shopName = kvp.Value; loopOffLines.Remove(goodsId); looponCount++; //if (UploadPinduoduoMain.onOrLoopOffStatusList.Find(s => s.shopName == shopName) == null) //{ // OnOrOffStatus onOrOffStatus = new OnOrOffStatus(); // onOrOffStatus.shopName = shopName; // onOrOffStatus.onStatus = "循环上架开始执行";//上架参数 // UploadPinduoduoMain.onOrOffStatusList.Add(onOrOffStatus); // UploadPinduoduoMain.onOrLoopOffStatusList.Add(onOrOffStatus); //} var shop = GetShopLoginInfo.Shops.Find(s => s.ShopName == shopName); if (shop == null) continue; string error_msg = ""; var api = new PinduoduoApiGetProduct(shop); string html = api.SetOnline(goodsId, true); if (!string.IsNullOrEmpty(html) && html.Contains("\"error_msg\"")) { error_msg = BaseRegex.GetStringJson(ref html, "error_msg"); shop.ClearNoVisitShop.goodOnStatus = error_msg; ShopTemp.Add(shop); break; } Thread.Sleep(3 * 1000); if (html.Contains("\"error_msg\":\"调用过于频繁,请调整调用频率\"")) { message = "上架失败"; } UploadPinduoduoMain.ProductOnOrOffTempDic.Add(new OnOrOffProuduct { id = goodsId, shopName = shopName, message = message, name = shop.Name }); LogSave.Add("循环上下架", "在线产品 " + goodsId + message); shop.AutoShop.onCount = looponCount; shop.AutoShop.goodOnStatus = "循环上架第" + looponCount + "个"; AutoShopTemp.Add(shop); } catch { } } } public void GetChacheData() { string[] fl = FileBase.ReadAllLines("temp/upsame/" + Shop.Name + "edit.tjm"); if (fl != null) { foreach (string s in fl) { if (string.IsNullOrEmpty(s) || !s.Contains(",")) continue; string[] li = s.Split(','); long id; if (li.Length != 2 || !long.TryParse(li[0], out id)) continue; DateTime dt = DateTime.Parse(li[1]); if (chacheDic.ContainsKey(id)) chacheDic[id] = dt; else chacheDic.Add(id, dt); } } } public void GetOffSalesNoPV() { if (chacheDic.Count == 0) { GetChacheData(); } if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); int pvCount = 0; List ids = new List(); for (int j = 0; j < Shop.OnlineProduct.Count; j++) { if (Shop.OnlineProduct[j].OffLine == isOnline) continue; if (NoSold && Shop.OnlineProduct[j].SaleCount > 0) continue; if (NoVisit && Shop.OnlineProduct[j].Pv > VisitCount) continue; if (NoNeerReplace) { if (chacheDic.ContainsKey(Shop.OnlineProduct[j].GoodsId) && DateTime.Now.AddDays(-NoNeerDays) > chacheDic[Shop.OnlineProduct[j].GoodsId]) { continue; } } if (OffOroduct) { if (pvCount >= OffProductCount) { pvCount = 0; break; } } ids.Add(Shop.OnlineProduct[j].GoodsId); Shop.OnlineProduct[j].Message = Shop.OnlineProduct[j].OffLine ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductReplaceTemp.Add(Shop.OnlineProduct[j]); string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + Shop.OnlineProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); //var api = new PinduoduoApiGetProduct(Shop); //string html = api.SetOnline(Shop.OnlineProduct[j].GoodsId, false); Thread.Sleep(5 * 1000); pvCount++; } pvCount = 0; } public void GetDelProduct() { List ids = new List(); for (int j = 0; j < Shop.OnlineProduct.Count; j++) { if (Shop.OnlineProduct[j].OffLine != isOnline) continue; ids.Add(Shop.OnlineProduct[j].GoodsId); Shop.OnlineProduct[j].Message = "删除成功"; UploadPinduoduoMain.ProductReplaceTemp.Add(Shop.OnlineProduct[j]); if (ids.Count >= 15) { string html = DelIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnlineProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductReplaceTemp.Add(p); } return; } ids.Clear(); LogSave.Add(Name, "删除成功:" + Shop.OnlineProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnlineProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductReplaceTemp.Add(p); } return; } } LogSave.Add(Name, "删除完成"); } public string DelIds(List ids) { if (ids.Count == 0) return ""; StringBuilder pids = new StringBuilder(); for (int i = 0; i < ids.Count; i++) { pids.Append("," + ids[i]); } var d = new DownUpProductExploder("", false, pids.ToString(1, pids.Length - 1)); d.Cookies = Shop.Cookies; d.Name = Name; d.Shop = Shop; if (isOnline) { string html = d.Delete(); return html; } return ""; } /// /// 获取在线 /// public void GetAllOnline() { Shop.OnOrOffProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:asc\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (p.SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } } if (!Shop.OnOrOffProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffProduct.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); if (UploadPinduoduoMain.NoVisit) { LogSave.Add(Name, "获取在线无流量产品 " + shopName); UploadPinduoduoMain up = new UploadPinduoduoMain(Name); up.Shop = Shop; up.GetGroupVisit(); } } /// /// 获取在线 /// public void GetAllOnlineIds() { if (!isOnline)//true 商品处于上架状态,商品处于下架状态false { Shop.OffIds.Clear(); } else { Shop.OnIds.Clear(); } int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:asc\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; long GoodsId = BaseRegex.GetLongJson(ref list, "id"); int SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; bool OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + GoodsId); continue; } } if (!isOnline && OffLine && !Shop.OffIds.Contains(GoodsId)) Shop.OffIds.Add(GoodsId); if (isOnline && !OffLine && !Shop.OnIds.Contains(GoodsId)) Shop.OnIds.Add(GoodsId); } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); if (UploadPinduoduoMain.NoVisit) { LogSave.Add(Name, "获取在线无流量产品 " + shopName); UploadPinduoduoMain up = new UploadPinduoduoMain(Name); up.Shop = Shop; up.isOnline = isOnline; up.GetGroupVisitIds(); } } public void GetAllLoopOnlineIds() { if (!isOnline)//true 商品处于上架状态,商品处于下架状态false { Shop.OffIds.Clear(); } else { Shop.OnIds.Clear(); } int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:asc\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; long GoodsId = BaseRegex.GetLongJson(ref list, "id"); int SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; bool OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + GoodsId); continue; } } if (!isOnline && OffLine && !Shop.OffIds.Contains(GoodsId)) Shop.OffIds.Add(GoodsId); if (isOnline && !OffLine && !Shop.OnIds.Contains(GoodsId)) Shop.OnIds.Add(GoodsId); } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); if (UploadPinduoduoMain.NoVisit) { LogSave.Add(Name, "获取在线无流量产品 " + shopName); UploadPinduoduoMain up = new UploadPinduoduoMain(Name); up.Shop = Shop; up.isOnline = isOnline; up.GetGroupVisitIds(); } } public void GetAllGroupOnline() { Shop.OnOrOffProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:asc\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; if (minPrice > 0 && GetProductOnlineClass.NoPrce) { if (maxPrice == 0) maxPrice = 1000000000; data = "{\"order_by\":\"id:asc\",\"sku_price_range\":[" + minPrice * 100 + "," + maxPrice * 100 + "],\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; } string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (p.SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } } if (!Shop.OnOrOffProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffProduct.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); if (UploadPinduoduoMain.NoVisit) { LogSave.Add(Name, "获取在线无流量产品 " + shopName); UploadPinduoduoMain up = new UploadPinduoduoMain(Name); up.Shop = Shop; up.GetGroupVisit(); } } public void GetAllOffGroupOnline() { Shop.OnOrOffProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; //string data = "{\"order_by\":\"id:asc\",\"size\":15,\"page\":#page#,\"mall_id\":" + mallId + "}"; string data = "{\"order_by\":\"id:desc\",\"is_onsale\":0,\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; if (minPrice > 0) { if (maxPrice == 0) maxPrice = 1000000000; data = "{\"order_by\":\"id:desc\",\"sku_price_range\":[" + minPrice * 100 + "," + maxPrice * 100 + "],\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + ""; } string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page >= 1000) { page = 999; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (ReplaceModel) { if (p.SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } } if (!Shop.OnOrOffProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnOrOffProduct.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); if (UploadPinduoduoMain.NoVisit) { LogSave.Add(Name, "获取在线无流量产品 " + shopName); UploadPinduoduoMain up = new UploadPinduoduoMain(Name); up.Shop = Shop; up.GetGroupVisit(); } } public long retCheckDaysPid() { if (!ClearProductGroup.IsNoDays) return 0; string url = BaseClass.LoginApiUrl + "?obj=upshopid/upid&act=get_days_id"; string data = "days=" + ClearProductGroup.DaysCount + "&" + UserLogin.GetSignaturex(); string html = GetHtml.PostUtf8(url, data); long id = 0; long.TryParse(html, out id); return id; } long minPid = 0; public void GetDelKeyWordOnline() { Shop.OnOrOffProduct.Clear(); if (ClearProductGroup.IsNoDays) minPid = retCheckDaysPid(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:asc\",\"goods_name\":\"" + delTitle + "\",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); if (p.GoodsId == 0 || string.IsNullOrEmpty(p.Titlte)) continue; p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; //int created_at = BaseRegex.GetIntJson(ref list, "created_at"); //DateTime dt = BaseClass.StampToDateTime(created_at); if (ClearProductGroup.IsNoDays && p.GoodsId > minPid) continue; //if (ClearProductGroup.noDays && DateTime.Now.AddDays(-ClearProductGroup.daysCount) > dt) // continue; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); if (!Shop.OnOrOffProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) { if (!p.Titlte.Contains(delTitle)) continue; Shop.OnOrOffProduct.Add(p); UploadPinduoduoMain.ProductDelTemp.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线关键词产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); } public void GetDelKeyTitleProduct() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.ClearNoVisitShop.goodsCount = Shop.OnOrOffProduct.Count; ClearProductGroup.ShopTemp.Add(Shop); List ids = new List(); for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (delCount >= ClearProductGroup.GoodCount) break; isOnline = !Shop.OnOrOffProduct[j].OffLine; if (isOnline) { var api = new PinduoduoApiGetProduct(Shop); string html = api.SetOnline(Shop.OnOrOffProduct[j].GoodsId, false); Shop.OnOrOffProduct[j].Message = !isOnline ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductDelTemp.Add(Shop.OnOrOffProduct[j]); LogSave.Add(Name, "商品" + Shop.OnOrOffProduct[j].GoodsId + "下架"); Thread.Sleep(3 * 1000); } ids.Add(Shop.OnOrOffProduct[j].GoodsId); delCount++; if (ids.Count >= 15) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); Shop.ClearNoVisitShop.goodStatus = "今日删除商品已达上限"; ClearProductGroup.ShopTemp.Add(Shop); return; } ids.Clear(); Shop.ClearNoVisitShop.goodStatus = "删除第" + delCount + "个"; ClearProductGroup.ShopTemp.Add(Shop); LogSave.Add(Name, "删除成功:" + Shop.OnOrOffProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); Shop.ClearNoVisitShop.goodStatus = "今日删除商品已达上限"; ClearProductGroup.ShopTemp.Add(Shop); return; } Shop.ClearNoVisitShop.goodStatus = "删除第" + delCount + "个(完成)"; ClearProductGroup.ShopTemp.Add(Shop); } LogSave.Add(Name, "删除完成"); } public void GetDelKeyWordDel() { GetDelKeyWordOnline(); GetDelKeyTitleProduct(); } public int vioCount = 0; public void GetDelKeyGood() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.DelGroupShop.goodsCount = Shop.OnOrOffProduct.Count; ShopTemp.Add(Shop); for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (Shop.OnOrOffProduct[j].Delete == "False") continue; var api = new PinduoduoApiGetProduct(Shop); string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + Shop.OnOrOffProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); Shop.OnOrOffProduct[j].Message = "下架成功"; LogSave.Add(Name, "下架成功:" + Shop.OnOrOffProduct[j].GoodsId); UploadPinduoduoMain.ProductDelTemp.Add(Shop.OnOrOffProduct[j]); vioCount++; Shop.DelGroupShop.vioCount = vioCount; ShopTemp.Add(Shop); Thread.Sleep(5 * 1000); } Shop.DelGroupShop.goodStatus = "下架违规完成"; ShopTemp.Add(Shop); } /// /// 获取售罄商品 /// public void GetSoldOutOnline() { Shop.SellOutProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/goods/goods_list"; string data = "{\"order_by\":\"quantity:desc,id:desc\",\"page\":#page#,\"sold_out\":1,\"size\":100,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); //if (p.SaleCount <= 0) //{ // LogSave.Add(Name, "跳过无销量商品 " + p.GoodsId); // continue; //} if (!Shop.SellOutProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.SellOutProduct.Add(p); } Thread.Sleep(300); LogSave.Add(Name, "获取售罄产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); } public int delCount = 0; public int offCount = 0; public static List ShopTemp = new List(); public static List AutoShopTemp = new List(); public static List ArrangeShopTemp = new List(); public void GetDelGroupProduct() { GetAllGroupOnline(); Shop.DelGroupShop.goodsCount = Shop.OnOrOffProduct.Count; ShopTemp.Add(Shop); List ids = new List(); if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); List idsx = new List(); for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (offCount >= UploadPinduoduoMain.DelCount) break; isOnline = !Shop.OnOrOffProduct[j].OffLine; if (isOnline) { idsx.Add(Shop.OnOrOffProduct[j].GoodsId); offCount++; if (idsx.Count >= 15) { string html = OffShopx(idsx); idsx.Clear(); if (html == "error") break; Shop.DelGroupShop.offCount = offCount; ShopTemp.Add(Shop); Thread.Sleep(10 * 1000); } } } if (idsx.Count > 0) { OffShopx(idsx); idsx.Clear(); Shop.DelGroupShop.offCount = offCount; ShopTemp.Add(Shop); } for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (delCount >= UploadPinduoduoMain.DelCount) break; ids.Add(Shop.OnOrOffProduct[j].GoodsId); delCount++; Shop.OnOrOffProduct[j].Message = "删除成功"; if (ids.Count >= 100) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } Shop.DelGroupShop.goodStatus = "今日删除商品已达上限"; ShopTemp.Add(Shop); return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } ids.Clear(); Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); LogSave.Add(Name, "删除成功:" + Shop.OnOrOffProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } Shop.DelGroupShop.goodStatus = "今日删除商品已达上限"; ShopTemp.Add(Shop); return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); } Shop.DelGroupShop.goodStatus = "删除完成"; ShopTemp.Add(Shop); LogSave.Add(Name, "删除完成"); } public string OffShopx(List ids) { if (ids.Count == 0) return ""; StringBuilder pids = new StringBuilder(); for (int i = 0; i < ids.Count; i++) { pids.Append("," + ids[i]); } string GoodsId = pids.ToString(1, pids.Length - 1); string codex = ""; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} string data = "{\"goodsIds\":[" + GoodsId + "],\"crawlerInfo\":\"" + codex + "\"}"; string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/batchOffSale"; string refere = "https://mms.pinduoduo.com"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); if (html.Contains("{\"success\":true")) { string[] l = GoodsId.Split(','); foreach (string s in l) { //var good = Shop.OnOrOffProduct.Find(p => p.GoodsId == long.Parse(s)); //good.Message = "下架成功"; //ProductClearTemp.Add(good); LogSave.Add(Name, "下架产品成功:" + s); } return ""; } if (html.Contains("手速太快了")) { LogSave.Add(Name, Shop.ShopName + "接口调用频繁,请过段时间再操作。"); return "error"; } return ""; } public void GetDelGroupOffProduct() { GetAllOffGroupOnline(); Shop.DelGroupShop.goodsCount = Shop.OnOrOffProduct.Count; ShopTemp.Add(Shop); List ids = new List(); for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (delCount >= UploadPinduoduoMain.DelCount) break; isOnline = !Shop.OnOrOffProduct[j].OffLine; if (isOnline) continue; ids.Add(Shop.OnOrOffProduct[j].GoodsId); delCount++; Shop.OnOrOffProduct[j].Message = "删除成功"; if (ids.Count >= 15) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } ids.Clear(); Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); LogSave.Add(Name, "删除成功:" + Shop.OnOrOffProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); } Shop.DelGroupShop.goodStatus = "删除完成"; ShopTemp.Add(Shop); LogSave.Add(Name, "删除完成"); } public string DelGroupIds(List ids) { if (ids.Count == 0) return ""; StringBuilder pids = new StringBuilder(); for (int i = 0; i < ids.Count; i++) { pids.Append("," + ids[i]); } var d = new DownUpProductExploder("", false, pids.ToString(1, pids.Length - 1)); d.Cookies = Shop.Cookies; d.Name = Name; d.Shop = Shop; string html = d.Delete(); return html; } public void GetDelTitleProduct() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); Shop.DelGroupShop.goodsCount = Shop.OnOrOffProduct.Count; ShopTemp.Add(Shop); List ids = new List(); for (int j = 0; j < Shop.OnOrOffProduct.Count; j++) { if (delCount >= UploadPinduoduoMain.DelCount) break; if (Shop.OnOrOffProduct[j].Delete == "False") continue; isOnline = !Shop.OnOrOffProduct[j].OffLine; if (isOnline) { string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + Shop.OnOrOffProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); if (html.Contains("\"success\":false")) { var api = new PinduoduoApiGetProduct(Shop); html = api.SetOnline(Shop.OnOrOffProduct[j].GoodsId, false); } Shop.OnOrOffProduct[j].Message = !isOnline ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductDelTemp.Add(Shop.OnOrOffProduct[j]); LogSave.Add("自动下架", "在线产品 " + Shop.OnOrOffProduct[j].Titlte + Shop.OnOrOffProduct[j].Message); Thread.Sleep(5 * 1000); } ids.Add(Shop.OnOrOffProduct[j].GoodsId); delCount++; Shop.OnOrOffProduct[j].Message = "删除成功"; Shop.OnOrOffProduct[j].Delete = "False"; if (ids.Count >= 15) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } ids.Clear(); Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); LogSave.Add(Name, "删除成功:" + Shop.OnOrOffProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelGroupIds(ids); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductDelTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductDelTemp.Add(p); } Shop.DelGroupShop.delCount = delCount; ShopTemp.Add(Shop); } Shop.DelGroupShop.goodStatus = "删除完成"; ShopTemp.Add(Shop); LogSave.Add(Name, "删除完成"); } public void GetDelArrangeProduct() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); List ids = new List(); Shop.ArrangeShop.goodsCount = Shop.OnOrOffArrProduct.Count; ArrangeShopTemp.Add(Shop); for (int j = 0; j < Shop.OnOrOffArrProduct.Count; j++) { //if (delCount >= UploadPinduoduoMain.DelCount) // break; //if (Shop.OnOrOffArrProduct[j].Delete == "False") // continue; isOnline = !Shop.OnOrOffArrProduct[j].OffLine; if (isOnline) { string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; string refere = "https://mms.pinduoduo.com/"; string data = "{\"goodsId\":" + Shop.OnOrOffArrProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); Shop.OnOrOffArrProduct[j].Message = !isOnline ? "上架成功" : "下架成功"; UploadPinduoduoMain.ProductArrangeTemp.Add(Shop.OnOrOffArrProduct[j]); LogSave.Add("店铺整理", "在线产品 " + Shop.OnOrOffArrProduct[j].Titlte + Shop.OnOrOffArrProduct[j].Message); Thread.Sleep(5 * 1000); } ids.Add(Shop.OnOrOffArrProduct[j].GoodsId); delCount++; Shop.OnOrOffArrProduct[j].Message = "删除成功"; Shop.OnOrOffArrProduct[j].Delete = "False"; if (ids.Count >= 15) { string html = DelGroupIds(ids); Shop.ArrangeShop.delCount = delCount; ArrangeShopTemp.Add(Shop); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffArrProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductArrangeTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductArrangeTemp.Add(p); } ids.Clear(); //DelGroupStatus delstatus = new DelGroupStatus(); //delstatus.shopName = Shop.ShopName; //delstatus.count = delCount; //UploadPinduoduoMain.delGroupStatusList.Add(delstatus); LogSave.Add(Name, "删除成功:" + Shop.OnOrOffArrProduct[j].GoodsId); Thread.Sleep(2000); } } if (ids.Count > 0) { string html = DelGroupIds(ids); Shop.ArrangeShop.delCount = delCount; ArrangeShopTemp.Add(Shop); if (html.Contains("删除量上限")) { LogSave.Add(Name, "今日删除商品已达上限:" + Shop.ShopName); for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffArrProduct.Find(sp => sp.GoodsId == ids[i]); p.Message = " "; UploadPinduoduoMain.ProductArrangeTemp.Add(p); } return; } for (int i = 0; i < ids.Count; i++) { var p = Shop.OnOrOffArrProduct.Find(sp => sp.GoodsId == ids[i]); UploadPinduoduoMain.ProductArrangeTemp.Add(p); } //DelGroupStatus delstatus = new DelGroupStatus(); //delstatus.shopName = Shop.ShopName; //delstatus.count = delCount; //UploadPinduoduoMain.delGroupStatusList.Add(delstatus); } Shop.ArrangeShop.goodStatus = "删除完成"; ArrangeShopTemp.Add(Shop); LogSave.Add(Name, "删除完成"); } public int resCount = 0; public void GetRestoreProduct() { string url = "https://mms.pinduoduo.com/plutus/api/plutus/bin/goods/query"; string refere = "https://mms.pinduoduo.com/goods/goods_recycle"; string data = "{\"mall_id\":" + Shop.MallId + ",\"limit\":10,\"offset\":0}"; string html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data, Shop.Cookies); int allCount = BaseRegex.GetIntJson(ref html, "total"); Shop.ClearNoVisitShop.resCount = allCount; ClearProductGroup.ShopTemp.Add(Shop); int page = allCount / 10 + (allCount % 10 > 0 ? 1 : 0); // 读取商品 List pList = new List(); for (int i = 1; i <= page; i++) { if (ClearProductGroup.IsGoodCount && resCount >= ClearProductGroup.GoodCount) break; if (i != 1) { data = "{\"mall_id\":" + Shop.MallId + ",\"limit\":10,\"offset\":" + (i - 1) * 10 + "}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, Shop.Cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, Shop.Cookies); } var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { if (ClearProductGroup.IsGoodCount && resCount >= ClearProductGroup.GoodCount) break; string list = m[j].Groups[0].Value; long GoodsId = BaseRegex.GetLongJson(ref list, "goods_id"); long mall_id = BaseRegex.GetLongJson(ref list, "mall_id"); int status = BaseRegex.GetIntJson(ref list, "status"); if (status == 1)//已经恢复了 continue; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = GoodsId; p.ShopName = Shop.ShopName; string title = BaseRegex.GetStringJson(ref list, "goods_name"); if (string.IsNullOrEmpty(title)) continue; p.Titlte = GetHtml.Decode(title); p.Message = "恢复商品失败"; pList.Add(p); resCount++; } Thread.Sleep(2000 + Randomx.GetId(2000)); LogSave.Add(Name, "读取回收站产品 " + Shop.ShopName + ",分页:" + i); } // 还原商品 int currentResCount = 0; for (int i = 1; i <= resCount; i++) { if (ClearProductGroup.IsGoodCount && currentResCount >= ClearProductGroup.GoodCount) break; currentResCount = i; var p = pList[i - 1]; var mall_id = Shop.MallId; var goods_id = p.GoodsId; string urlx = "https://mms.pinduoduo.com/plutus/api/plutus/bin/goods/recover"; string referex = "https://mms.pinduoduo.com/goods/goods_recycle"; string datax = "{\"goods_id\":" + goods_id + ",\"mall_id\":" + mall_id + ",\"operator\":\"\",\"operator_id\":0,\"recover_type\":\"5\",\"recover_desc\":\"内部人员恶意删除\"}"; string htmlx = GetPostTaobaoHtml.GetJsonPost(urlx, referex, true, datax, Shop.Cookies); var api = new PinduoduoApiGetProduct(Shop); htmlx = api.SetOnline(goods_id, true); if (htmlx.Contains("{\"is_success\":true")) p.Message = "恢复商品成功"; else LogSave.Add("恢复商品失败" + goods_id + " || " + htmlx); UploadPinduoduoMain.RestoreProduct.Add(p); Shop.ClearNoVisitShop.goodStatus = "还原第" + i + "个"; ClearProductGroup.ShopTemp.Add(Shop); Thread.Sleep(2500 + Randomx.GetId(1000)); } Shop.ClearNoVisitShop.goodStatus = "还原第" + currentResCount + "个(完成)"; ClearProductGroup.ShopTemp.Add(Shop); LogSave.Add(Name, "还原商品完成"); } public int totalCount = 0; public void GetDownGood() { if (string.IsNullOrEmpty(PinduoduoAuth.strContent)) { PinduoduoAuth.strContent = GetVisitProductNew.strJs;//FileBase.ReadAllText(path); } string NoCode = ""; string strTime = BaseClass.GetTime(DateTime.Now).ToString() + "000"; if (string.IsNullOrEmpty(NoCode)) { string htmlx = GetHtml.Gbk("http://nano.qixiaoke.com/nano.txt"); NoCode = BaseRegex.GetMatchRegexString(ref htmlx, @"([\w\W]+?)-----"); } string fun2 = string.Format(@"getEncode('{0}','{1}','{2}')", strTime, NoCode, ""); string codex = UploadPinduoduoSet.ExecuteScript(fun2, PinduoduoAuth.strContent); List ids = new List(); for (int j = 0; j < Shop.OnOrOffArrProduct.Count; j++) { if (isOnline) { if (Shop.OnOrOffArrProduct[j].OffLine) continue; } if (!isOnline) { if (!Shop.OnOrOffArrProduct[j].OffLine) continue; } ids.Add(Shop.OnOrOffArrProduct[j].GoodsId); totalCount++; if (ids.Count >= 15) { if (isOnline) OffShop(ids); else OnShop(ids); ids.Clear(); Thread.Sleep(10 * 1000); } if (isOnline) Shop.ArrangeShop.offCount = totalCount; else Shop.ArrangeShop.onCount = totalCount; ArrangeShopTemp.Add(Shop); //var api = new PinduoduoApiGetProduct(Shop); ////string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/onSale"; ////if (isOnline) //// urlx = "https://mms.pinduoduo.com/vodka/v2/mms/pc/offSale"; ////string refere = "https://mms.pinduoduo.com/"; ////string data = "{\"goodsId\":" + Shop.OnOrOffArrProduct[j].GoodsId + ",\"crawlerInfo\":\"" + codex + "\"}"; ////string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); ////Shop.OnOrOffArrProduct[j].Message = "上架成功"; ////LogSave.Add(Name, "上架成功:" + Shop.OnOrOffArrProduct[j].GoodsId); ////if (isOnline) ////{ //// Shop.OnOrOffArrProduct[j].Message = "下架成功"; //// LogSave.Add(Name, "下架成功:" + Shop.OnOrOffArrProduct[j].GoodsId); ////} ////UploadPinduoduoMain.ProductArrangeTemp.Add(Shop.OnOrOffArrProduct[j]); ////Thread.Sleep(5*1000); } if (ids.Count > 0) { if (isOnline) OffShop(ids); else OnShop(ids); ids.Clear(); if (isOnline) Shop.ArrangeShop.offCount = totalCount; else Shop.ArrangeShop.onCount = totalCount; ArrangeShopTemp.Add(Shop); } } public void OnShop(List ids) { if (ids.Count == 0) return; StringBuilder pids = new StringBuilder(); for (int i = 0; i < ids.Count; i++) { pids.Append("," + ids[i]); } string GoodsId = pids.ToString(1, pids.Length - 1); string codex = ""; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} string data = "{\"goodsIds\":[" + GoodsId + "],\"crawlerInfo\":\"" + codex + "\"}"; string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/batchOnSale"; string refere = "https://mms.pinduoduo.com"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); if (html.Contains("{\"success\":true")) { string[] l = GoodsId.Split(','); foreach (string s in l) { var good = Shop.OnOrOffArrProduct.Find(p => p.GoodsId == long.Parse(s)); good.Message = "上架成功"; UploadPinduoduoMain.ProductArrangeTemp.Add(good); LogSave.Add(Name, "上架产品成功:" + s); } return; } } public void OffShop(List ids) { if (ids.Count == 0) return; StringBuilder pids = new StringBuilder(); for (int i = 0; i < ids.Count; i++) { pids.Append("," + ids[i]); } string GoodsId = pids.ToString(1, pids.Length - 1); string codex = ""; //using (IJsEngine jsEngine = new V8JsEngine()) //{ // jsEngine.Execute(GetProductOnlineClass.JsCodeGetSms); // codex = jsEngine.CallFunction("aaa", "").ToString(); //} string data = "{\"goodsIds\":[" + GoodsId + "],\"crawlerInfo\":\"" + codex + "\"}"; string urlx = "https://mms.pinduoduo.com/vodka/v2/mms/batchOffSale"; string refere = "https://mms.pinduoduo.com"; string html = GetPostTaobaoHtml.UploadTaobaoPost(urlx, refere, true, data, Shop.Cookies); if (html.Contains("{\"success\":true")) { string[] l = GoodsId.Split(','); foreach (string s in l) { var good = Shop.OnOrOffArrProduct.Find(p => p.GoodsId == long.Parse(s)); good.Message = "下架成功"; UploadPinduoduoMain.ProductArrangeTemp.Add(good); LogSave.Add(Name, "下架产品成功:" + s); } return; } } public void GetNonAdvanceOnline() { Shop.OnlineProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_pre_sale\":0,\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } //PinduoduoApiGetProduct currentPDDApiGet = new PinduoduoApiGetProduct(Shop); for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } try { var obj = JsonConvert.DeserializeObject(html); for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) { var goodInfo = obj.result.goods_list[j]; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = goodInfo.id; p.GoodsSn = long.Parse(goodInfo.goods_sn); p.Titlte = goodInfo.goods_name; p.CatId = goodInfo.cat_id; p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = goodInfo.sold_quantity; p.ShopName = Shop.ShopName; string price = goodInfo.sku_group_price[0].ToString(); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } p.OffLine = !isOnline; //string htmlx =currentPDDApiGet.GetProduct(p.GoodsId); //string isPreSale = BaseRegex.GetStringJson(ref htmlx, "is_pre_sale"); //Thread.Sleep(1000); //if (isPreSale == "1") // continue; //string urlx = BaseClass.NewUrl+"/goods.html?goods_id=" + p.GoodsId; //string referex = "https://mms.pinduoduo.com/Pdd.html"; //string htmlx = GetPostTaobaoHtml.UploadTaobao(urlx, referex, true, cookies); //string goodsName = BaseRegex.GetStringJson(ref htmlx, "goodsName"); if (ReplaceModel) { if (p.SaleCount > 0 && UploadPinduoduoMain.NoSold) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } UploadPinduoduoMain.ProductReplaceTemp.Add(p); } if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnlineProduct.Add(p); } } catch { var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) { var c = PinduoduoCatList.CatIds[p.CatId]; p.Cat1 = c.cat1; p.Cat2 = c.cat2; p.Cat3 = c.cat3; p.Cat4 = c.cat4; p.MainCatId = c.main_cat_id; } else { } var mc = BaseRegex.GetMatchRegex(ref list, @"""is_onsale"":([\w\W]+?),"); if (mc == null || mc.Count <= 0) continue; p.OffLine = !bool.Parse(mc[0].Groups[1].Value); //string htmlx = currentPDDApiGet.GetProduct(p.GoodsId); //string isPreSale = BaseRegex.GetStringJson(ref htmlx, "is_pre_sale"); //Thread.Sleep(1000); //if (isPreSale == "1") // continue; if (ReplaceModel) { if (p.SaleCount > 0) { LogSave.Add(Name, "跳过销量商品 " + p.GoodsId); continue; } UploadPinduoduoMain.ProductReplaceTemp.Add(p); } if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnlineProduct.Add(p); } } Thread.Sleep(300); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); } public void GetAllShopOnline() { Shop.OnlineProduct.Clear(); int mallId = Shop.MallId; string cookies = Shop.Cookies, shopName = Shop.ShopName; string url = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; string refere = "https://mms.pinduoduo.com/Pdd.html"; string data = "{\"order_by\":\"id:desc\",\"is_pre_sale\":0,\"is_onsale\":" + (isOnline ? 1 : 0) + ",\"size\":100,\"page\":#page#,\"mall_id\":" + mallId + "}"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data.Replace("#page#", "1"), cookies); } int allCount = BaseRegex.GetIntJson(ref html, "total"); int page = allCount / 100 + (allCount % 100 > 0 ? 1 : 0); if (page > 1000) { page = 1000; } for (int i = 0; i < page; i++) { if (i != 0) { html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } if (string.IsNullOrEmpty(html) || !html.Contains("total")) { Thread.Sleep(30 * 1000); html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, data.Replace("#page#", (i + 1).ToString()), cookies); } } //try //{ // var obj = JsonConvert.DeserializeObject(html); // for (int j = 0; obj != null && j < obj.result.goods_list.Count; j++) // { // var goodInfo = obj.result.goods_list[j]; // TaobaoProductBase p = new TaobaoProductBase(); // p.GoodsId = goodInfo.id; // p.GoodsSn = long.Parse(goodInfo.goods_sn); // p.Titlte = goodInfo.goods_name; // p.CatId = goodInfo.cat_id; // p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); // p.SaleCount = goodInfo.sold_quantity; // p.ShopName = Shop.ShopName; // string price = goodInfo.sku_group_price[0].ToString(); // if (string.IsNullOrEmpty(price)) // price = "1000"; // p.Price = int.Parse(price) / 100m; // if (PinduoduoCatList.CatIds.ContainsKey(p.CatId)) // { // var c = PinduoduoCatList.CatIds[p.CatId]; // p.Cat1 = c.cat1; // p.Cat2 = c.cat2; // p.Cat3 = c.cat3; // p.Cat4 = c.cat4; // p.MainCatId = c.main_cat_id; // } // else // { // } // p.OffLine = !isOnline; // UploadPinduoduoMain.ProductReplaceTemp.Add(p); // if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) // Shop.OnlineProduct.Add(p); // } //} //catch //{ var m = BaseRegex.GetMatchRegex(ref html, @"\{([\w\W]+?)\}"); for (int j = 0; m != null && j < m.Count; j++) { string list = m[j].Groups[0].Value; TaobaoProductBase p = new TaobaoProductBase(); p.GoodsId = BaseRegex.GetLongJson(ref list, "id"); p.GoodsSn = BaseRegex.GetLongJson(ref list, "goods_sn"); p.Titlte = BaseRegex.GetStringJson(ref list, "goods_name"); p.CatId = BaseRegex.GetIntJson(ref list, "cat_id"); p.CatId = PinduoduoCatList.GetNewCat3(p.CatId); p.SaleCount = BaseRegex.GetIntJson(ref list, "sold_quantity"); p.ShopName = Shop.ShopName; string price = BaseRegex.GetMatchRegexString(ref list, @"""sku_group_price"":\[([\d]+),"); if (string.IsNullOrEmpty(price)) price = "1000"; p.Price = int.Parse(price) / 100m; if (!Shop.OnlineProduct.Exists(pt => pt != null && pt.GoodsId == p.GoodsId)) Shop.OnlineProduct.Add(p); } //} Thread.Sleep(1000); LogSave.Add(Name, "获取在线产品 " + shopName + ",分页:" + i); } LogSave.Add(Name, "获取完成"); UploadShopControl.endAdvanceTime = endAdvanceTime; new UploadShopControl(Name, Shop, true).SetAdvanceSale(); } #region 获取codex public static string JsCodeGetSms = @"if (typeof Array.prototype.map != ""function"") { Array.prototype.map = function (fn, context) { var arr = []; if (typeof fn === ""function"") { for (var k = 0, length = this.length; k < length; k++) { arr.push(fn.call(context, this[k], k, this)); } } return arr; }; } T=""init"";N=""data"";E=""forEach""; var n_0=function(){ var t={}; var a = ""function"" == typeof Symbol && ""symbol"" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && ""function"" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? ""symbol"" : typeof e } , r = ""undefined"" != typeof Uint8Array && ""undefined"" != typeof Uint16Array && ""undefined"" != typeof Int32Array; function i(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } t.assign = function(e) { for (var t = Array.prototype.slice.call(arguments, 1); t.length; ) { var n = t.shift(); if (n) { if (""object"" !== (void 0 === n ? ""undefined"" : a(n))) throw new TypeError(n + ""must be non-object""); for (var r in n) i(n, r) && (e[r] = n[r]) } } return e } , t.shrinkBuf = function(e, t) { return e.length === t ? e : e.subarray ? e.subarray(0, t) : (e.length = t, e) } ; var o = { arraySet: function(e, t, n, a, r) { if (t.subarray && e.subarray) e.set(t.subarray(n, n + a), r); else for (var i = 0; i < a; i++) e[r + i] = t[n + i] }, flattenChunks: function(e) { var t, n, a, r, i, o; for (a = 0, t = 0, n = e.length; t < n; t++) a += e[t].length; for (o = new Uint8Array(a), r = 0, t = 0, n = e.length; t < n; t++) i = e[t], o.set(i, r), r += i.length; return o } } , s = { arraySet: function(e, t, n, a, r) { for (var i = 0; i < a; i++) e[r + i] = t[n + i] }, flattenChunks: function(e) { return [].concat.apply([], e) } }; t.setTyped = function(e) { e ? (t.Buf8 = Uint8Array, t.Buf16 = Uint16Array, t.Buf32 = Int32Array, t.assign(t, o)) : (t.Buf8 = Array, t.Buf16 = Array, t.Buf32 = Array, t.assign(t, s)) } , t.setTyped(r) return t }() var n_11=function(){ var a = n_0; function r(e) { for (var t = e.length; --t >= 0; ) e[t] = 0 } var i = 0 , o = 256 , s = o + 1 + 29 , c = 30 , l = 19 , u = 2 * s + 1 , d = 15 , p = 16 , h = 256 , f = 16 , m = 17 , g = 18 , v = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] , y = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] , _ = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] , b = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] , w = new Array(2 * (s + 2)); r(w); var S = new Array(2 * c); r(S); var C = new Array(512); r(C); var A = new Array(256); r(A); var I = new Array(29); r(I); var E, k, T, N = new Array(c); function D(e, t, n, a, r) { this.static_tree = e, this.extra_bits = t, this.extra_base = n, this.elems = a, this.max_length = r, this.has_stree = e && e.length } function x(e, t) { this.dyn_tree = e, this.max_code = 0, this.stat_desc = t } function L(e) { return e < 256 ? C[e] : C[256 + (e >>> 7)] } function R(e, t) { e.pending_buf[e.pending++] = 255 & t, e.pending_buf[e.pending++] = t >>> 8 & 255 } function P(e, t, n) { e.bi_valid > p - n ? (e.bi_buf |= t << e.bi_valid & 65535, R(e, e.bi_buf), e.bi_buf = t >> p - e.bi_valid, e.bi_valid += n - p) : (e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += n) } function O(e, t, n) { P(e, n[2 * t], n[2 * t + 1]) } function U(e, t) { var n = 0; do { n |= 1 & e, e >>>= 1, n <<= 1 } while (--t > 0);return n >>> 1 } function M(e, t, n) { var a, r, i = new Array(d + 1), o = 0; for (a = 1; a <= d; a++) i[a] = o = o + n[a - 1] << 1; for (r = 0; r <= t; r++) { var s = e[2 * r + 1]; 0 !== s && (e[2 * r] = U(i[s]++, s)) } } function B(e) { var t; for (t = 0; t < s; t++) e.dyn_ltree[2 * t] = 0; for (t = 0; t < c; t++) e.dyn_dtree[2 * t] = 0; for (t = 0; t < l; t++) e.bl_tree[2 * t] = 0; e.dyn_ltree[2 * h] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0 } function W(e) { e.bi_valid > 8 ? R(e, e.bi_buf) : e.bi_valid > 0 && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0 } function V(e, t, n, a) { var r = 2 * t , i = 2 * n; return e[r] < e[i] || e[r] === e[i] && a[t] <= a[n] } function Q(e, t, n) { for (var a = e.heap[n], r = n << 1; r <= e.heap_len && (r < e.heap_len && V(t, e.heap[r + 1], e.heap[r], e.depth) && r++, !V(t, a, e.heap[r], e.depth)); ) e.heap[n] = e.heap[r], n = r, r <<= 1; e.heap[n] = a } function q(e, t, n) { var a, r, i, s, c = 0; if (0 !== e.last_lit) do { a = e.pending_buf[e.d_buf + 2 * c] << 8 | e.pending_buf[e.d_buf + 2 * c + 1], r = e.pending_buf[e.l_buf + c], c++, 0 === a ? O(e, r, t) : (O(e, (i = A[r]) + o + 1, t), 0 !== (s = v[i]) && P(e, r -= I[i], s), O(e, i = L(--a), n), 0 !== (s = y[i]) && P(e, a -= N[i], s)) } while (c < e.last_lit);O(e, h, t) } function F(e, t) { var n, a, r, i = t.dyn_tree, o = t.stat_desc.static_tree, s = t.stat_desc.has_stree, c = t.stat_desc.elems, l = -1; for (e.heap_len = 0, e.heap_max = u, n = 0; n < c; n++) 0 !== i[2 * n] ? (e.heap[++e.heap_len] = l = n, e.depth[n] = 0) : i[2 * n + 1] = 0; for (; e.heap_len < 2; ) i[2 * (r = e.heap[++e.heap_len] = l < 2 ? ++l : 0)] = 1, e.depth[r] = 0, e.opt_len--, s && (e.static_len -= o[2 * r + 1]); for (t.max_code = l, n = e.heap_len >> 1; n >= 1; n--) Q(e, i, n); r = c; do { n = e.heap[1], e.heap[1] = e.heap[e.heap_len--], Q(e, i, 1), a = e.heap[1], e.heap[--e.heap_max] = n, e.heap[--e.heap_max] = a, i[2 * r] = i[2 * n] + i[2 * a], e.depth[r] = (e.depth[n] >= e.depth[a] ? e.depth[n] : e.depth[a]) + 1, i[2 * n + 1] = i[2 * a + 1] = r, e.heap[1] = r++, Q(e, i, 1) } while (e.heap_len >= 2);e.heap[--e.heap_max] = e.heap[1], function(e, t) { var n, a, r, i, o, s, c = t.dyn_tree, l = t.max_code, p = t.stat_desc.static_tree, h = t.stat_desc.has_stree, f = t.stat_desc.extra_bits, m = t.stat_desc.extra_base, g = t.stat_desc.max_length, v = 0; for (i = 0; i <= d; i++) e.bl_count[i] = 0; for (c[2 * e.heap[e.heap_max] + 1] = 0, n = e.heap_max + 1; n < u; n++) (i = c[2 * c[2 * (a = e.heap[n]) + 1] + 1] + 1) > g && (i = g, v++), c[2 * a + 1] = i, a > l || (e.bl_count[i]++, o = 0, a >= m && (o = f[a - m]), s = c[2 * a], e.opt_len += s * (i + o), h && (e.static_len += s * (p[2 * a + 1] + o))); if (0 !== v) { do { for (i = g - 1; 0 === e.bl_count[i]; ) i--; e.bl_count[i]--, e.bl_count[i + 1] += 2, e.bl_count[g]--, v -= 2 } while (v > 0);for (i = g; 0 !== i; i--) for (a = e.bl_count[i]; 0 !== a; ) (r = e.heap[--n]) > l || (c[2 * r + 1] !== i && (e.opt_len += (i - c[2 * r + 1]) * c[2 * r], c[2 * r + 1] = i), a--) } }(e, t), M(i, l, e.bl_count) } function G(e, t, n) { var a, r, i = -1, o = t[1], s = 0, c = 7, l = 4; for (0 === o && (c = 138, l = 3), t[2 * (n + 1) + 1] = 65535, a = 0; a <= n; a++) r = o, o = t[2 * (a + 1) + 1], ++s < c && r === o || (s < l ? e.bl_tree[2 * r] += s : 0 !== r ? (r !== i && e.bl_tree[2 * r]++, e.bl_tree[2 * f]++) : s <= 10 ? e.bl_tree[2 * m]++ : e.bl_tree[2 * g]++, s = 0, i = r, 0 === o ? (c = 138, l = 3) : r === o ? (c = 6, l = 3) : (c = 7, l = 4)) } function H(e, t, n) { var a, r, i = -1, o = t[1], s = 0, c = 7, l = 4; for (0 === o && (c = 138, l = 3), a = 0; a <= n; a++) if (r = o, o = t[2 * (a + 1) + 1], !(++s < c && r === o)) { if (s < l){ do { O(e, r, e.bl_tree) } while (0 != --s); }else{ 0 !== r ? (r !== i && (O(e, r, e.bl_tree), s--), O(e, f, e.bl_tree), P(e, s - 3, 2)) : s <= 10 ? (O(e, m, e.bl_tree), P(e, s - 3, 3)) : (O(e, g, e.bl_tree), P(e, s - 11, 7)); } s = 0, i = r, 0 === o ? (c = 138, l = 3) : r === o ? (c = 6, l = 3) : (c = 7, l = 4) } } r(N); var j = !1; function K(e, t, n, r) { P(e, (i << 1) + (r ? 1 : 0), 3), function(e, t, n, r) { W(e), R(e, n), R(e, ~n), a.arraySet(e.pending_buf, e.window, t, n, e.pending), e.pending += n }(e, t, n) } var t={}; t._tr_init = function(e) { j || (function() { var e, t, n, a, r, i = new Array(d + 1); for (n = 0, a = 0; a < 28; a++) for (I[a] = n, e = 0; e < 1 << v[a]; e++) A[n++] = a; for (A[n - 1] = a, r = 0, a = 0; a < 16; a++) for (N[a] = r, e = 0; e < 1 << y[a]; e++) C[r++] = a; for (r >>= 7; a < c; a++) for (N[a] = r << 7, e = 0; e < 1 << y[a] - 7; e++) C[256 + r++] = a; for (t = 0; t <= d; t++) i[t] = 0; for (e = 0; e <= 143; ) w[2 * e + 1] = 8, e++, i[8]++; for (; e <= 255; ) w[2 * e + 1] = 9, e++, i[9]++; for (; e <= 279; ) w[2 * e + 1] = 7, e++, i[7]++; for (; e <= 287; ) w[2 * e + 1] = 8, e++, i[8]++; for (M(w, s + 1, i), e = 0; e < c; e++) S[2 * e + 1] = 5, S[2 * e] = U(e, 5); E = new D(w,v,o + 1,s,d), k = new D(S,y,0,c,d), T = new D(new Array(0),_,0,l,7) }(), j = !0), e.l_desc = new x(e.dyn_ltree,E), e.d_desc = new x(e.dyn_dtree,k), e.bl_desc = new x(e.bl_tree,T), e.bi_buf = 0, e.bi_valid = 0, B(e) } , t._tr_stored_block = K, t._tr_flush_block = function(e, t, n, a) { var r, i, s = 0; e.level > 0 ? (2 === e.strm.data_type && (e.strm.data_type = function(e) { var t, n = 4093624447; for (t = 0; t <= 31; t++, n >>>= 1) if (1 & n && 0 !== e.dyn_ltree[2 * t]) return 0; if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return 1; for (t = 32; t < o; t++) if (0 !== e.dyn_ltree[2 * t]) return 1; return 0 }(e)), F(e, e.l_desc), F(e, e.d_desc), s = function(e) { var t; for (G(e, e.dyn_ltree, e.l_desc.max_code), G(e, e.dyn_dtree, e.d_desc.max_code), F(e, e.bl_desc), t = l - 1; t >= 3 && 0 === e.bl_tree[2 * b[t] + 1]; t--) ; return e.opt_len += 3 * (t + 1) + 5 + 5 + 4, t }(e), r = e.opt_len + 3 + 7 >>> 3, (i = e.static_len + 3 + 7 >>> 3) <= r && (r = i)) : r = i = n + 5, n + 4 <= r && -1 !== t ? K(e, t, n, a) : 4 === e.strategy || i === r ? (P(e, 2 + (a ? 1 : 0), 3), q(e, w, S)) : (P(e, 4 + (a ? 1 : 0), 3), function(e, t, n, a) { var r; for (P(e, t - 257, 5), P(e, n - 1, 5), P(e, a - 4, 4), r = 0; r < a; r++) P(e, e.bl_tree[2 * b[r] + 1], 3); H(e, e.dyn_ltree, t - 1), H(e, e.dyn_dtree, n - 1) }(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, s + 1), q(e, e.dyn_ltree, e.dyn_dtree)), B(e), a && W(e) } , t._tr_tally = function(e, t, n) { return e.pending_buf[e.d_buf + 2 * e.last_lit] = t >>> 8 & 255, e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t, e.pending_buf[e.l_buf + e.last_lit] = 255 & n, e.last_lit++, 0 === t ? e.dyn_ltree[2 * n]++ : (e.matches++, t--, e.dyn_ltree[2 * (A[n] + o + 1)]++, e.dyn_dtree[2 * L(t)]++), e.last_lit === e.lit_bufsize - 1 } , t._tr_align = function(e) { P(e, 2, 3), O(e, h, w), function(e) { 16 === e.bi_valid ? (R(e, e.bi_buf), e.bi_buf = 0, e.bi_valid = 0) : e.bi_valid >= 8 && (e.pending_buf[e.pending++] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8) }(e) } return t }() var n_3=function(){ return {""0"":"""",""1"":""stream end"",""2"":""need dictionary"",""-1"":""file error"",""-2"":""stream error"",""-3"":""data error"",""-4"":""insufficient memory"",""-5"":""buffer error"",""-6"":""incompatible version""} }() var n_12=function(e, t, n, a){ for (var r = 65535 & e | 0, i = e >>> 16 & 65535 | 0, o = 0; 0 !== n; ) { n -= o = n > 2e3 ? 2e3 : n; do { i = i + (r = r + t[a++] | 0) | 0 } while (--o);r %= 65521, i %= 65521 } return r | i << 16 | 0 } var n_13=function(e,t,n,r){ var i=a,o=r+n;e^=-1;for(var s=r;s>>8^i[255&(e^t[s])];return-1^e } var n_10=function(){ var a, r = n_0, i = n_11, o = n_12, s = n_13, c = n_3, l = 0, u = 4, d = 0, p = -2, h = -1, f = 1, m = 4, g = 2, v = 8, y = 9, _ = 286, b = 30, w = 19, S = 2 * _ + 1, C = 15, A = 3, I = 258, E = I + A + 1, k = 42, T = 103, N = 113, D = 666, x = 1, L = 2, R = 3, P = 4; function O(e, t) { return e.msg = c[t], t } function U(e) { return (e << 1) - (e > 4 ? 9 : 0) } function M(e) { for (var t = e.length; --t >= 0; ) e[t] = 0 } function B(e) { var t = e.state , n = t.pending; n > e.avail_out && (n = e.avail_out), 0 !== n && (r.arraySet(e.output, t.pending_buf, t.pending_out, n, e.next_out), e.next_out += n, t.pending_out += n, e.total_out += n, e.avail_out -= n, t.pending -= n, 0 === t.pending && (t.pending_out = 0)) } function W(e, t) { i._tr_flush_block(e, e.block_start >= 0 ? e.block_start : -1, e.strstart - e.block_start, t), e.block_start = e.strstart, B(e.strm) } function V(e, t) { e.pending_buf[e.pending++] = t } function Q(e, t) { e.pending_buf[e.pending++] = t >>> 8 & 255, e.pending_buf[e.pending++] = 255 & t } function q(e, t) { var n, a, r = e.max_chain_length, i = e.strstart, o = e.prev_length, s = e.nice_match, c = e.strstart > e.w_size - E ? e.strstart - (e.w_size - E) : 0, l = e.window, u = e.w_mask, d = e.prev, p = e.strstart + I, h = l[i + o - 1], f = l[i + o]; e.prev_length >= e.good_match && (r >>= 2), s > e.lookahead && (s = e.lookahead); do { if (l[(n = t) + o] === f && l[n + o - 1] === h && l[n] === l[i] && l[++n] === l[i + 1]) { i += 2, n++; do {} while (l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && l[++i] === l[++n] && i < p);if (a = I - (p - i), i = p - I, a > o) { if (e.match_start = t, o = a, a >= s) break; h = l[i + o - 1], f = l[i + o] } } } while ((t = d[t & u]) > c && 0 != --r);return o <= e.lookahead ? o : e.lookahead } function F(e) { var t, n, a, i, c, l, u, d, p, h, f = e.w_size; do { if (i = e.window_size - e.lookahead - e.strstart, e.strstart >= f + (f - E)) { r.arraySet(e.window, e.window, f, f, 0), e.match_start -= f, e.strstart -= f, e.block_start -= f, t = n = e.hash_size; do { a = e.head[--t], e.head[t] = a >= f ? a - f : 0 } while (--n);t = n = f; do { a = e.prev[--t], e.prev[t] = a >= f ? a - f : 0 } while (--n);i += f } if (0 === e.strm.avail_in) break; if (l = e.strm, u = e.window, d = e.strstart + e.lookahead, p = i, h = void 0, (h = l.avail_in) > p && (h = p), n = 0 === h ? 0 : (l.avail_in -= h, r.arraySet(u, l.input, l.next_in, h, d), 1 === l.state.wrap ? l.adler = o(l.adler, u, h, d) : 2 === l.state.wrap && (l.adler = s(l.adler, u, h, d)), l.next_in += h, l.total_in += h, h), e.lookahead += n, e.lookahead + e.insert >= A) for (c = e.strstart - e.insert, e.ins_h = e.window[c], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[c + 1]) & e.hash_mask; e.insert && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[c + A - 1]) & e.hash_mask, e.prev[c & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = c, c++, e.insert--, !(e.lookahead + e.insert < A)); ) ; } while (e.lookahead < E && 0 !== e.strm.avail_in) } function G(e, t) { for (var n, a; ; ) { if (e.lookahead < E) { if (F(e), e.lookahead < E && t === l) return x; if (0 === e.lookahead) break } if (n = 0, e.lookahead >= A && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + A - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 !== n && e.strstart - n <= e.w_size - E && (e.match_length = q(e, n)), e.match_length >= A) if (a = i._tr_tally(e, e.strstart - e.match_start, e.match_length - A), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= A) { e.match_length--; do { e.strstart++, e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + A - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart } while (0 != --e.match_length);e.strstart++ } else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[e.strstart], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 1]) & e.hash_mask; else a = i._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++; if (a && (W(e, !1), 0 === e.strm.avail_out)) return x } return e.insert = e.strstart < A - 1 ? e.strstart : A - 1, t === u ? (W(e, !0), 0 === e.strm.avail_out ? R : P) : e.last_lit && (W(e, !1), 0 === e.strm.avail_out) ? x : L } function H(e, t) { for (var n, a, r; ; ) { if (e.lookahead < E) { if (F(e), e.lookahead < E && t === l) return x; if (0 === e.lookahead) break } if (n = 0, e.lookahead >= A && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + A - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = A - 1, 0 !== n && e.prev_length < e.max_lazy_match && e.strstart - n <= e.w_size - E && (e.match_length = q(e, n), e.match_length <= 5 && (e.strategy === f || e.match_length === A && e.strstart - e.match_start > 4096) && (e.match_length = A - 1)), e.prev_length >= A && e.match_length <= e.prev_length) { r = e.strstart + e.lookahead - A, a = i._tr_tally(e, e.strstart - 1 - e.prev_match, e.prev_length - A), e.lookahead -= e.prev_length - 1, e.prev_length -= 2; do { ++e.strstart <= r && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + A - 1]) & e.hash_mask, n = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart) } while (0 != --e.prev_length);if (e.match_available = 0, e.match_length = A - 1, e.strstart++, a && (W(e, !1), 0 === e.strm.avail_out)) return x } else if (e.match_available) { if ((a = i._tr_tally(e, 0, e.window[e.strstart - 1])) && W(e, !1), e.strstart++, e.lookahead--, 0 === e.strm.avail_out) return x } else e.match_available = 1, e.strstart++, e.lookahead-- } return e.match_available && (a = i._tr_tally(e, 0, e.window[e.strstart - 1]), e.match_available = 0), e.insert = e.strstart < A - 1 ? e.strstart : A - 1, t === u ? (W(e, !0), 0 === e.strm.avail_out ? R : P) : e.last_lit && (W(e, !1), 0 === e.strm.avail_out) ? x : L } function j(e, t, n, a, r) { this.good_length = e, this.max_lazy = t, this.nice_length = n, this.max_chain = a, this.func = r } function K(e) { var t; return e && e.state ? (e.total_in = e.total_out = 0, e.data_type = g, (t = e.state).pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = t.wrap ? k : N, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = l, i._tr_init(t), d) : O(e, p) } function z(e) { var t, n = K(e); return n === d && ((t = e.state).window_size = 2 * t.w_size, M(t.head), t.max_lazy_match = a[t.level].max_lazy, t.good_match = a[t.level].good_length, t.nice_match = a[t.level].nice_length, t.max_chain_length = a[t.level].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = A - 1, t.match_available = 0, t.ins_h = 0), n } function Y(e, t, n, a, i, o) { if (!e) return p; var s = 1; if (t === h && (t = 6), a < 0 ? (s = 0, a = -a) : a > 15 && (s = 2, a -= 16), i < 1 || i > y || n !== v || a < 8 || a > 15 || t < 0 || t > 9 || o < 0 || o > m) return O(e, p); 8 === a && (a = 9); var c = new function() { this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new r.Buf16(2 * S), this.dyn_dtree = new r.Buf16(2 * (2 * b + 1)), this.bl_tree = new r.Buf16(2 * (2 * w + 1)), M(this.dyn_ltree), M(this.dyn_dtree), M(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new r.Buf16(C + 1), this.heap = new r.Buf16(2 * _ + 1), M(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new r.Buf16(2 * _ + 1), M(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 } ; return e.state = c, c.strm = e, c.wrap = s, c.gzhead = null, c.w_bits = a, c.w_size = 1 << c.w_bits, c.w_mask = c.w_size - 1, c.hash_bits = i + 7, c.hash_size = 1 << c.hash_bits, c.hash_mask = c.hash_size - 1, c.hash_shift = ~~((c.hash_bits + A - 1) / A), c.window = new r.Buf8(2 * c.w_size), c.head = new r.Buf16(c.hash_size), c.prev = new r.Buf16(c.w_size), c.lit_bufsize = 1 << i + 6, c.pending_buf_size = 4 * c.lit_bufsize, c.pending_buf = new r.Buf8(c.pending_buf_size), c.d_buf = 1 * c.lit_bufsize, c.l_buf = 3 * c.lit_bufsize, c.level = t, c.strategy = o, c.method = n, z(e) } var t={}; a = [new j(0,0,0,0,function(e, t) { var n = 65535; for (n > e.pending_buf_size - 5 && (n = e.pending_buf_size - 5); ; ) { if (e.lookahead <= 1) { if (F(e), 0 === e.lookahead && t === l) return x; if (0 === e.lookahead) break } e.strstart += e.lookahead, e.lookahead = 0; var a = e.block_start + n; if ((0 === e.strstart || e.strstart >= a) && (e.lookahead = e.strstart - a, e.strstart = a, W(e, !1), 0 === e.strm.avail_out)) return x; if (e.strstart - e.block_start >= e.w_size - E && (W(e, !1), 0 === e.strm.avail_out)) return x } return e.insert = 0, t === u ? (W(e, !0), 0 === e.strm.avail_out ? R : P) : (e.strstart > e.block_start && (W(e, !1), e.strm.avail_out), x) } ), new j(4,4,8,4,G), new j(4,5,16,8,G), new j(4,6,32,32,G), new j(4,4,16,16,H), new j(8,16,32,32,H), new j(8,16,128,128,H), new j(8,32,128,256,H), new j(32,128,258,1024,H), new j(32,258,258,4096,H)], t.deflateInit = function(e, t) { return Y(e, t, v, 15, 8, 0) } , t.deflateInit2 = Y, t.deflateReset = z, t.deflateResetKeep = K, t.deflateSetHeader = function(e, t) { return e && e.state ? 2 !== e.state.wrap ? p : (e.state.gzhead = t, d) : p } , t.deflate = function(e, t) { var n, r, o, c; if (!e || !e.state || t > 5 || t < 0) return e ? O(e, p) : p; if (r = e.state, !e.output || !e.input && 0 !== e.avail_in || r.status === D && t !== u) return O(e, 0 === e.avail_out ? -5 : p); if (r.strm = e, n = r.last_flush, r.last_flush = t, r.status === k) if (2 === r.wrap) e.adler = 0, V(r, 31), V(r, 139), V(r, 8), r.gzhead ? (V(r, (r.gzhead.text ? 1 : 0) + (r.gzhead.hcrc ? 2 : 0) + (r.gzhead.extra ? 4 : 0) + (r.gzhead.name ? 8 : 0) + (r.gzhead.comment ? 16 : 0)), V(r, 255 & r.gzhead.time), V(r, r.gzhead.time >> 8 & 255), V(r, r.gzhead.time >> 16 & 255), V(r, r.gzhead.time >> 24 & 255), V(r, 9 === r.level ? 2 : r.strategy >= 2 || r.level < 2 ? 4 : 0), V(r, 255 & r.gzhead.os), r.gzhead.extra && r.gzhead.extra.length && (V(r, 255 & r.gzhead.extra.length), V(r, r.gzhead.extra.length >> 8 & 255)), r.gzhead.hcrc && (e.adler = s(e.adler, r.pending_buf, r.pending, 0)), r.gzindex = 0, r.status = 69) : (V(r, 0), V(r, 0), V(r, 0), V(r, 0), V(r, 0), V(r, 9 === r.level ? 2 : r.strategy >= 2 || r.level < 2 ? 4 : 0), V(r, 3), r.status = N); else { var h = v + (r.w_bits - 8 << 4) << 8; h |= (r.strategy >= 2 || r.level < 2 ? 0 : r.level < 6 ? 1 : 6 === r.level ? 2 : 3) << 6, 0 !== r.strstart && (h |= 32), h += 31 - h % 31, r.status = N, Q(r, h), 0 !== r.strstart && (Q(r, e.adler >>> 16), Q(r, 65535 & e.adler)), e.adler = 1 } if (69 === r.status) if (r.gzhead.extra) { for (o = r.pending; r.gzindex < (65535 & r.gzhead.extra.length) && (r.pending !== r.pending_buf_size || (r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), B(e), o = r.pending, r.pending !== r.pending_buf_size)); ) V(r, 255 & r.gzhead.extra[r.gzindex]), r.gzindex++; r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), r.gzindex === r.gzhead.extra.length && (r.gzindex = 0, r.status = 73) } else r.status = 73; if (73 === r.status) if (r.gzhead.name) { o = r.pending; do { if (r.pending === r.pending_buf_size && (r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), B(e), o = r.pending, r.pending === r.pending_buf_size)) { c = 1; break } c = r.gzindex < r.gzhead.name.length ? 255 & r.gzhead.name.charCodeAt(r.gzindex++) : 0, V(r, c) } while (0 !== c);r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), 0 === c && (r.gzindex = 0, r.status = 91) } else r.status = 91; if (91 === r.status) if (r.gzhead.comment) { o = r.pending; do { if (r.pending === r.pending_buf_size && (r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), B(e), o = r.pending, r.pending === r.pending_buf_size)) { c = 1; break } c = r.gzindex < r.gzhead.comment.length ? 255 & r.gzhead.comment.charCodeAt(r.gzindex++) : 0, V(r, c) } while (0 !== c);r.gzhead.hcrc && r.pending > o && (e.adler = s(e.adler, r.pending_buf, r.pending - o, o)), 0 === c && (r.status = T) } else r.status = T; if (r.status === T && (r.gzhead.hcrc ? (r.pending + 2 > r.pending_buf_size && B(e), r.pending + 2 <= r.pending_buf_size && (V(r, 255 & e.adler), V(r, e.adler >> 8 & 255), e.adler = 0, r.status = N)) : r.status = N), 0 !== r.pending) { if (B(e), 0 === e.avail_out) return r.last_flush = -1, d } else if (0 === e.avail_in && U(t) <= U(n) && t !== u) return O(e, -5); if (r.status === D && 0 !== e.avail_in) return O(e, -5); if (0 !== e.avail_in || 0 !== r.lookahead || t !== l && r.status !== D) { var f = 2 === r.strategy ? function(e, t) { for (var n; ; ) { if (0 === e.lookahead && (F(e), 0 === e.lookahead)) { if (t === l) return x; break } if (e.match_length = 0, n = i._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++, n && (W(e, !1), 0 === e.strm.avail_out)) return x } return e.insert = 0, t === u ? (W(e, !0), 0 === e.strm.avail_out ? R : P) : e.last_lit && (W(e, !1), 0 === e.strm.avail_out) ? x : L }(r, t) : 3 === r.strategy ? function(e, t) { for (var n, a, r, o, s = e.window; ; ) { if (e.lookahead <= I) { if (F(e), e.lookahead <= I && t === l) return x; if (0 === e.lookahead) break } if (e.match_length = 0, e.lookahead >= A && e.strstart > 0 && (a = s[r = e.strstart - 1]) === s[++r] && a === s[++r] && a === s[++r]) { o = e.strstart + I; do {} while (a === s[++r] && a === s[++r] && a === s[++r] && a === s[++r] && a === s[++r] && a === s[++r] && a === s[++r] && a === s[++r] && r < o);e.match_length = I - (o - r), e.match_length > e.lookahead && (e.match_length = e.lookahead) } if (e.match_length >= A ? (n = i._tr_tally(e, 1, e.match_length - A), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0) : (n = i._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++), n && (W(e, !1), 0 === e.strm.avail_out)) return x } return e.insert = 0, t === u ? (W(e, !0), 0 === e.strm.avail_out ? R : P) : e.last_lit && (W(e, !1), 0 === e.strm.avail_out) ? x : L }(r, t) : a[r.level].func(r, t); if (f !== R && f !== P || (r.status = D), f === x || f === R) return 0 === e.avail_out && (r.last_flush = -1), d; if (f === L && (1 === t ? i._tr_align(r) : 5 !== t && (i._tr_stored_block(r, 0, 0, !1), 3 === t && (M(r.head), 0 === r.lookahead && (r.strstart = 0, r.block_start = 0, r.insert = 0))), B(e), 0 === e.avail_out)) return r.last_flush = -1, d } return t !== u ? d : r.wrap <= 0 ? 1 : (2 === r.wrap ? (V(r, 255 & e.adler), V(r, e.adler >> 8 & 255), V(r, e.adler >> 16 & 255), V(r, e.adler >> 24 & 255), V(r, 255 & e.total_in), V(r, e.total_in >> 8 & 255), V(r, e.total_in >> 16 & 255), V(r, e.total_in >> 24 & 255)) : (Q(r, e.adler >>> 16), Q(r, 65535 & e.adler)), B(e), r.wrap > 0 && (r.wrap = -r.wrap), 0 !== r.pending ? d : 1) } , t.deflateEnd = function(e) { var t; return e && e.state ? (t = e.state.status) !== k && 69 !== t && 73 !== t && 91 !== t && t !== T && t !== N && t !== D ? O(e, p) : (e.state = null, t === N ? O(e, -3) : d) : p } , t.deflateSetDictionary = function(e, t) { var n, a, i, s, c, l, u, h, f = t.length; if (!e || !e.state) return p; if (2 === (s = (n = e.state).wrap) || 1 === s && n.status !== k || n.lookahead) return p; for (1 === s && (e.adler = o(e.adler, t, f, 0)), n.wrap = 0, f >= n.w_size && (0 === s && (M(n.head), n.strstart = 0, n.block_start = 0, n.insert = 0), h = new r.Buf8(n.w_size), r.arraySet(h, t, f - n.w_size, n.w_size, 0), t = h, f = n.w_size), c = e.avail_in, l = e.next_in, u = e.input, e.avail_in = f, e.next_in = 0, e.input = t, F(n); n.lookahead >= A; ) { a = n.strstart, i = n.lookahead - (A - 1); do { n.ins_h = (n.ins_h << n.hash_shift ^ n.window[a + A - 1]) & n.hash_mask, n.prev[a & n.w_mask] = n.head[n.ins_h], n.head[n.ins_h] = a, a++ } while (--i);n.strstart = a, n.lookahead = A - 1, F(n) } return n.strstart += n.lookahead, n.block_start = n.strstart, n.insert = n.lookahead, n.lookahead = 0, n.match_length = n.prev_length = A - 1, n.match_available = 0, e.next_in = l, e.input = u, e.avail_in = c, n.wrap = s, d } , t.deflateInfo = ""pako deflate (from Nodeca project)"" return t }() var n_14=function(){ var a = n_0 , r = !0 , i = !0; try { String.fromCharCode.apply(null, [0]) } catch (e) { r = !1 } try { String.fromCharCode.apply(null, new Uint8Array(1)) } catch (e) { i = !1 } for (var o = new a.Buf8(256), s = 0; s < 256; s++) o[s] = s >= 252 ? 6 : s >= 248 ? 5 : s >= 240 ? 4 : s >= 224 ? 3 : s >= 192 ? 2 : 1; function c(e, t) { if (t < 65537 && (e.subarray && i || !e.subarray && r)) return String.fromCharCode.apply(null, a.shrinkBuf(e, t)); for (var n = """", o = 0; o < t; o++) n += String.fromCharCode(e[o]); return n } var t={}; o[254] = o[254] = 1, t.string2buf = function(e) { var t, n, r, i, o, s = e.length, c = 0; for (i = 0; i < s; i++) 55296 == (64512 & (n = e.charCodeAt(i))) && i + 1 < s && 56320 == (64512 & (r = e.charCodeAt(i + 1))) && (n = 65536 + (n - 55296 << 10) + (r - 56320), i++), c += n < 128 ? 1 : n < 2048 ? 2 : n < 65536 ? 3 : 4; for (t = new a.Buf8(c), o = 0, i = 0; o < c; i++) 55296 == (64512 & (n = e.charCodeAt(i))) && i + 1 < s && 56320 == (64512 & (r = e.charCodeAt(i + 1))) && (n = 65536 + (n - 55296 << 10) + (r - 56320), i++), n < 128 ? t[o++] = n : n < 2048 ? (t[o++] = 192 | n >>> 6, t[o++] = 128 | 63 & n) : n < 65536 ? (t[o++] = 224 | n >>> 12, t[o++] = 128 | n >>> 6 & 63, t[o++] = 128 | 63 & n) : (t[o++] = 240 | n >>> 18, t[o++] = 128 | n >>> 12 & 63, t[o++] = 128 | n >>> 6 & 63, t[o++] = 128 | 63 & n); return t } , t.buf2binstring = function(e) { return c(e, e.length) } , t.binstring2buf = function(e) { for (var t = new a.Buf8(e.length), n = 0, r = t.length; n < r; n++) t[n] = e.charCodeAt(n); return t } , t.buf2string = function(e, t) { var n, a, r, i, s = t || e.length, l = new Array(2 * s); for (a = 0, n = 0; n < s; ) if ((r = e[n++]) < 128) l[a++] = r; else if ((i = o[r]) > 4) l[a++] = 65533, n += i - 1; else { for (r &= 2 === i ? 31 : 3 === i ? 15 : 7; i > 1 && n < s; ) r = r << 6 | 63 & e[n++], i--; i > 1 ? l[a++] = 65533 : r < 65536 ? l[a++] = r : (r -= 65536, l[a++] = 55296 | r >> 10 & 1023, l[a++] = 56320 | 1023 & r) } return c(l, a) } , t.utf8border = function(e, t) { var n; for ((t = t || e.length) > e.length && (t = e.length), n = t - 1; n >= 0 && 128 == (192 & e[n]); ) n--; return n < 0 ? t : 0 === n ? t : n + o[e[n]] > t ? n : t } return t }() var n_15= function() { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = """", this.state = null, this.data_type = 2, this.adler = 0 } var n_9=function(e){ var a = n_10 , r = n_0 , i = n_14 , o = n_3 , s = n_15 , c = Object.prototype.toString , l = 0 , u = -1 , d = 0 , p = 8, t={}; function h(e) { if (!(this instanceof h)) return new h(e); this.options = r.assign({ level: u, method: p, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: d, to: """" }, e || {}); var t = this.options; t.raw && t.windowBits > 0 ? t.windowBits = -t.windowBits : t.gzip && t.windowBits > 0 && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = """", this.ended = !1, this.chunks = [], this.strm = new s, this.strm.avail_out = 0; var n = a.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy); if (n !== l) throw new Error(o[n]); if (t.header && a.deflateSetHeader(this.strm, t.header), t.dictionary) { var f; if (f = ""string"" == typeof t.dictionary ? i.string2buf(t.dictionary) : ""[object ArrayBuffer]"" === c.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, (n = a.deflateSetDictionary(this.strm, f)) !== l) throw new Error(o[n]); this._dict_set = !0 } } function f(e, t) { var n = new h(t); if (n.push(e, !0), n.err) throw n.msg || o[n.err]; return n.result } h.prototype.push = function(e, t) { var n, o, s = this.strm, u = this.options.chunkSize; if (this.ended) return !1; o = t === ~~t ? t : !0 === t ? 4 : 0, ""string"" == typeof e ? s.input = i.string2buf(e) : ""[object ArrayBuffer]"" === c.call(e) ? s.input = new Uint8Array(e) : s.input = e, s.next_in = 0, s.avail_in = s.input.length; do { if (0 === s.avail_out && (s.output = new r.Buf8(u), s.next_out = 0, s.avail_out = u), 1 !== (n = a.deflate(s, o)) && n !== l) return this.onEnd(n), this.ended = !0, !1; 0 !== s.avail_out && (0 !== s.avail_in || 4 !== o && 2 !== o) || (""string"" === this.options.to ? this.onData(i.buf2binstring(r.shrinkBuf(s.output, s.next_out))) : this.onData(r.shrinkBuf(s.output, s.next_out))) } while ((s.avail_in > 0 || 0 === s.avail_out) && 1 !== n);return 4 === o ? (n = a.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === l) : 2 !== o || (this.onEnd(l), s.avail_out = 0, !0) } , h.prototype.onData = function(e) { this.chunks.push(e) } , h.prototype.onEnd = function(e) { e === l && (""string"" === this.options.to ? this.result = this.chunks.join("""") : this.result = r.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg } , t.Deflate = h, t.deflate = f, t.deflateRaw = function(e, t) { return (t = t || {}).raw = !0, f(e, t) } , t.gzip = function(e, t) { return (t = t || {}).gzip = !0, f(e, t) } return t } l = [""w4rDocK9wqRC"", ""wpdhB8OQEA=="", ""V8KFRsOAZw=="", ""VRVuIcKx"", ""AkDDmjnDmg=="", ""w5N8BHPDqjLDscOdwq0="", ""YSHDrW/DrQ=="", ""YXcQwpfCnQ3Ds8Knw5EKPXzCnA=="", ""wp7CmMKbwrvDhA=="", ""NcOMwrrClk4="", ""K8Ogw4zDtcKTw5ZnZMO/w4jCpHLDn33CiShEw58fNsKgNcOe"", ""UmvDj8OBEw=="", ""wpdgSSlv"", ""w5fCr8KuD27Dg2t1wps="", ""woxkHcOZ"", ""N8OFw4bDksKU"", ""YUnDrQPCgcKJw4IZw5I="", ""KcOhwpBd"", ""dMOZUGQsw7Zaw7k="", ""wpxoA8ORFMOuwoQ="", ""w5DCkMKXE3k="", ""JDB4w5nDjMKZWMOs"", ""SsOTRWM4"", ""woTCoMKEwrjDjRTDrMKNKw=="", ""wqrDocO4wptJP8K5wq4="", ""O8K3TMOrw7szFw=="", ""wqnDg8O9wodD"", ""wpZBbsK4wr1AU8KE"", ""byzCpBHChw=="", ""O8OQwqHCtFs="", ""FhcqQz0="", ""w77CqWA="", ""w6BWBVzDsw=="", ""wqDCq3XDkQ=="", ""OjknbDoIw6HCl8K/Gic="", ""CcOzdAM="", ""IMK8VcOz"", ""acKLw4fDgA=="", ""w413D2M="", ""cMOXYHs="", ""TcKbTsOD"", ""wpZmwrnDjA=="", ""wo9pwrPDkw=="", ""EkLDhyA="", ""wozCo8OMWA=="", ""w53CrsOywpQ="", ""wrQpCsOdwrHCmMKZOg7CnxfDpUcYw61Xw5zDmiACwqzDgA=="", ""IjkqYw=="", ""wrtXVxQ="", ""wrttwqbDkcKBwofCh8Kwe8K+w4zClMOCw70SfMOW"", ""VMKURMOc"", ""wotAVMK4"", ""GMO3wrfDnA=="", ""JSxOw5/Dv8KXU8Olw6w="", ""P8Ouw4LDnw=="", ""eFXDqwM="", ""Zi3DrMOf"", ""w4vCr8Owwrp6w6hFGGPCqMO/NgM6"", ""PDknZwkew5DCjsKoFTRlZynDgw=="", ""KMOxwo/CiGU="", ""NjcqfTsIw4rClQ=="", ""w6XCksOCwrfCpg=="", ""esO+w4Y+V8KqBS3DlU8ywo7DpFd4wqE="", ""wq9gMMOnNg=="", ""LMOjw4jDl8KN"", ""IcO2VT/Dpg=="", ""AQ1yw7rDkQ=="", ""w6V0JU3Dmw=="", ""woIDPcObwrc="", ""wrJ7w71nw6ZCwp8mwoBbYHA="", ""RcKtU8OSbg=="", ""wq3CrVnDrcK0"", ""w7bDg8OMYx4="", ""Yy7DvMOmwrQ="", ""F3nDvyPDmg=="", ""wplaFEFa"", ""CTNYw4/Dhg=="", ""ZzjDt8O/wrM="", ""U8ODw6Rpwrk="", ""Iy1hw4zDvA=="", ""w4TCjMKcwpp3"", ""w7bChsKOwrJl"", ""Wzp4OsK2wppv"", ""w53Co8K5wrB+"", ""w43CncOOwoxI"", ""wpPCk8KT"", ""IcO1w7PDjcKe"", ""ejLClS7Cm8OM"", ""dARKPQ=="", ""YVrDoRw="", ""w5PCk8KcbA=="", ""eSnDjEM="", ""w5XDkMOZQA=="", ""AMO0wq7CtA=="", ""w7LDnhHCug=="", ""woLDnyjCmg=="", ""D0bCrHs="", ""woTCs8KIwqc="", ""KMKKSMOiw70="", ""PcK9b8Ozw6g5HMOm"", ""w7HDjx7CuGA="", ""woZGeMKEwrk="", ""woHCvMKYwqTDiwbDoQ=="", ""w57Cr8Oywo4="", ""w4jCuHpqw7U="", ""wopqwqPDqsKP"", ""wo57bMK7wqo="", ""w5PCu8KOX3s="", ""SFfDsRXClg=="", ""DlPCt1td"", ""ScKFwoEaw4w="", ""w5DCgMK1Zk8="", ""wqd+XAd7"", ""bMKtw4bDjMKg"", ""CMOCw5HDu8KR"", ""VUDDjw=="", ""wqzDg8Ksw48="", ""Y3TDgxjCiw=="", ""wo5GesKBwqM="", ""wqHClkzDvMKv"", ""F8OoRRHDhA=="", ""E8O9fgY="", ""dsO8w64zbA=="", ""YiMbw5HCj8KMBcO3wqw="", ""acKzw4vDrcKB"", ""wp1Qw5N+w4g="", ""w5TCuMKzDWTDhUZswpPDsQ=="", ""wpgNG8O8wqo="", ""wrBwwobDt8KH"", ""w47ClMKzT0A="", ""OMO4wpJQwoU="", ""AT/Ckg=="", ""OcKLU8OBw54="", ""cGgZwrfCnBzDj8Kvw4IIMWHCpsKqFh4="", ""w73CmcOawpTCpA=="", ""wrbDj8OMwqdD"", ""asKRwqARw6U="", ""wrnCt3PDkcKtAD5Tw5M="", ""wofDji/CkHvCgcKqUcO3ITAjwos3w5Qf"", ""w4vCocOp"", ""AcOrwrHDnMKGH0TCsDk="", ""VcKbwpkqw6/DjSo3TQ=="", ""Y8OaZnEsw5xVw70Iw7c="", ""aQBaJcK1B8Osw6LCtsKXUA=="", ""G8ODw7LDhcKi"", ""BhQaeRI="", ""eTrDgFzDhRbDiHNJ"", ""wqnDhExgdMKaw4VCVj7DkVrCswgd"", ""UcODVEEy"", ""HsO5w6TDosKj"", ""KMOnQDnDkA=="", ""SMKcw6HDvcKA"", ""w5TCs8KOwpJgwqFo"", ""w5bCu8O8wqZRw7lDGW8="", ""OcK9Sw=="", ""Y1rDrBPCgcKQ"", ""EcOjwqzCtlNFwrkLw5LDhyg="", ""w6PDiRPCuHjCtMKUw63DlQc="", ""w5bCrcOswrBAw6U="", ""AMO6wr/Cqw=="", ""wqfDkMKlw4U="", ""U8OAw7BMwoFwTsKf"", ""DcO7eg3Dj2onf10="", ""ZnQUwrPChg3DhQ=="", ""wqzDjsKpw4YYw7zCsw=="", ""NzQsZTMDw5DCqMK+"", ""UzpwMcKjwoY="", ""wp/CrcOBUFbCsg=="", ""NjBZw6jDn8KTXg=="", ""AcOswq3DgA=="", ""OzYgfA=="", ""K8Ouw5XDlQ=="", ""woUiGMORwrTClMK4LQM="", ""f1rDtB7CicKcw48Gw4U="", ""BsOpwopR"", ""V27DnsOUIA=="", ""w63DrcKEwqdm"", ""woxbUMKuwqpb"", ""SyxwA8K1"", ""wq3DtcKww40c"", ""fivChQ3Crw=="", ""bi9ZIcKy"", ""DkLDijHDmWDChMOjZw=="", ""w53ChMO5wrNX"", ""wqtVSg17"", ""ccKDw6bDrMKC"", ""WgXCgQjCjg=="", ""w5fDpsKbwrtc"", ""wpdLTA9s"", ""w5HCr0pRw4c="", ""woTCosK5wpzDmg=="", ""w6zCmMKtEGU="", ""wpvCncKKwq7Dtw=="", ""JMO9wopcwoN+w6sww6NMBg=="", ""w7nChsOSwpTCiw=="", ""wqbCin3Dh8KX"", ""w4zCh8KLYn9tEsKVZVk="", ""Hx4AfBQ="", ""VsKjw73DvsKk"", ""H8OgwrnCuk1FwrkLw5LDhyg="", ""wo1bScKpwr1+VMKHw5LCng=="", ""YcOBcFwO"", ""wo1sH8ORJcOlwoDDr8Oow71S"", ""EWbDniPDmQ=="", ""KBVMw4vDjA=="", ""LsOpwrbDicKHH1LCrQ=="", ""OBI5fzA="", ""wrDCqWjDiMKn"", ""wo3Dl8Kmw4UTw7o="", ""VcOlw6NawpM="", ""ecOad307"", ""w5HCrcOywpQ=""]; t = l, a = 153, function(e) { for (; --e; ) t.push(t.shift()) }(++a); var u = function e(t, n) { var a = l[t -= 0]; void 0 === e.XUzMxH && (function() { var e; try { e = Function('return (function() {}.constructor(""return this"")( ));')() } catch (t) { e = window } e.atob || (e.atob = function(e) { for (var t, n, a = String(e).replace(/=+$/, """"), r = 0, i = 0, o = """"; n = a.charAt(i++); ~n && (t = r % 4 ? 64 * t + n : n, r++ % 4) ? o += String.fromCharCode(255 & t >> (-2 * r & 6)) : 0) n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(n); return o } ) }(), e.dRdvEy = function(e, t) { for (var n, a = [], r = 0, i = """", o = """", s = 0, c = (e = atob(e)).length; s < c; s++) o += ""%"" + (""00"" + e.charCodeAt(s).toString(16)).slice(-2); e = decodeURIComponent(o); for (var l = 0; l < 256; l++) a[l] = l; for (l = 0; l < 256; l++) r = (r + a[l] + t.charCodeAt(l % t.length)) % 256, n = a[l], a[l] = a[r], a[r] = n; l = 0, r = 0; for (var u = 0; u < e.length; u++) r = (r + a[l = (l + 1) % 256]) % 256, n = a[l], a[l] = a[r], a[r] = n, i += String.fromCharCode(e.charCodeAt(u) ^ a[(a[l] + a[r]) % 256]); return i } , e.pBDTtk = {}, e.XUzMxH = !0); var r = e.pBDTtk[t]; return void 0 === r ? (void 0 === e.ytLIIR && (e.ytLIIR = !0), a = e.dRdvEy(a, n), e.pBDTtk[t] = a) : a = r, a } var s=function(){ var t, n, a = [""fsOsw4pww5g="", ""w64ewrQjwqzDmcKN"", ""PcKPwo/Ci8KPAA=="", ""TMO6TV12woFgw5E="", ""EGjDjg=="", ""HcO4LsKuI3g="", ""TXfClnIzw6TCq8OZeSHDllfDvcO6w4I2UF/Cqw=="", ""woopbMKow63DkiIeNVQMecKRw6AUw5AXw6Bt"", ""wovCnsO9wpnCpBxEAnB7w6fDjsKQUcKzXMK4woYzA8KGICVJw7ZMw59VdcKGbsO7X8OFwp12F8K7bWtmw7c9w7zDmhXDqzFXwokQIMKeND/DliR6RcKTbBnDsMKD"", ""RhvCgApkw5jCng=="", ""XCvDscOZXXfDvyEB"", ""LcKhwpzDkC7Ckx/CscKHJw=="", ""wpfDoEV/woIT"", ""Z8Ksw7rDmcO6Vw=="", ""wovDsFhw"", ""w5Egw4EJSiLCqcOBwrR6wp3CqMKWG8KBwpRCwqNban1QwpVzw6rDp8KjG3fDsMKcwr/CisKBWy3Cp3HDm8OLQ2Q0wpFmSMOuGlrDscKgw5oWwqnCrgbDr8K9H3FewrheOA==""]; t = a, n = 410, function(e) { for (; --e; ) t.push(t.shift()) }(++n); var r = function e(t, n) { var r, i = a[t -= 0]; void 0 === e.XCyDvT && ((r = function() { var e; try { e = Function('return (function() {}.constructor(""return this"")( ));')() } catch (t) { e = window } return e }()).atob || (r.atob = function(e) { for (var t, n, a = String(e).replace(/=+$/, """"), r = 0, i = 0, o = """"; n = a.charAt(i++); ~n && (t = r % 4 ? 64 * t + n : n, r++ % 4) ? o += String.fromCharCode(255 & t >> (-2 * r & 6)) : 0) n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(n); return o } ), e.gnKVWC = function(e, t) { for (var n, a = [], r = 0, i = """", o = """", s = 0, c = (e = atob(e)).length; s < c; s++) o += ""%"" + (""00"" + e.charCodeAt(s).toString(16)).slice(-2); e = decodeURIComponent(o); for (var l = 0; l < 256; l++) a[l] = l; for (l = 0; l < 256; l++) r = (r + a[l] + t.charCodeAt(l % t.length)) % 256, n = a[l], a[l] = a[r], a[r] = n; l = 0, r = 0; for (var u = 0; u < e.length; u++) r = (r + a[l = (l + 1) % 256]) % 256, n = a[l], a[l] = a[r], a[r] = n, i += String.fromCharCode(e.charCodeAt(u) ^ a[(a[l] + a[r]) % 256]); return i } , e.BawHbV = {}, e.XCyDvT = !0); var o = e.BawHbV[t]; return void 0 === o ? (void 0 === e.hdDebs && (e.hdDebs = !0), i = e.gnKVWC(i, n), e.BawHbV[t] = i) : i = o, i } , i = r(""0x0"", ""rrVt"") , o = r(""0x1"", ""%p$t"") , s = r(""0x2"", ""h62p"") , c = r(""0x3"", ""bvUg"") , l = r(""0x4"", ""h62p"") , u = r(""0x5"", ""Acn)"")[r(""0x6"", ""pDBh"")]("""") , d = {}; function p(e) { return e[r(""0x7"", ""a@!G"")](/[+\/=]/g, function(e) { return d[e] }) } d[""+""] = ""-"", d[""/""] = ""_"", d[""=""] = """"; var h = {}; h[r(""0x8"", ""9$$F"")] = function(e) { for (var t = function(e, t) { return e < t }, n = function(e, t) { return e + t }, a = function(e, t) { return e + t }, r = function(e, t) { return e + t }, i = function(e, t) { return e >>> t }, o = function(e, t) { return e & t }, c = function(e, t) { return e | t }, l = function(e, t) { return e << t }, d = function(e, t) { return e >>> t }, h = function(e, t) { return e & t }, f = function(e, t) { return e | t }, m = function(e, t) { return e & t }, g = function(e, t) { return e === t }, v = function(e, t) { return e + t }, y = function(e, t) { return e << t }, _ = function(e, t) { return e & t }, b = void 0, w = void 0, S = void 0, C = """", A = e[s], I = 0, E = function(e, t) { return e * t }(function(e, t) { return e(t) }(parseInt, function(e, t) { return e / t }(A, 3)), 3); t(I, E); ) b = e[I++], w = e[I++], S = e[I++], C += n(a(r(u[i(b, 2)], u[o(c(l(b, 4), d(w, 4)), 63)]), u[h(f(l(w, 2), d(S, 6)), 63)]), u[m(S, 63)]); var k = function(e, t) { return e - t }(A, E); return g(k, 1) ? (b = e[I], C += v(v(u[d(b, 2)], u[m(y(b, 4), 63)]), ""=="")) : g(k, 2) && (b = e[I++], w = e[I], C += v(function(e, t) { return e + t }(function(e, t) { return e + t }(u[d(b, 2)], u[_(f(y(b, 4), function(e, t) { return e >>> t }(w, 4)), 63)]), u[_(y(w, 2), 63)]), ""="")), function(e, t) { return e(t) }(p, C) } , h[r(""0x9"", ""mzYq"")] = function(e) { for (var t = function(e, t) { return e < t }, n = function(e, t) { return e >= t }, a = function(e, t) { return e <= t }, r = function(e, t) { return e <= t }, i = function(e, t) { return e | t }, u = function(e, t) { return e & t }, d = function(e, t) { return e >> t }, p = function(e, t) { return e | t }, h = function(e, t) { return e & t }, f = function(e, t) { return e >= t }, m = function(e, t) { return e <= t }, g = function(e, t) { return e | t }, v = function(e, t) { return e & t }, y = function(e, t) { return e >> t }, _ = function(e, t) { return e | t }, b = function(e, t) { return e & t }, w = function(e, t) { return e < t }, S = [], C = 0, A = 0; t(A, e[s]); A += 1) { var I = e[o](A); n(I, 0) && a(I, 127) ? (S[l](I), C += 1) : a(128, 80) && r(I, 2047) ? (C += 2, S[l](i(192, u(31, d(I, 6)))), S[l](p(128, h(63, I)))) : (f(I, 2048) && r(I, 55295) || f(I, 57344) && m(I, 65535)) && (C += 3, S[l](p(224, h(15, d(I, 12)))), S[l](g(128, v(63, y(I, 6)))), S[l](_(128, b(63, I)))) } for (var E = 0; w(E, S[s]); E += 1) S[E] &= 255; return function(e, t) { return e <= t }(C, 255) ? [0, C][c](S) : [function(e, t) { return e >> t }(C, 8), b(C, 255)][c](S) } , h.es = function(e) { e || (e = """"); var t = e[i](0, 255) , n = [] , a = h.charCode(t).slice(2); return n[l](a[s]), n = n[c](a) } , h.en = function(e) { var t = function(e, t) { return e !== t } , n = function(e, t) { return e % t } , a = function(e, t) { return e < t } , r = function(e, t) { return e * t } , o = function(e, t) { return e + t } , c = function(e, t, n) { return e(t, n) }; e || (e = 0); var u = function(e, t) { return e(t) }(parseInt, e) , d = []; !function(e, t) { return e > t }(u, 0) ? d[l](1) : d[l](0); for (var p = Math.abs(u).toString(2).split(""""), h = 0; t(n(p[s], 8), 0); h += 1) p.unshift(""0""); p = p.join(""""); for (var f = Math.ceil(function(e, t) { return e / t }(p[s], 8)), m = 0; a(m, f); m += 1) { var g = p[i](r(m, 8), r(o(m, 1), 8)); d[l](c(parseInt, g, 2)) } var v = d[s]; return d.unshift(v), d } , h[r(""0xa"", ""l!6d"")] = function(e) { for (var t = function(e, t) { return e < t }, n = [], a = e.toString(2).split(""""), r = 0; t(a[s], 16); r += 1) a.unshift(0); return a = a.join(""""), n[l](function(e, t, n) { return e(t, n) }(parseInt, a[i](0, 8), 2), function(e, t, n) { return e(t, n) }(parseInt, a[i](8, 16), 2)), n } , h[r(""0xb"", ""&S@A"")] = function(e) { for (var t = { OTRHQ: r(""0xc"", ""l!6d""), ManMe: function(e, t) { return e < t }, RuNgp: r(""0xd"", ""l7e1""), YAVpt: function(e, t) { return e(t) }, tjRdh: function(e, t) { return e - t }, jScTt: function(e, t) { return e >> t }, WSBOs: function(e, t) { return e + t }, iquNq: function(e, t) { return e + t }, TRMwR: function(e, t) { return e + t }, VfVya: function(e, t) { return e + t }, BtbyW: function(e, t) { return e | t }, OVNcH: function(e, t) { return e << t }, xtaIO: function(e, t) { return e & t }, nkTwY: function(e, t) { return e >> t }, NujdN: function(e, t) { return e - t }, YPjfa: function(e, t) { return e - t }, SNTFM: r(""0xe"", ""hW@4""), MOIzC: function(e, t) { return e < t } }, n = t.OTRHQ.split(""|""), a = 0; ; ) { switch (n[a++]) { case ""0"": i._AAA(""=""); continue; case ""1"": var i = { ""_BBB"": new Array(4095), ""_CCC"": -1, ""_AAA"": function(e) { this._CCC++, this._BBB[this._CCC] = e }, ""_bY"": function() { return this._CCC--, v.zrJTh(this._CCC, 0) && (this._CCC = 0), this._BBB[this._CCC] } }; continue; case ""2"": var c = """"; continue; case ""3"": for (y = 0; t.ManMe(y, e[s]); y = d._bK) for (var l = t.RuNgp.split(""|""), u = 0; ; ) { switch (l[u++]) { case ""0"": i._CCC -= 3; continue; case ""1"": t.YAVpt(isNaN, i._BBB[t.tjRdh(i._CCC, 1)]) ? m = g = 64 : t.YAVpt(isNaN, i._BBB[i._CCC]) && (g = 64); continue; case ""2"": case ""3"": i._AAA(d._bf()); continue; case ""4"": h = t.jScTt(i._BBB[t.tjRdh(i._CCC, 2)], 2); continue; case ""5"": c = t.WSBOs(t.iquNq(t.TRMwR(t.VfVya(c, i._BBB[h]), i._BBB[f]), i._BBB[m]), i._BBB[g]); continue; case ""6"": m = t.BtbyW(t.OVNcH(t.xtaIO(i._BBB[t.tjRdh(i._CCC, 1)], 15), 2), t.nkTwY(i._BBB[i._CCC], 6)); continue; case ""7"": i._AAA(d._bf()); continue; case ""8"": g = t.xtaIO(i._BBB[i._CCC], 63); continue; case ""9"": f = t.BtbyW(t.OVNcH(t.xtaIO(i._BBB[t.NujdN(i._CCC, 2)], 3), 4), t.nkTwY(i._BBB[t.YPjfa(i._CCC, 1)], 4)); continue } break } continue; case ""4"": var d = { ""_b?"": e, _bK: 0, _bf: function() { return e[o](this._bK++) } }; continue; case ""5"": var p = t.SNTFM; continue; case ""6"": return c.replace(/=/g, """"); case ""7"": var h, f, m, g; continue; case ""8"": var v = { zrJTh: function(e, n) { return t.ManMe(e, n) } }; continue; case ""9"": for (var y = 0; t.MOIzC(y, p[s]); y++) i._AAA(p.charAt(y)); continue } break } } return h }() var n_2=function(){ var n = { utf8: { stringToBytes: function(e) { return n.bin.stringToBytes(unescape(encodeURIComponent(e))) }, bytesToString: function(e) { return decodeURIComponent(escape(n.bin.bytesToString(e))) } }, bin: { stringToBytes: function(e) { for (var t = [], n = 0; n < e.length; n++) t.push(255 & e.charCodeAt(n)); return t }, bytesToString: function(e) { for (var t = [], n = 0; n < e.length; n++) t.push(String.fromCharCode(e[n])); return t.join("""") } } }; return n }() var n_8=function(){ function n(e) { return !!e.constructor && ""function"" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e) } return function(e) { return null != e && (n(e) || function(e) { return ""function"" == typeof e.readFloatLE && ""function"" == typeof e.slice && n(e.slice(0, 0)) }(e) || !!e._isBuffer) } }() var n_7=function(){ var n, a; n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"", a = { rotl: function(e, t) { return e << t | e >>> 32 - t }, rotr: function(e, t) { return e << 32 - t | e >>> t }, endian: function(e) { if (e.constructor == Number) return 16711935 & a.rotl(e, 8) | 4278255360 & a.rotl(e, 24); for (var t = 0; t < e.length; t++) e[t] = a.endian(e[t]); return e }, randomBytes: function(e) { for (var t = []; e > 0; e--) t.push(Math.floor(256 * Math.random())); return t }, bytesToWords: function(e) { for (var t = [], n = 0, a = 0; n < e.length; n++, a += 8) t[a >>> 5] |= e[n] << 24 - a % 32; return t }, wordsToBytes: function(e) { for (var t = [], n = 0; n < 32 * e.length; n += 8) t.push(e[n >>> 5] >>> 24 - n % 32 & 255); return t }, bytesToHex: function(e) { for (var t = [], n = 0; n < e.length; n++) t.push((e[n] >>> 4).toString(16)), t.push((15 & e[n]).toString(16)); return t.join("""") }, hexToBytes: function(e) { for (var t = [], n = 0; n < e.length; n += 2) t.push(parseInt(e.substr(n, 2), 16)); return t }, bytesToBase64: function(e) { for (var t = [], a = 0; a < e.length; a += 3) for (var r = e[a] << 16 | e[a + 1] << 8 | e[a + 2], i = 0; i < 4; i++) 8 * a + 6 * i <= 8 * e.length ? t.push(n.charAt(r >>> 6 * (3 - i) & 63)) : t.push(""=""); return t.join("""") }, base64ToBytes: function(e) { e = e.replace(/[^A-Z0-9+\/]/gi, """"); for (var t = [], a = 0, r = 0; a < e.length; r = ++a % 4) 0 != r && t.push((n.indexOf(e.charAt(a - 1)) & Math.pow(2, -2 * r + 8) - 1) << 2 * r | n.indexOf(e.charAt(a)) >>> 6 - 2 * r); return t } }; return a }() var n_6=function(){ var a, r, i, o, s; a = n_7, r = n_2.utf8, i = n_8, o = n_2.bin, (s = function e(t, n) { t.constructor == String ? t = n && ""binary"" === n.encoding ? o.stringToBytes(t) : r.stringToBytes(t) : i(t) ? t = Array.prototype.slice.call(t, 0) : Array.isArray(t) || (t = t.toString()); for (var s = a.bytesToWords(t), c = 8 * t.length, l = 1732584193, u = -271733879, d = -1732584194, p = 271733878, h = 0; h < s.length; h++) s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8); s[c >>> 5] |= 128 << c % 32, s[14 + (c + 64 >>> 9 << 4)] = c; var f = e._ff , m = e._gg , g = e._hh , v = e._ii; for (h = 0; h < s.length; h += 16) { var y = l , _ = u , b = d , w = p; u = v(u = v(u = v(u = v(u = g(u = g(u = g(u = g(u = m(u = m(u = m(u = m(u = f(u = f(u = f(u = f(u, d = f(d, p = f(p, l = f(l, u, d, p, s[h + 0], 7, -680876936), u, d, s[h + 1], 12, -389564586), l, u, s[h + 2], 17, 606105819), p, l, s[h + 3], 22, -1044525330), d = f(d, p = f(p, l = f(l, u, d, p, s[h + 4], 7, -176418897), u, d, s[h + 5], 12, 1200080426), l, u, s[h + 6], 17, -1473231341), p, l, s[h + 7], 22, -45705983), d = f(d, p = f(p, l = f(l, u, d, p, s[h + 8], 7, 1770035416), u, d, s[h + 9], 12, -1958414417), l, u, s[h + 10], 17, -42063), p, l, s[h + 11], 22, -1990404162), d = f(d, p = f(p, l = f(l, u, d, p, s[h + 12], 7, 1804603682), u, d, s[h + 13], 12, -40341101), l, u, s[h + 14], 17, -1502002290), p, l, s[h + 15], 22, 1236535329), d = m(d, p = m(p, l = m(l, u, d, p, s[h + 1], 5, -165796510), u, d, s[h + 6], 9, -1069501632), l, u, s[h + 11], 14, 643717713), p, l, s[h + 0], 20, -373897302), d = m(d, p = m(p, l = m(l, u, d, p, s[h + 5], 5, -701558691), u, d, s[h + 10], 9, 38016083), l, u, s[h + 15], 14, -660478335), p, l, s[h + 4], 20, -405537848), d = m(d, p = m(p, l = m(l, u, d, p, s[h + 9], 5, 568446438), u, d, s[h + 14], 9, -1019803690), l, u, s[h + 3], 14, -187363961), p, l, s[h + 8], 20, 1163531501), d = m(d, p = m(p, l = m(l, u, d, p, s[h + 13], 5, -1444681467), u, d, s[h + 2], 9, -51403784), l, u, s[h + 7], 14, 1735328473), p, l, s[h + 12], 20, -1926607734), d = g(d, p = g(p, l = g(l, u, d, p, s[h + 5], 4, -378558), u, d, s[h + 8], 11, -2022574463), l, u, s[h + 11], 16, 1839030562), p, l, s[h + 14], 23, -35309556), d = g(d, p = g(p, l = g(l, u, d, p, s[h + 1], 4, -1530992060), u, d, s[h + 4], 11, 1272893353), l, u, s[h + 7], 16, -155497632), p, l, s[h + 10], 23, -1094730640), d = g(d, p = g(p, l = g(l, u, d, p, s[h + 13], 4, 681279174), u, d, s[h + 0], 11, -358537222), l, u, s[h + 3], 16, -722521979), p, l, s[h + 6], 23, 76029189), d = g(d, p = g(p, l = g(l, u, d, p, s[h + 9], 4, -640364487), u, d, s[h + 12], 11, -421815835), l, u, s[h + 15], 16, 530742520), p, l, s[h + 2], 23, -995338651), d = v(d, p = v(p, l = v(l, u, d, p, s[h + 0], 6, -198630844), u, d, s[h + 7], 10, 1126891415), l, u, s[h + 14], 15, -1416354905), p, l, s[h + 5], 21, -57434055), d = v(d, p = v(p, l = v(l, u, d, p, s[h + 12], 6, 1700485571), u, d, s[h + 3], 10, -1894986606), l, u, s[h + 10], 15, -1051523), p, l, s[h + 1], 21, -2054922799), d = v(d, p = v(p, l = v(l, u, d, p, s[h + 8], 6, 1873313359), u, d, s[h + 15], 10, -30611744), l, u, s[h + 6], 15, -1560198380), p, l, s[h + 13], 21, 1309151649), d = v(d, p = v(p, l = v(l, u, d, p, s[h + 4], 6, -145523070), u, d, s[h + 11], 10, -1120210379), l, u, s[h + 2], 15, 718787259), p, l, s[h + 9], 21, -343485551), l = l + y >>> 0, u = u + _ >>> 0, d = d + b >>> 0, p = p + w >>> 0 } return a.endian([l, u, d, p]) } )._ff = function(e, t, n, a, r, i, o) { var s = e + (t & n | ~t & a) + (r >>> 0) + o; return (s << i | s >>> 32 - i) + t } , s._gg = function(e, t, n, a, r, i, o) { var s = e + (t & a | n & ~a) + (r >>> 0) + o; return (s << i | s >>> 32 - i) + t } , s._hh = function(e, t, n, a, r, i, o) { var s = e + (t ^ n ^ a) + (r >>> 0) + o; return (s << i | s >>> 32 - i) + t } , s._ii = function(e, t, n, a, r, i, o) { var s = e + (n ^ (t | ~a)) + (r >>> 0) + o; return (s << i | s >>> 32 - i) + t } , s._blocksize = 16, s._digestsize = 16; return function(e, t) { if (void 0 === e || null === e) throw new Error(""Illegal argument "" + e); var n = a.wordsToBytes(s(e, t)); return t && t.asBytes ? n : t && t.asString ? o.bytesToString(n) : a.bytesToHex(n) } }() var n_4=function(){ var t, n, a = [""fsOsw4pww5g="", ""w64ewrQjwqzDmcKN"", ""PcKPwo/Ci8KPAA=="", ""TMO6TV12woFgw5E="", ""EGjDjg=="", ""HcO4LsKuI3g="", ""TXfClnIzw6TCq8OZeSHDllfDvcO6w4I2UF/Cqw=="", ""woopbMKow63DkiIeNVQMecKRw6AUw5AXw6Bt"", ""wovCnsO9wpnCpBxEAnB7w6fDjsKQUcKzXMK4woYzA8KGICVJw7ZMw59VdcKGbsO7X8OFwp12F8K7bWtmw7c9w7zDmhXDqzFXwokQIMKeND/DliR6RcKTbBnDsMKD"", ""RhvCgApkw5jCng=="", ""XCvDscOZXXfDvyEB"", ""LcKhwpzDkC7Ckx/CscKHJw=="", ""wpfDoEV/woIT"", ""Z8Ksw7rDmcO6Vw=="", ""wovDsFhw"", ""w5Egw4EJSiLCqcOBwrR6wp3CqMKWG8KBwpRCwqNban1QwpVzw6rDp8KjG3fDsMKcwr/CisKBWy3Cp3HDm8OLQ2Q0wpFmSMOuGlrDscKgw5oWwqnCrgbDr8K9H3FewrheOA==""]; t = a, n = 410, function(e) { for (; --e; ) t.push(t.shift()) }(++n); var r = function e(t, n) { var r, i = a[t -= 0]; void 0 === e.XCyDvT && ((r = function() { var e; try { e = Function('return (function() {}.constructor(""return this"")( ));')() } catch (t) { e = window } return e }()).atob || (r.atob = function(e) { for (var t, n, a = String(e).replace(/=+$/, """"), r = 0, i = 0, o = """"; n = a.charAt(i++); ~n && (t = r % 4 ? 64 * t + n : n, r++ % 4) ? o += String.fromCharCode(255 & t >> (-2 * r & 6)) : 0) n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(n); return o } ), e.gnKVWC = function(e, t) { for (var n, a = [], r = 0, i = """", o = """", s = 0, c = (e = atob(e)).length; s < c; s++) o += ""%"" + (""00"" + e.charCodeAt(s).toString(16)).slice(-2); e = decodeURIComponent(o); for (var l = 0; l < 256; l++) a[l] = l; for (l = 0; l < 256; l++) r = (r + a[l] + t.charCodeAt(l % t.length)) % 256, n = a[l], a[l] = a[r], a[r] = n; l = 0, r = 0; for (var u = 0; u < e.length; u++) r = (r + a[l = (l + 1) % 256]) % 256, n = a[l], a[l] = a[r], a[r] = n, i += String.fromCharCode(e.charCodeAt(u) ^ a[(a[l] + a[r]) % 256]); return i } , e.BawHbV = {}, e.XCyDvT = !0); var o = e.BawHbV[t]; return void 0 === o ? (void 0 === e.hdDebs && (e.hdDebs = !0), i = e.gnKVWC(i, n), e.BawHbV[t] = i) : i = o, i } , i = r(""0x0"", ""rrVt"") , o = r(""0x1"", ""%p$t"") , s = r(""0x2"", ""h62p"") , c = r(""0x3"", ""bvUg"") , l = r(""0x4"", ""h62p"") , u = r(""0x5"", ""Acn)"")[r(""0x6"", ""pDBh"")]("""") , d = {}; function p(e) { return e[r(""0x7"", ""a@!G"")](/[+\/=]/g, function(e) { return d[e] }) } d[""+""] = ""-"", d[""/""] = ""_"", d[""=""] = """"; var h = {}; h[r(""0x8"", ""9$$F"")] = function(e) { for (var t = function(e, t) { return e < t }, n = function(e, t) { return e + t }, a = function(e, t) { return e + t }, r = function(e, t) { return e + t }, i = function(e, t) { return e >>> t }, o = function(e, t) { return e & t }, c = function(e, t) { return e | t }, l = function(e, t) { return e << t }, d = function(e, t) { return e >>> t }, h = function(e, t) { return e & t }, f = function(e, t) { return e | t }, m = function(e, t) { return e & t }, g = function(e, t) { return e === t }, v = function(e, t) { return e + t }, y = function(e, t) { return e << t }, _ = function(e, t) { return e & t }, b = void 0, w = void 0, S = void 0, C = """", A = e[s], I = 0, E = function(e, t) { return e * t }(function(e, t) { return e(t) }(parseInt, function(e, t) { return e / t }(A, 3)), 3); t(I, E); ) b = e[I++], w = e[I++], S = e[I++], C += n(a(r(u[i(b, 2)], u[o(c(l(b, 4), d(w, 4)), 63)]), u[h(f(l(w, 2), d(S, 6)), 63)]), u[m(S, 63)]); var k = function(e, t) { return e - t }(A, E); return g(k, 1) ? (b = e[I], C += v(v(u[d(b, 2)], u[m(y(b, 4), 63)]), ""=="")) : g(k, 2) && (b = e[I++], w = e[I], C += v(function(e, t) { return e + t }(function(e, t) { return e + t }(u[d(b, 2)], u[_(f(y(b, 4), function(e, t) { return e >>> t }(w, 4)), 63)]), u[_(y(w, 2), 63)]), ""="")), function(e, t) { return e(t) }(p, C) } , h[r(""0x9"", ""mzYq"")] = function(e) { for (var t = function(e, t) { return e < t }, n = function(e, t) { return e >= t }, a = function(e, t) { return e <= t }, r = function(e, t) { return e <= t }, i = function(e, t) { return e | t }, u = function(e, t) { return e & t }, d = function(e, t) { return e >> t }, p = function(e, t) { return e | t }, h = function(e, t) { return e & t }, f = function(e, t) { return e >= t }, m = function(e, t) { return e <= t }, g = function(e, t) { return e | t }, v = function(e, t) { return e & t }, y = function(e, t) { return e >> t }, _ = function(e, t) { return e | t }, b = function(e, t) { return e & t }, w = function(e, t) { return e < t }, S = [], C = 0, A = 0; t(A, e[s]); A += 1) { var I = e[o](A); n(I, 0) && a(I, 127) ? (S[l](I), C += 1) : a(128, 80) && r(I, 2047) ? (C += 2, S[l](i(192, u(31, d(I, 6)))), S[l](p(128, h(63, I)))) : (f(I, 2048) && r(I, 55295) || f(I, 57344) && m(I, 65535)) && (C += 3, S[l](p(224, h(15, d(I, 12)))), S[l](g(128, v(63, y(I, 6)))), S[l](_(128, b(63, I)))) } for (var E = 0; w(E, S[s]); E += 1) S[E] &= 255; return function(e, t) { return e <= t }(C, 255) ? [0, C][c](S) : [function(e, t) { return e >> t }(C, 8), b(C, 255)][c](S) } , h.es = function(e) { e || (e = """"); var t = e[i](0, 255) , n = [] , a = h.charCode(t).slice(2); return n[l](a[s]), n = n[c](a) } , h.en = function(e) { var t = function(e, t) { return e !== t } , n = function(e, t) { return e % t } , a = function(e, t) { return e < t } , r = function(e, t) { return e * t } , o = function(e, t) { return e + t } , c = function(e, t, n) { return e(t, n) }; e || (e = 0); var u = function(e, t) { return e(t) }(parseInt, e) , d = []; !function(e, t) { return e > t }(u, 0) ? d[l](1) : d[l](0); for (var p = Math.abs(u).toString(2).split(""""), h = 0; t(n(p[s], 8), 0); h += 1) p.unshift(""0""); p = p.join(""""); for (var f = Math.ceil(function(e, t) { return e / t }(p[s], 8)), m = 0; a(m, f); m += 1) { var g = p[i](r(m, 8), r(o(m, 1), 8)); d[l](c(parseInt, g, 2)) } var v = d[s]; return d.unshift(v), d } , h[r(""0xa"", ""l!6d"")] = function(e) { for (var t = function(e, t) { return e < t }, n = [], a = e.toString(2).split(""""), r = 0; t(a[s], 16); r += 1) a.unshift(0); return a = a.join(""""), n[l](function(e, t, n) { return e(t, n) }(parseInt, a[i](0, 8), 2), function(e, t, n) { return e(t, n) }(parseInt, a[i](8, 16), 2)), n } , h[r(""0xb"", ""&S@A"")] = function(e) { for (var t = { OTRHQ: r(""0xc"", ""l!6d""), ManMe: function(e, t) { return e < t }, RuNgp: r(""0xd"", ""l7e1""), YAVpt: function(e, t) { return e(t) }, tjRdh: function(e, t) { return e - t }, jScTt: function(e, t) { return e >> t }, WSBOs: function(e, t) { return e + t }, iquNq: function(e, t) { return e + t }, TRMwR: function(e, t) { return e + t }, VfVya: function(e, t) { return e + t }, BtbyW: function(e, t) { return e | t }, OVNcH: function(e, t) { return e << t }, xtaIO: function(e, t) { return e & t }, nkTwY: function(e, t) { return e >> t }, NujdN: function(e, t) { return e - t }, YPjfa: function(e, t) { return e - t }, SNTFM: r(""0xe"", ""hW@4""), MOIzC: function(e, t) { return e < t } }, n = t.OTRHQ.split(""|""), a = 0; ; ) { switch (n[a++]) { case ""0"": i._AAA(""=""); continue; case ""1"": var i = { ""_BBB"": new Array(4095), ""_CCC"": -1, ""_AAA"": function(e) { this._CCC++, this._BBB[this._CCC] = e }, ""_bY"": function() { return this._CCC--, v.zrJTh(this._CCC, 0) && (this._CCC = 0), this._BBB[this._CCC] } }; continue; case ""2"": var c = """"; continue; case ""3"": for (y = 0; t.ManMe(y, e[s]); y = d._bK) for (var l = t.RuNgp.split(""|""), u = 0; ; ) { switch (l[u++]) { case ""0"": i._CCC -= 3; continue; case ""1"": t.YAVpt(isNaN, i._BBB[t.tjRdh(i._CCC, 1)]) ? m = g = 64 : t.YAVpt(isNaN, i._BBB[i._CCC]) && (g = 64); continue; case ""2"": case ""3"": i._AAA(d._bf()); continue; case ""4"": h = t.jScTt(i._BBB[t.tjRdh(i._CCC, 2)], 2); continue; case ""5"": c = t.WSBOs(t.iquNq(t.TRMwR(t.VfVya(c, i._BBB[h]), i._BBB[f]), i._BBB[m]), i._BBB[g]); continue; case ""6"": m = t.BtbyW(t.OVNcH(t.xtaIO(i._BBB[t.tjRdh(i._CCC, 1)], 15), 2), t.nkTwY(i._BBB[i._CCC], 6)); continue; case ""7"": i._AAA(d._bf()); continue; case ""8"": g = t.xtaIO(i._BBB[i._CCC], 63); continue; case ""9"": f = t.BtbyW(t.OVNcH(t.xtaIO(i._BBB[t.NujdN(i._CCC, 2)], 3), 4), t.nkTwY(i._BBB[t.YPjfa(i._CCC, 1)], 4)); continue } break } continue; case ""4"": var d = { ""_b?"": e, _bK: 0, _bf: function() { return e[o](this._bK++) } }; continue; case ""5"": var p = t.SNTFM; continue; case ""6"": return c.replace(/=/g, """"); case ""7"": var h, f, m, g; continue; case ""8"": var v = { zrJTh: function(e, n) { return t.ManMe(e, n) } }; continue; case ""9"": for (var y = 0; t.MOIzC(y, p[s]); y++) i._AAA(p.charAt(y)); continue } break } } return h }() var n_17=function(){ return function(e) { e = e || 21; for (var t = """"; 0 < e--; ) t += ""_~getRandomVcryp0123456789bfhijklqsuvwxzABCDEFGHIJKLMNOPQSTUWXYZ""[64 * Math.random() | 0]; return t } } var n_18=function(){ return function(e, t, n) { if (""string"" != typeof e) throw new Error(""The string parameter must be a string.""); if (e.length < 1) throw new Error(""The string parameter must be 1 character or longer.""); if (""number"" != typeof t) throw new Error(""The length parameter must be a number.""); if (""string"" != typeof n && n) throw new Error(""The character parameter must be a string.""); var a = -1; for (t -= e.length, n || 0 === n || (n = "" ""); ++a < t; ) e += n; return e } } var n_16=function(){ var t, a, r = ""function"" == typeof Symbol && ""symbol"" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && ""function"" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? ""symbol"" : typeof e } , i = n_4, o = n_17, s = n_18, c = [""ZsKHw6dJKg=="", ""PsKiwoHDkls="", ""fcOIcsOOwoE="", ""w6DDhMO1"", ""wqgRw48="", ""WXbCh8OrwqI="", ""Mx8u"", ""XsKMwrgMwq8="", ""w57ClhbDh8KcMlU="", ""YsKxwpg8wrQyw4Q5wrM="", ""wqLDrcK2w4HDtcOTw5w/a23DpcO1"", ""w63CvXUAw7HCmw=="", ""w7rCpcK4Ej0vwrgN"", ""B8KkwqbDgl47"", ""w5wvwrDDn8OBw6F5QMOI"", ""w4jCixLDq8KBKU3CvcKc"", ""w5HCqjnDi8K1w5TCoSXCtlo="", ""VHbDg8KnfBxSw5A="", ""wohlwolpwrnDmz3CncO/"", ""w73Ct244w6zCkVcUW8O4"", ""wo3DryjDoMKxw5LCoSHCogI="", ""f8Krwo0="", ""wo43fsORwqI="", ""VMK8O8KOFw=="", ""YsKfMMKrCw=="", ""w7M1w7xMwqQ="", ""wr1Ow4/ChAU="", ""w57Dqx/Ci3k="", ""JRQ5Lm1n"", ""VcOoV8OtwqQ="", ""YMOFdcOCwrs="", ""BMKMwqTDtkQ="", ""wrRuw5HCn8O9"", ""wqvDjBlXw5Q="", ""wp9lw5LCnMOswrU="", ""wpoyw40ybWgACU3Cgw=="", ""ccO0M8Ocwq8="", ""TsO6w7ZITw=="", ""w7nCiMKUKiA="", ""dBIHwo/Du1Et"", ""W8KBw6BHPA=="", ""WEnCkD/DmQ=="", ""w5zDisOkw7gOKA=="", ""OBfDv8KXw5jCmxoEPUfCiQ=="", ""woo2w4UjSw=="", ""wpvDt8KPw7XDkA=="", ""bm/ClwrDgg=="", ""w6XDmWVgw7A="", ""PMKJw47DtiTDgRE="", ""DS0pImA="", ""wozDmRDDscKO"", ""DDnDnMKtYRE="", ""Kz7DscK+ag=="", ""VU7Ch3snw6TCvg=="", ""GRvDo8KQw5k="", ""w6oww6Zuwo0Dwpg="", ""K3TDs0c9"", ""wofDhzPCvsKl"", ""XsODw6JvQw==""]; t = c, a = 481, function(e) { for (; --e; ) t.push(t.shift()) }(++a); var l = function e(t, n) { var a = c[t -= 0]; void 0 === e.ToSPmZ && (function() { var e; try { e = Function('return (function() {}.constructor(""return this"")( ));')() } catch (t) { e = window } e.atob || (e.atob = function(e) { for (var t, n, a = String(e).replace(/=+$/, """"), r = 0, i = 0, o = """"; n = a.charAt(i++); ~n && (t = r % 4 ? 64 * t + n : n, r++ % 4) ? o += String.fromCharCode(255 & t >> (-2 * r & 6)) : 0) n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(n); return o } ) }(), e.bDEYsi = function(e, t) { for (var n, a = [], r = 0, i = """", o = """", s = 0, c = (e = atob(e)).length; s < c; s++) o += ""%"" + (""00"" + e.charCodeAt(s).toString(16)).slice(-2); e = decodeURIComponent(o); for (var l = 0; l < 256; l++) a[l] = l; for (l = 0; l < 256; l++) r = (r + a[l] + t.charCodeAt(l % t.length)) % 256, n = a[l], a[l] = a[r], a[r] = n; l = 0, r = 0; for (var u = 0; u < e.length; u++) r = (r + a[l = (l + 1) % 256]) % 256, n = a[l], a[l] = a[r], a[r] = n, i += String.fromCharCode(e.charCodeAt(u) ^ a[(a[l] + a[r]) % 256]); return i } , e.CsmJJo = {}, e.ToSPmZ = !0); var r = e.CsmJJo[t]; return void 0 === r ? (void 0 === e.IecrwX && (e.IecrwX = !0), a = e.bDEYsi(a, n), e.CsmJJo[t] = a) : a = r, a }, u = l(""0x0"", ""kqq7"") , d = l(""0x1"", ""Nbio"") , p = l(""0x2"", ""8]v%"") , h = l(""0x3"", ""!dO["") , f = l(""0x4"", ""qwPb"") , m = void 0; (""undefined"" == typeof window ? ""undefined"" : r(window)) !== l(""0x5"", ""@cws"") && (m = window); var g = {}; function v() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date[l(""0xc"", ""kqq7"")]() , t = {}; t[l(""0xd"", ""7CWB"")] = function(e, t) { return e(t) } , t[l(""0xe"", ""2!ee"")] = function(e) { return e() } , t[l(""0xf"", ""2!ee"")] = function(e, t) { return e % t } , t[l(""0x10"", ""4SXa"")] = function(e, t, n, a) { return e(t, n, a) } , t[l(""0x11"", ""^2]S"")] = function(e, t) { return e(t) } , t[l(""0x12"", ""^2T5"")] = l(""0x13"", ""0lHd""); var n = t[l(""0x14"", ""wxh!"")](String, e)[l(""0x15"", ""wxh!"")](0, 10) , a = t[l(""0x16"", ""qwPb"")](o) , r = t[l(""0x17"", ""QWdF"")]((n + ""_"" + a)[l(""0x18"", ""uj#G"")]("""")[l(""0x19"", ""QWdF"")](function(e, t) { return e + t[l(""0x1a"", ""o39("")](0) }, 0), 1e3) , c = t[l(""0x1b"", ""sUgK"")](s, t[l(""0x1c"", ""Wkx*"")](String, r), 3, ""0""); return i[t[l(""0x1d"", ""!dO["")]]("""" + n + c)[l(""0x1e"", ""Sfwa"")](/=/g, """") + ""_"" + a } function y(e) { var t = {}; return t[l(""0x1f"", ""lw6I"")] = function(e, t) { return e + t } , t[l(""0x20"", ""BFjI"")](e[l(""0x21"", ""XDB^"")](0)[l(""0x22"", ""*K7x"")](), e[l(""0x23"", ""o39("")](1)) } g[l(""0x6"", ""NY!u"")] = function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 9999 , a = { fbRJM: function(e, t) { return e + t }, frmUV: function(e, t) { return e * t }, hEtyF: function(e, t) { return e * t }, Ldquo: function(e, t) { return e * t }, WyIat: function(e, t) { return e * t }, QoVaK: function(e, t) { return e + t }, BFRDf: l(""0x7"", ""(B![""), rwfOE: function(e, t) { return e + t }, dGuIE: function(e, t) { return e || t }, JZtat: l(""0x8"", ""%Wlr"") }; e = a.fbRJM(""_"", e); var r = """"; if (n) { var i = new Date; i.setTime(a.fbRJM(i.getTime(), a.frmUV(a.hEtyF(a.Ldquo(a.WyIat(n, 24), 60), 60), 1e3))), r = a.QoVaK(a.BFRDf, i.toUTCString()) } m[h][p] = a.QoVaK(a.QoVaK(a.QoVaK(a.rwfOE(e, ""=""), a.dGuIE(t, """")), r), a.JZtat) } , g[l(""0x9"", ""lO!]"")] = function(e) { for (var t = function(e, t) { return e < t }, n = function(e, t) { return e === t }, a = function(e, t) { return e === t }, r = function(e, t) { return e + ""="" }(e = function(e, t) { return ""_"" + t }(0, e)), i = m[h][p].split("";""), o = 0; t(o, i[f]); o++) { for (var s = i[o]; n(s.charAt(0), "" ""); ) s = s[u](1, s[f]); if (a(s.indexOf(r), 0)) return s[u](r[f], s[f]) } return null } , g[l(""0xa"", ""8]v%"")] = function(e, t) { e = ""_"" + e, m[d].setItem(e, t) } , g[l(""0xb"", ""(B!["")] = function(e) { return e = ""_"" + e, m[d].getItem(e) }; var e={}; e[l(""0x3a"", ""NY!u"")] = function() { e[l(""0x24"", ""Nbio"")] = function(e, t) { return e(t) } , e[l(""0x25"", ""BFjI"")] = function(e, t) { return e(t) } , e[l(""0x26"", ""fEf$"")] = l(""0x27"", ""#Q][""), e[l(""0x28"", ""0lHd"")] = function(e) { return e() } , e[l(""0x29"", ""(B!["")] = l(""0x2a"", ""%Wlr""), e[l(""0x2b"", ""%Wlr"")] = l(""0x2c"", ""Ll3h""), e[l(""0x2d"", ""*K7x"")] = l(""0x2e"", ""5!BQ""); var t = e[l(""0x2f"", ""l@vt"")] , n = {} , a = e[l(""0x30"", ""JeN9"")](v); return [e[l(""0x31"", ""Wkx*"")], e[l(""0x32"", ""lw6I"")]][e[l(""0x33"", ""qwPb"")]](function(r) { try { var i = l(""0x34"", ""wxh!"") + r + l(""0x35"", ""XDB^""); n[i] = g[l(""0x36"", ""eN@a"") + e[l(""0x37"", ""$%JQ"")](y, r)](t), n[i] || (g[l(""0x38"", ""0lHd"") + e[l(""0x39"", ""kqq7"")](y, r)](t, a), n[i] = a) } catch (e) {} }), n } }() var obj_2=function(){ var t, a, r = ""function"" == typeof Symbol && ""symbol"" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && ""function"" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? ""symbol"" : typeof e } , i = n_6, o = n_9, s = n_4, c = n_16, l = [""w4rDocK9wqRC"", ""wpdhB8OQEA=="", ""V8KFRsOAZw=="", ""VRVuIcKx"", ""AkDDmjnDmg=="", ""w5N8BHPDqjLDscOdwq0="", ""YSHDrW/DrQ=="", ""YXcQwpfCnQ3Ds8Knw5EKPXzCnA=="", ""wp7CmMKbwrvDhA=="", ""NcOMwrrClk4="", ""K8Ogw4zDtcKTw5ZnZMO/w4jCpHLDn33CiShEw58fNsKgNcOe"", ""UmvDj8OBEw=="", ""wpdgSSlv"", ""w5fCr8KuD27Dg2t1wps="", ""woxkHcOZ"", ""N8OFw4bDksKU"", ""YUnDrQPCgcKJw4IZw5I="", ""KcOhwpBd"", ""dMOZUGQsw7Zaw7k="", ""wpxoA8ORFMOuwoQ="", ""w5DCkMKXE3k="", ""JDB4w5nDjMKZWMOs"", ""SsOTRWM4"", ""woTCoMKEwrjDjRTDrMKNKw=="", ""wqrDocO4wptJP8K5wq4="", ""O8K3TMOrw7szFw=="", ""wqnDg8O9wodD"", ""wpZBbsK4wr1AU8KE"", ""byzCpBHChw=="", ""O8OQwqHCtFs="", ""FhcqQz0="", ""w77CqWA="", ""w6BWBVzDsw=="", ""wqDCq3XDkQ=="", ""OjknbDoIw6HCl8K/Gic="", ""CcOzdAM="", ""IMK8VcOz"", ""acKLw4fDgA=="", ""w413D2M="", ""cMOXYHs="", ""TcKbTsOD"", ""wpZmwrnDjA=="", ""wo9pwrPDkw=="", ""EkLDhyA="", ""wozCo8OMWA=="", ""w53CrsOywpQ="", ""wrQpCsOdwrHCmMKZOg7CnxfDpUcYw61Xw5zDmiACwqzDgA=="", ""IjkqYw=="", ""wrtXVxQ="", ""wrttwqbDkcKBwofCh8Kwe8K+w4zClMOCw70SfMOW"", ""VMKURMOc"", ""wotAVMK4"", ""GMO3wrfDnA=="", ""JSxOw5/Dv8KXU8Olw6w="", ""P8Ouw4LDnw=="", ""eFXDqwM="", ""Zi3DrMOf"", ""w4vCr8Owwrp6w6hFGGPCqMO/NgM6"", ""PDknZwkew5DCjsKoFTRlZynDgw=="", ""KMOxwo/CiGU="", ""NjcqfTsIw4rClQ=="", ""w6XCksOCwrfCpg=="", ""esO+w4Y+V8KqBS3DlU8ywo7DpFd4wqE="", ""wq9gMMOnNg=="", ""LMOjw4jDl8KN"", ""IcO2VT/Dpg=="", ""AQ1yw7rDkQ=="", ""w6V0JU3Dmw=="", ""woIDPcObwrc="", ""wrJ7w71nw6ZCwp8mwoBbYHA="", ""RcKtU8OSbg=="", ""wq3CrVnDrcK0"", ""w7bDg8OMYx4="", ""Yy7DvMOmwrQ="", ""F3nDvyPDmg=="", ""wplaFEFa"", ""CTNYw4/Dhg=="", ""ZzjDt8O/wrM="", ""U8ODw6Rpwrk="", ""Iy1hw4zDvA=="", ""w4TCjMKcwpp3"", ""w7bChsKOwrJl"", ""Wzp4OsK2wppv"", ""w53Co8K5wrB+"", ""w43CncOOwoxI"", ""wpPCk8KT"", ""IcO1w7PDjcKe"", ""ejLClS7Cm8OM"", ""dARKPQ=="", ""YVrDoRw="", ""w5PCk8KcbA=="", ""eSnDjEM="", ""w5XDkMOZQA=="", ""AMO0wq7CtA=="", ""w7LDnhHCug=="", ""woLDnyjCmg=="", ""D0bCrHs="", ""woTCs8KIwqc="", ""KMKKSMOiw70="", ""PcK9b8Ozw6g5HMOm"", ""w7HDjx7CuGA="", ""woZGeMKEwrk="", ""woHCvMKYwqTDiwbDoQ=="", ""w57Cr8Oywo4="", ""w4jCuHpqw7U="", ""wopqwqPDqsKP"", ""wo57bMK7wqo="", ""w5PCu8KOX3s="", ""SFfDsRXClg=="", ""DlPCt1td"", ""ScKFwoEaw4w="", ""w5DCgMK1Zk8="", ""wqd+XAd7"", ""bMKtw4bDjMKg"", ""CMOCw5HDu8KR"", ""VUDDjw=="", ""wqzDg8Ksw48="", ""Y3TDgxjCiw=="", ""wo5GesKBwqM="", ""wqHClkzDvMKv"", ""F8OoRRHDhA=="", ""E8O9fgY="", ""dsO8w64zbA=="", ""YiMbw5HCj8KMBcO3wqw="", ""acKzw4vDrcKB"", ""wp1Qw5N+w4g="", ""w5TCuMKzDWTDhUZswpPDsQ=="", ""wpgNG8O8wqo="", ""wrBwwobDt8KH"", ""w47ClMKzT0A="", ""OMO4wpJQwoU="", ""AT/Ckg=="", ""OcKLU8OBw54="", ""cGgZwrfCnBzDj8Kvw4IIMWHCpsKqFh4="", ""w73CmcOawpTCpA=="", ""wrbDj8OMwqdD"", ""asKRwqARw6U="", ""wrnCt3PDkcKtAD5Tw5M="", ""wofDji/CkHvCgcKqUcO3ITAjwos3w5Qf"", ""w4vCocOp"", ""AcOrwrHDnMKGH0TCsDk="", ""VcKbwpkqw6/DjSo3TQ=="", ""Y8OaZnEsw5xVw70Iw7c="", ""aQBaJcK1B8Osw6LCtsKXUA=="", ""G8ODw7LDhcKi"", ""BhQaeRI="", ""eTrDgFzDhRbDiHNJ"", ""wqnDhExgdMKaw4VCVj7DkVrCswgd"", ""UcODVEEy"", ""HsO5w6TDosKj"", ""KMOnQDnDkA=="", ""SMKcw6HDvcKA"", ""w5TCs8KOwpJgwqFo"", ""w5bCu8O8wqZRw7lDGW8="", ""OcK9Sw=="", ""Y1rDrBPCgcKQ"", ""EcOjwqzCtlNFwrkLw5LDhyg="", ""w6PDiRPCuHjCtMKUw63DlQc="", ""w5bCrcOswrBAw6U="", ""AMO6wr/Cqw=="", ""wqfDkMKlw4U="", ""U8OAw7BMwoFwTsKf"", ""DcO7eg3Dj2onf10="", ""ZnQUwrPChg3DhQ=="", ""wqzDjsKpw4YYw7zCsw=="", ""NzQsZTMDw5DCqMK+"", ""UzpwMcKjwoY="", ""wp/CrcOBUFbCsg=="", ""NjBZw6jDn8KTXg=="", ""AcOswq3DgA=="", ""OzYgfA=="", ""K8Ouw5XDlQ=="", ""woUiGMORwrTClMK4LQM="", ""f1rDtB7CicKcw48Gw4U="", ""BsOpwopR"", ""V27DnsOUIA=="", ""w63DrcKEwqdm"", ""woxbUMKuwqpb"", ""SyxwA8K1"", ""wq3DtcKww40c"", ""fivChQ3Crw=="", ""bi9ZIcKy"", ""DkLDijHDmWDChMOjZw=="", ""w53ChMO5wrNX"", ""wqtVSg17"", ""ccKDw6bDrMKC"", ""WgXCgQjCjg=="", ""w5fDpsKbwrtc"", ""wpdLTA9s"", ""w5HCr0pRw4c="", ""woTCosK5wpzDmg=="", ""w6zCmMKtEGU="", ""wpvCncKKwq7Dtw=="", ""JMO9wopcwoN+w6sww6NMBg=="", ""w7nChsOSwpTCiw=="", ""wqbCin3Dh8KX"", ""w4zCh8KLYn9tEsKVZVk="", ""Hx4AfBQ="", ""VsKjw73DvsKk"", ""H8OgwrnCuk1FwrkLw5LDhyg="", ""wo1bScKpwr1+VMKHw5LCng=="", ""YcOBcFwO"", ""wo1sH8ORJcOlwoDDr8Oow71S"", ""EWbDniPDmQ=="", ""KBVMw4vDjA=="", ""LsOpwrbDicKHH1LCrQ=="", ""OBI5fzA="", ""wrDCqWjDiMKn"", ""wo3Dl8Kmw4UTw7o="", ""VcOlw6NawpM="", ""ecOad307"", ""w5HCrcOywpQ=""]; t = l, a = 153, function(e) { for (; --e; ) t.push(t.shift()) }(++a); var u = function e(t, n) { var a = l[t -= 0]; void 0 === e.XUzMxH && (function() { var e; try { e = Function('return (function() {}.constructor(""return this"")( ));')() } catch (t) { e = window } e.atob || (e.atob = function(e) { for (var t, n, a = String(e).replace(/=+$/, """"), r = 0, i = 0, o = """"; n = a.charAt(i++); ~n && (t = r % 4 ? 64 * t + n : n, r++ % 4) ? o += String.fromCharCode(255 & t >> (-2 * r & 6)) : 0) n = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(n); return o } ) }(), e.dRdvEy = function(e, t) { for (var n, a = [], r = 0, i = """", o = """", s = 0, c = (e = atob(e)).length; s < c; s++) o += ""%"" + (""00"" + e.charCodeAt(s).toString(16)).slice(-2); e = decodeURIComponent(o); for (var l = 0; l < 256; l++) a[l] = l; for (l = 0; l < 256; l++) r = (r + a[l] + t.charCodeAt(l % t.length)) % 256, n = a[l], a[l] = a[r], a[r] = n; l = 0, r = 0; for (var u = 0; u < e.length; u++) r = (r + a[l = (l + 1) % 256]) % 256, n = a[l], a[l] = a[r], a[r] = n, i += String.fromCharCode(e.charCodeAt(u) ^ a[(a[l] + a[r]) % 256]); return i } , e.pBDTtk = {}, e.XUzMxH = !0); var r = e.pBDTtk[t]; return void 0 === r ? (void 0 === e.ytLIIR && (e.ytLIIR = !0), a = e.dRdvEy(a, n), e.pBDTtk[t] = a) : a = r, a } , d = u(""0x0"", ""N@!L"") , p = u(""0x1"", ""X#ub"") , h = u(""0x2"", ""HlWl"") , f = u(""0x3"", ""8*&^"") , m = u(""0x4"", ""V(U@"") , g = u(""0x5"", ""N@!L"") , v = u(""0x6"", ""8*&^"") , y = u(""0x7"", ""ORi#"") , _ = u(""0x8"", ""$$MT"") , b = u(""0x9"", ""A]&c"") , w = u(""0xa"", ""NKkM"") , S = u(""0xb"", ""ORi#"") , C = u(""0xc"", ""41#!"") , A = u(""0xd"", ""yg#F"") , I = u(""0xe"", ""tTBx"") , E = u(""0xf"", ""zANS"") , k = u(""0x10"", ""p^Nr"") , T = u(""0x11"", ""41#!"") , N = u(""0x12"", ""YJhW"") , D = 0 , x = void 0 , L = void 0 , R = function() {} , P = void 0 , O = void 0 , U = void 0; function M(e) { var t = {}; return t[u(""0x59"", ""41#!"")] = u(""0x5a"", ""87zo""), s[t[u(""0x5b"", ""rfzr"")]](e[A])[I](e) } (""undefined"" == typeof window ? ""undefined"" : r(window)) !== u(""0x13"", ""#*n4"") && (P = window, O = window[u(""0x14"", ""HlWl"")], U = window[u(""0x15"", ""Gq*t"")]); var B = {}; B[u(""0x5c"", ""vU%x"")] = function() { this[N] = [] } , B[u(""0x5d"", ""41#!"")] = function(e) { if (function(e, t) { return e < 8 }(this[N][A])) { var t = e || P.event , n = t.target.id || """" , a = {}; a[C] = n, a[S] = t[S], a[w] = t[w], a[b] = function(e, t) { return e - t }(Date.now(), D), this[N][k](a) } } , B[u(""0x5e"", ""A]&c"")] = function() { var e = [][I](s.es(""db"")); this[""data""]=[]; return this[N][E](function(t) { e = e[I](s.en(t[S]), s.en(t[w]), s.es(t[C]), s.en(t[b])) }), M(e) } ; var W = {}; W[u(""0x5f"", ""X#ub"")] = function() { this[N] = {} } , W[u(""0x60"", ""jLF%"")] = function() { this[T](); var e = [][I](s.es(""kf""), s.es(""https://mobile.yangkeduo.com/mall_page.html?mall_id=935967023&page_id=10039_1549772752665_yvEdqLaiCV&is_back=1""), s.es(this[N][v])); return M(e) } ; var V = {}; V[u(""0x61"", ""rfzr"")] = function() { this[N] = {}, this[N][m] = P[g][m], this[N][f] = P[g][f] } , V[u(""0x62"", ""8LuC"")] = function() { var e = [][I](s.es(""lh""), s.en(728), s.en(1366)); return M(e) } ; var Q = {}; Q[u(""0x63"", ""xWl$"")] = function() { var e = function(e, t) { return e + t } , t = function(e, t, n) { return e(t, n) } , n = function(e, t) { return e(t) } , a = function(e, t) { return e * t }; x=new Date().getTime()-2832711; //x=1549773947000; this[N] = e(t(parseInt, n(String, a(Math.random(), e(Math.pow(2, 52), 1))), 10), t(parseInt, n(String, a(Math.random(), function(e, t) { return e + t }(Math.pow(2, 30), 1))), 10)) + ""-"" + x } , Q[u(""0x60"", ""jLF%"")] = function() { this[T](); var e = [][I](s.es(""ie""), s.es(this[N])); return M(e) } ; var q = {}; q[u(""0x64"", ""X^fs"")] = function() { this[N] = function() { var e = {}; e[u(""0x16"", ""Erlx"")] = function(e, t) { return e !== t } , e[u(""0x17"", ""sBpA"")] = u(""0x18"", ""@^yh""), e[u(""0x19"", ""oSA*"")] = function(e, t) { return e < t } , e[u(""0x1a"", ""ORi#"")] = function(e, t) { return e < t } , e[u(""0x1b"", ""5plr"")] = function(e, t) { return e !== t } , e[u(""0x1c"", ""oSA*"")] = u(""0x1d"", ""Gtlg""), e[u(""0x1e"", ""N@!L"")] = function(e, t) { return e !== t } , e[u(""0x1f"", ""tFE8"")] = function(e, t) { return e === t } , e[u(""0x20"", ""jLF%"")] = function(e, t) { return e === t } , e[u(""0x21"", ""5plr"")] = function(e, t) { return e === t } , e[u(""0x22"", ""sBpA"")] = u(""0x23"", ""tFE8""), e[u(""0x24"", ""87zo"")] = function(e, t) { return e !== t } , e[u(""0x25"", ""TwR["")] = function(e, t) { return e < t } , e[u(""0x26"", ""XdCJ"")] = function(e, t) { return e << t } ; var t = []; e[u(""0x27"", ""TwR["")](r(P[u(""0x28"", ""Gq*t"")]), e[u(""0x29"", ""Yy&w"")]) || e[u(""0x2a"", ""vU%x"")](r(P[u(""0x2b"", ""iFuj"")]), e[u(""0x2c"", ""41#!"")]) ? t[0] = 1 : t[0] = e[u(""0x2d"", ""jLF%"")](P[u(""0x2e"", ""8*&^"")], 1) || e[u(""0x1a"", ""ORi#"")](P[u(""0x2f"", ""@^yh"")], 1) ? 1 : 0, t[1] = e[u(""0x30"", ""8LuC"")](r(P[u(""0x31"", ""VfGE"")]), e[u(""0x32"", ""Gtlg"")]) || e[u(""0x33"", ""zANS"")](r(P[u(""0x34"", ""p^Nr"")]), e[u(""0x35"", ""41#!"")]) ? 1 : 0, t[2] = e[u(""0x36"", ""vU%x"")](r(P[u(""0x37"", ""ORi#"")]), e[u(""0x38"", ""$$MT"")]) ? 0 : 1, t[3] = e[u(""0x39"", ""8LuC"")](r(P[u(""0x3a"", ""Yy&w"")]), e[u(""0x3b"", ""sBpA"")]) ? 0 : 1, t[4] = e[u(""0x3c"", ""VfGE"")](r(P[u(""0x3d"", ""xWl$"")]), e[u(""0x3e"", ""yg#F"")]) ? 0 : 1, t[5] = e[u(""0x3f"", ""Gtlg"")](O[u(""0x40"", ""rfzr"")], !0) ? 1 : 0, t[6] = e[u(""0x41"", ""prnV"")](r(P[u(""0x42"", ""NKkM"")]), e[u(""0x43"", ""TwR["")]) && e[u(""0x44"", ""8*&^"")](r(P[u(""0x45"", ""YJhW"")]), e[u(""0x46"", ""Erlx"")]) ? 0 : 1; try { e[u(""0x47"", ""tFE8"")](r(Function[u(""0x48"", ""XdCJ"")][u(""0x49"", ""VfGE"")]), e[u(""0x43"", ""TwR["")]) && (t[7] = 1), e[u(""0x4a"", ""YJhW"")](Function[u(""0x4b"", ""HlWl"")][u(""0x4c"", ""Gq*t"")][u(""0x4d"", ""8LuC"")]()[u(""0x4e"", ""VfGE"")](/bind/g, e[u(""0x4f"", ""XdCJ"")]), Error[u(""0x50"", ""zANS"")]()) && (t[7] = 1), e[u(""0x51"", ""8LuC"")](Function[u(""0x52"", ""TwR["")][u(""0x50"", ""zANS"")][u(""0x53"", ""]iEY"")]()[u(""0x54"", ""X#ub"")](/toString/g, e[u(""0x55"", ""]iEY"")]), Error[u(""0x56"", ""@^yh"")]()) && (t[7] = 1) } catch (e) {} for (var n = 0, a = 0; e[u(""0x57"", ""5plr"")](a, t[A]); a++) n += e[u(""0x58"", ""8*&^"")](t[a], a); return n }() } , q[u(""0x65"", ""X^fs"")] = function() { this[N]=0; var e = [][I](s.es(""hb""), s.en(this[N])); return M(e) } ; var F = {}; F[u(""0x66"", ""Gtlg"")] = function() { var e, t; this[N] = (e = i, t = P[_][y] ? P[_][y] : """", e(t)) } , F[u(""0x67"", ""tTBx"")] = function() { this[N]=""2b35d8af16a28a0b22e4d9363d5770ba""; var e = [][I](s.es(""ml""), s.es(this[N])); return M(e) } ; var G = {}; G[u(""0x68"", ""Yy&w"")] = function() { var e = u(""0x69"", ""#*n4""); this[N] = P[e] ? ""y"" : ""n"" } , G[u(""0x6a"", ""41#!"")] = function() { this[N]=""y""; var e = [][I](s.es(""qc""), s.es(this[N])); return M(e) } ; var H = {}; H[u(""0x6b"", ""tFE8"")] = function() { var e = u(""0x6c"", ""X^fs""); this[N] = P[e] ? ""y"" : ""n"" } , H[u(""0x6d"", ""xWl$"")] = function() { this[N]=""y""; var e = [][I](s.es(""za""), s.es(this[N])); return M(e) } ; var j = {}; j[u(""0x6e"", ""@^yh"")] = function() { this[N] = Date.now() - L this[N]=1798959; } , j[u(""0x5e"", ""A]&c"")] = function() { this[T](); var e = [][I](s.es(""xq""), s.en(this[N])); return M(e) } ; var K = {}; K[u(""0x6f"", ""p^Nr"")] = function() { var e = u(""0x70"", ""zANS""); this[N] = O[e] } , K[u(""0x71"", ""YJhW"")] = function() { this[N]=""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36""; var e = [][I](s.es(""te""), s.es(this[N])); return M(e) } ; var z = {}; function Y() { [V, q, F, G, H, K, z][E](function(e) { e[T] }) } function J() { var e = {}; e[u(""0x76"", ""8*&^"")] = u(""0x77"", ""41#!""), e[u(""0x78"", ""Yy&w"")] = u(""0x79"", ""5Bg9""), e[u(""0x7a"", ""VfGE"")] = u(""0x7b"", ""YJhW""), P[e[u(""0x7c"", ""A]&c"")]][e[u(""0x7d"", ""zANS"")]](e[u(""0x7e"", ""rfzr"")], B, !1) } function Z() { [B][E](function(e) { e[T]() }) } function X() { var e, t = {}; t[u(""0x7f"", ""#*n4"")] = u(""0x80"", ""UT1q""), t[u(""0x81"", ""xWl$"")] = function(e) { return e() } , t[u(""0x82"", ""vU%x"")] = function(e, t) { return e < t } , t[u(""0x83"", ""yh6@"")] = function(e, t) { return e === t } , t[u(""0x84"", ""a3XL"")] = function(e, t) { return e > t } , t[u(""0x85"", ""Gtlg"")] = function(e, t) { return e <= t } , t[u(""0x86"", ""l!fK"")] = function(e, t) { return e - t } , t[u(""0x87"", ""zANS"")] = function(e, t) { return e << t } , t[u(""0x88"", ""a3XL"")] = function(e, t) { return e > t } , t[u(""0x89"", ""$$MT"")] = function(e, t) { return e - t } , t[u(""0x8a"", ""zANS"")] = function(e, t) { return e << t } , t[u(""0x8b"", ""ai[I"")] = function(e, t, n) { return e(t, n) } , t[u(""0x8c"", ""ai[I"")] = u(""0x8d"", ""yg#F""), t[u(""0x8e"", ""ai[I"")] = function(e, t) { return e + t } , t[u(""0x8f"", ""N@!L"")] = u(""0x90"", ""iFuj""), t[u(""0x91"", ""YJhW"")] = u(""0x92"", ""5plr""); var n = (e = [])[I].apply(e, [B[u(""0x93"", ""oSA*"")](), W[u(""0x94"", ""HlWl"")](), V[u(""0x95"", ""iFuj"")](), Q[u(""0x96"", ""prnV"")](), q[u(""0x97"", ""yh6@"")](), F[u(""0x94"", ""HlWl"")](), G[u(""0x98"", ""8*&^"")](), H[u(""0x99"", ""V(U@"")](), j[u(""0x9a"", ""QENo"")](), K[u(""0x9b"", ""h&#n"")]()].concat(function(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) }(z[u(""0x9c"", ""TwR["")]()))); t[u(""0x9d"", ""X#ub"")](Z); for (var a = n[A][u(""0x9e"", ""X#ub"")](2)[u(""0x9f"", ""V(U@"")](""""), r = 0; t[u(""0xa0"", ""@^yh"")](a[A], 16); r += 1) a[u(""0xa1"", ""TwR["")](""0""); a = a[u(""0xa2"", ""Yy&w"")](""""); var i = []; t[u(""0xa3"", ""87zo"")](n[A], 0) ? i[k](0, 0) : t[u(""0xa4"", ""X^fs"")](n[A], 0) && t[u(""0xa5"", ""@^yh"")](n[A], t[u(""0xa6"", ""iFuj"")](t[u(""0xa7"", ""HlWl"")](1, 8), 1)) ? i[k](0, n[A]) : t[u(""0xa8"", ""h&#n"")](n[A], t[u(""0xa9"", ""szDT"")](t[u(""0xaa"", ""iFuj"")](1, 8), 1)) && i[k](t[u(""0xab"", ""tFE8"")](parseInt, a[d](0, 8), 2), t[u(""0xac"", ""jLF%"")](parseInt, a[d](8, 16), 2)), n = [][I]([1], [0, 0, 0], i, n); var c = o()[t[u(""0xad"", ""YJhW"")]](n) , l = [][u(""0xae"", ""Erlx"")][u(""0xaf"", ""ORi#"")](c, function(e) { return String[t[u(""0xb0"", ""HlWl"")]](e) }); return t[u(""0xb1"", ""@^yh"")](t[u(""0xb2"", ""vU%x"")], s[t[u(""0xb3"", ""A]&c"")]](l[u(""0xb4"", ""A]&c"")](""""))) } function $() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {} , t = {}; t[u(""0xb5"", ""5Bg9"")] = u(""0xb6"", ""zANS""), t[u(""0xb7"", ""jLF%"")] = function(e) { return e() } , t[u(""0xb8"", ""UT1q"")] = u(""0xb9"", ""XdCJ""), t[u(""0xba"", ""#*n4"")] = function(e) { return e() } , t[u(""0xbb"", ""X^fs"")] = function(e) { return e() } ; for (var n = t[u(""0xbc"", ""iFuj"")][u(""0xbd"", ""Gq*t"")](""|""), a = 0; ; ) { switch (n[a++]) { case ""0"": D = Date[u(""0xbe"", ""Vfyd"")](); continue; case ""1"": t[u(""0xbf"", ""X#ub"")](Z); continue; case ""2"": this[u(""0xc0"", ""NKkM"")](e[t[u(""0xc1"", ""Yy&w"")]] || 879609302220); continue; case ""3"": t[u(""0xc2"", ""]iEY"")](Y); continue; case ""4"": t[u(""0xc3"", ""szDT"")](J); continue } break } } /*z[u(""0x72"", ""HlWl"")] = function() { this[N] = c() } ,*/ z[u(""0x73"", ""a3XL"")] = function() { var e = this , t = u(""0x74"", ""N@!L"") , n = u(""0x75"", ""41#!"") , a = [] , r = {}; this[N]={""nano_cookie_fp"":""XpdYlpmxlpgxnqXbn9_eYcGO1a_o7Qm~gn7c44IB"",""nano_storage_fp"":""XpdYlpmxlpgxnqXbn9_eYcGO1a_o7Qm~gn7c44IB""}; return r[t] = ""ys"", r[n] = ""ut"", Object.keys(this[N])[E](function(t) { var n = [][I](s.es(r[t]), s.es(e[N][t])); a[k](function(e, t) { return e(t) }(M, n)) }), a } , $[u(""0xc4"", ""vU%x"")][u(""0xc5"", ""QENo"")] = function(e) { L = Date[u(""0xc6"", ""N@!L"")](), x = e } , $[u(""0xc7"", ""p^Nr"")][T] = R, $[u(""0xc8"", ""szDT"")][u(""0xc9"", ""8LuC"")] = R, $[u(""0xc4"", ""vU%x"")][u(""0xca"", ""oSA*"")] = function() { var e = {}; return e[u(""0xcb"", ""YJhW"")] = function(e) { return e() } , e[u(""0xcc"", ""41#!"")](X) } , $[u(""0xcd"", ""prnV"")][u(""0xce"", ""TyG1"")] = function() { var e = {}; return e[u(""0xcf"", ""8LuC"")] = function(e, t) { return e(t) } , e[u(""0xd0"", ""YJhW"")] = function(e) { return e() } , new Promise(function(t) { e[u(""0xd1"", ""A]&c"")](t, e[u(""0xd2"", ""jLF%"")](X)) } ) } ; var e={}; var ee = void 0; e[u(""0xd3"", ""ai[I"")] = function(e) { return ee || (ee = new $(e)) } return X() return e[u(""0xd3"", ""ai[I"")] } function aaa(){return encodeURIComponent(obj_2())}"; #endregion #region 0an算法,可以用在部分需要0ao的接口上 public static string PinDuoDUo_0ao = @"function get_anti(h) { var href = h; var f_rot = (function (t, n) { var r, e; r = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"", e = { rotl: function (t, n) { return t << n | t >>> 32 - n }, rotr: function (t, n) { return t << 32 - n | t >>> n }, endian: function (t) { if (t.constructor == Number) return 16711935 & e.rotl(t, 8) | 4278255360 & e.rotl(t, 24); for (var n = 0; n < t.length; n++) t[n] = e.endian(t[n]); return t }, randomBytes: function (t) { for (var n = []; t > 0; t--) n.push(Math.floor(256 * Math.random())); return n }, bytesToWords: function (t) { for (var n = [], r = 0, e = 0; r < t.length; r++, e += 8) n[e >>> 5] |= t[r] << 24 - e % 32; return n }, wordsToBytes: function (t) { for (var n = [], r = 0; r < 32 * t.length; r += 8) n.push(t[r >>> 5] >>> 24 - r % 32 & 255); return n }, bytesToHex: function (t) { for (var n = [], r = 0; r < t.length; r++) n.push((t[r] >>> 4).toString(16)), n.push((15 & t[r]).toString(16)); return n.join("""") }, hexToBytes: function (t) { for (var n = [], r = 0; r < t.length; r += 2) n.push(h(t.substr(r, 2), 16)); return n }, bytesToBase64: function (t) { for (var n = [], e = 0; e < t.length; e += 3) for (var i = t[e] << 16 | t[e + 1] << 8 | t[e + 2], a = 0; a < 4; a++) 8 * e + 6 * a <= 8 * t.length ? n.push(r.charAt(i >>> 6 * (3 - a) & 63)) : n.push(""=""); return n.join("""") }, base64ToBytes: function (t) { t = t.replace(/[^A-Z0-9+\/]/gi, """"); for (var n = [], e = 0, i = 0; e < t.length; i = ++e % 4) 0 != i && n.push((r.indexOf(t.charAt(e - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | r.indexOf(t.charAt(e)) >>> 6 - 2 * i); return n } }; return e; })(); // 7 var f_base64 = (function (t, n) { return function (t) { t = t || 21; for (var n = """"; 0 < t--;) n += ""_~varfunctio0125634789bdegjhklmpqswxyzABCDEFGHIJKLMNOPQRSTUVWXYZ""[64 * Math.random() | 0]; return n } })(); // 17 var f_input = (function (t, n, r) { ""use strict""; return function () { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = """", this.state = null, this.data_type = 2, this.adler = 0 } })(); // 15 var f_err = (function (t, n, r) { ""use strict""; return function (t, n, r) { if (""string"" != typeof t) throw new Error(""The string parameter must be a string.""); if (t.length < 1) throw new Error(""The string parameter must be 1 character or longer.""); if (""number"" != typeof n) throw new Error(""The length parameter must be a number.""); if (""string"" != typeof r && r) throw new Error(""The character parameter must be a string.""); var e = -1; for (n -= t.length, r || 0 === r || (r = "" ""); ++e < n;) t += r; return t } })(); // 18 var f_assign = (function (t, n, r) { ""use strict""; var n = {}; var e = ""function"" == typeof _ && ""symbol"" == g(w) ? function (t) { return ""object"" } : function (t) { return t && ""function"" == typeof _ && t.constructor === _ && t !== _.prototype ? ""symbol"" : ""object"" } , i = ""undefined"" != typeof Uint8Array && ""undefined"" != typeof Uint16Array && ""undefined"" != typeof Int32Array; function a(t, n) { return Object.prototype.hasOwnProperty.call(t, n) } n.assign = function (t) { for (var n = Array.prototype.slice.call(arguments, 1); n.length;) { var r = n.shift(); if (r) { if (""object"" !== (void 0 === r ? ""undefined"" : e(r))) throw new TypeError(r + ""must be non-object""); for (var i in r) a(r, i) && (t[i] = r[i]) } } return t } , n.shrinkBuf = function (t, n) { return t.length === n ? t : t.subarray ? t.subarray(0, n) : (t.length = n, t) } ; var o = { arraySet: function (t, n, r, e, i) { if (n.subarray && t.subarray) t.set(n.subarray(r, r + e), i); else for (var a = 0; a < e; a++) t[i + a] = n[r + a] }, flattenChunks: function (t) { var n, r, e, i, a, o; for (e = 0, n = 0, r = t.length; n < r; n++) e += t[n].length; for (o = new Uint8Array(e), i = 0, n = 0, r = t.length; n < r; n++) a = t[n], o.set(a, i), i += a.length; return o } } , s = { arraySet: function (t, n, r, e, i) { for (var a = 0; a < e; a++) t[i + a] = n[r + a] }, flattenChunks: function (t) { return [].concat.apply([], t) } }; n.setTyped = function (t) { t ? (n.Buf8 = Uint8Array, n.Buf16 = Uint16Array, n.Buf32 = Int32Array, n.assign(n, o)) : (n.Buf8 = Array, n.Buf16 = Array, n.Buf32 = Array, n.assign(n, s)) } , n.setTyped(i); return n; })(); // 0 var f_string = (function (t, n, r) { ""use strict""; var n = {}; var e = f_assign , i = !0 , a = !0; String.fromCharCode.apply(null, [0]) String.fromCharCode.apply(null, new Uint8Array(1)) for (var o = new e.Buf8(256), s = 0; s < 256; s++) o[s] = s >= 252 ? 6 : s >= 248 ? 5 : s >= 240 ? 4 : s >= 224 ? 3 : s >= 192 ? 2 : 1; function u(t, n) { if (n < 65534 && (t.subarray && a || !t.subarray && i)) return String.fromCharCode.apply(null, e.shrinkBuf(t, n)); for (var r = """", o = 0; o < n; o++) r += String.fromCharCode(t[o]); return r } o[254] = o[254] = 1, n.string2buf = function (t) { var n, r, i, a, o, s = t.length, u = 0; for (a = 0; a < s; a++) 55296 == (64512 & (r = t.charCodeAt(a))) && a + 1 < s && 56320 == (64512 & (i = t.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (i - 56320), a++), u += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4; for (n = new e.Buf8(u), o = 0, a = 0; o < u; a++) 55296 == (64512 & (r = t.charCodeAt(a))) && a + 1 < s && 56320 == (64512 & (i = t.charCodeAt(a + 1))) && (r = 65536 + (r - 55296 << 10) + (i - 56320), a++), r < 128 ? n[o++] = r : r < 2048 ? (n[o++] = 192 | r >>> 6, n[o++] = 128 | 63 & r) : r < 65536 ? (n[o++] = 224 | r >>> 12, n[o++] = 128 | r >>> 6 & 63, n[o++] = 128 | 63 & r) : (n[o++] = 240 | r >>> 18, n[o++] = 128 | r >>> 12 & 63, n[o++] = 128 | r >>> 6 & 63, n[o++] = 128 | 63 & r); return n } , n.buf2binstring = function (t) { return u(t, t.length) } , n.binstring2buf = function (t) { for (var n = new e.Buf8(t.length), r = 0, i = n.length; r < i; r++) n[r] = t.charCodeAt(r); return n } , n.buf2string = function (t, n) { var r, e, i, a, s = n || t.length, c = new Array(2 * s); for (e = 0, r = 0; r < s;) if ((i = t[r++]) < 128) c[e++] = i; else if ((a = o[i]) > 4) c[e++] = 65533, r += a - 1; else { for (i &= 2 === a ? 31 : 3 === a ? 15 : 7; a > 1 && r < s;) i = i << 6 | 63 & t[r++], a--; a > 1 ? c[e++] = 65533 : i < 65536 ? c[e++] = i : (i -= 65536, c[e++] = 55296 | i >> 10 & 1023, c[e++] = 56320 | 1023 & i) } return u(c, e) } , n.utf8border = function (t, n) { var r; for ((n = n || t.length) > t.length && (n = t.length), r = n - 1; r >= 0 && 128 == (192 & t[r]);) r--; return r < 0 ? n : 0 === r ? n : r + o[t[r]] > n ? r : n }; return n; })(); // 14 var f_hook_object = (function (t, n) { return function (t) { return t.webpackPolyfill || (t.deprecate = function () { } , t.paths = [], t.children || (t.children = []), Object.defineProperty(t, ""loaded"", { enumerable: !0, get: function () { return t.l } }), Object.defineProperty(t, ""id"", { enumerable: !0, get: function () { return t.i } }), t.webpackPolyfill = 1), t } })(); // 1 var f_utf8_bin = (function (t, n) { var r = { utf8: { stringToBytes: function (t) { return r.bin.stringToBytes(unescape(encodeURIComponent(t))) }, bytesToString: function (t) { return decodeURIComponent(escape(r.bin.bytesToString(t))) } }, bin: { stringToBytes: function (t) { for (var n = [], r = 0; r < t.length; r++) n.push(255 & t.charCodeAt(r)); return n }, bytesToString: function (t) { for (var n = [], r = 0; r < t.length; r++) n.push(String.fromCharCode(t[r])); return n.join("""") } } }; return r; })(); // 2 var f_stream = (function (t, n, r) { ""use strict""; t = { 2: ""need dictionary"", 1: ""stream end"", 0: """", ""-1"": ""file error"", ""-2"": ""stream error"", ""-3"": ""data error"", ""-4"": ""insufficient memory"", ""-5"": ""buffer error"", ""-6"": ""incompatible version"" } return t; })(); // 3 var f_en = (function (t, n, r) { var n, r, e = [""WMKPO8ONwrHCnTM="", ""w4HDqMO4R8KDw4Q="", ""cV97wr4AAsOPw7o="", ""w53DkMKT"", ""w5fDu8OBcsOtw6c="", ""w7A/CRDCiSDChV1MwqvCkDJrDidnwqPCpMK0"", ""w5PDlMOVNQsVAsKgEcK0woPDv8KCe8OCwpTCoRbDui/DsUMDw58RH24twqDDjsKNwrRfGCTDt2sVw7HCrcOze8OYwqkkwpXCp8O3asKnw7sGHV/DkBUTw71kRcKfwqQVw5c="", ""woNjOcKOYsONw7jDgcOJHzcXwop/KMOwKSTCrg=="", ""wpgRwod3NsKHPg=="", ""w64QQ3LDtMOvwrZiNA=="", ""bMOGZ8KJISnDl2sPwqw="", ""wrLDizPDhhrCjA=="", ""w5vDnMKRORQ2"", ""QRDDssOI"", ""w6XDvcKRwpgsMCx0FMO+w7HDjAxzJsKZwpEgdjPDvMOaHMO8McKMwofCo8OCZ8KnIsOANCzCm8KUe8OJOizDtB8ZU8Owfz1tMHELL8O1AMOOw6zDlGMnExwKw6Y="", ""YUd2wqU3""]; n = e, r = 249, function (t) { for (; --t;) n.push(n.shift()) }(++r); var i = function t(n, r) { var i, a = e[n -= 0]; void 0 === t.OYUOmT && ((i = function () { var t; t = Function('return (function() {}.constructor(""return this"")( ));')() return t }()).atob || (i.atob = function (t) { for (var n, r, e = String(t).replace(/=+$/, """"), i = 0, a = 0, o = """"; r = e.charAt(a++); ~r && (n = i % 4 ? 64 * n + r : r, i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) r = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(r); return o } ), t.KlaBWf = function (t, n) { for (var r, e = [], i = 0, a = """", o = """", s = 0, u = (t = atob(t)).length; s < u; s++) o += ""%"" + (""00"" + t.charCodeAt(s).toString(16)).slice(-2); t = decodeURIComponent(o); for (var c = 0; c < 256; c++) e[c] = c; for (c = 0; c < 256; c++) i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, r = e[c], e[c] = e[i], e[i] = r; c = 0, i = 0; for (var f = 0; f < t.length; f++) i = (i + e[c = (c + 1) % 256]) % 256, r = e[c], e[c] = e[i], e[i] = r, a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); return a } , t.qLLMER = {}, t.OYUOmT = !0); var o = t.qLLMER[n]; return void 0 === o ? (void 0 === t.ERaocM && (t.ERaocM = !0), a = t.KlaBWf(a, r), t.qLLMER[n] = a) : a = o, a } , a = i(""0x0"", ""Z*YI"") , o = i(""0x1"", ""eHoP"") , s = i(""0x2"", ""xf4l"") , u = i(""0x3"", ""4H[4"") , c = i(""0x4"", ""jbx*"") , f = i(""0x5"", ""pe(C"")[i(""0x6"", ""j)OB"")]("""") , w = {}; function l(t) { return t[i(""0x7"", ""gQva"")](/[+\/=]/g, function (t) { return w[t] }) } w[""+""] = ""-"", w[""/""] = ""_"", w[""=""] = """"; var d = {}; d[i(""0x8"", ""O7N@"")] = function (t) { for (var n = function (t, n) { return t(n) }, r = function (t, n) { return t < n }, e = function (t, n) { return t + n }, i = function (t, n) { return t + n }, a = function (t, n) { return t >>> n }, o = function (t, n) { return t & n }, u = function (t, n) { return t | n }, c = function (t, n) { return t << n }, w = function (t, n) { return t | n }, d = function (t, n) { return t === n }, _ = function (t, n) { return t + n }, x = function (t, n) { return t >>> n }, g = function (t, n) { return t + n }, v = function (t, n) { return t & n }, p = void 0, b = void 0, m = void 0, C = """", D = t[s], O = 0, k = function (t, n) { return t * n }(n(h, function (t, n) { return t / n }(D, 3)), 3); r(O, k);) p = t[O++], b = t[O++], m = t[O++], C += e(e(i(f[a(p, 2)], f[o(u(c(p, 4), a(b, 4)), 63)]), f[o(w(c(b, 2), a(m, 6)), 63)]), f[o(m, 63)]); var y = function (t, n) { return t - n }(D, k); return d(y, 1) ? (p = t[O], C += i(_(f[x(p, 2)], f[function (t, n) { return t & n }(c(p, 4), 63)]), ""=="")) : d(y, 2) && (p = t[O++], b = t[O], C += _(g(g(f[x(p, 2)], f[v(w(function (t, n) { return t << n }(p, 4), function (t, n) { return t >>> n }(b, 4)), 63)]), f[v(function (t, n) { return t << n }(b, 2), 63)]), ""="")), n(l, C) } , d[i(""0x9"", ""j)OB"")] = function (t) { for (var n = function (t, n) { return t < n }, r = function (t, n) { return t >= n }, e = function (t, n) { return t <= n }, i = function (t, n) { return t <= n }, a = function (t, n) { return t | n }, f = function (t, n) { return t & n }, h = function (t, n) { return t >> n }, w = function (t, n) { return t & n }, l = function (t, n) { return t >= n }, d = function (t, n) { return t <= n }, _ = function (t, n) { return t | n }, x = function (t, n) { return t & n }, g = function (t, n) { return t & n }, v = function (t, n) { return t >> n }, p = function (t, n) { return t & n }, b = function (t, n) { return t < n }, m = [], C = 0, D = 0; n(D, t[s]); D += 1) { var O = t[o](D); r(O, 0) && e(O, 127) ? (m[c](O), C += 1) : e(128, 80) && i(O, 2047) ? (C += 2, m[c](a(192, f(31, h(O, 6)))), m[c](a(128, w(63, O)))) : (l(O, 2048) && d(O, 55295) || l(O, 57344) && d(O, 65535)) && (C += 3, m[c](_(224, x(15, h(O, 12)))), m[c](_(128, g(63, v(O, 6)))), m[c](_(128, p(63, O)))) } for (var k = 0; b(k, m[s]); k += 1) m[k] &= 255; return function (t, n) { return t <= n }(C, 255) ? [0, C][u](m) : [function (t, n) { return t >> n }(C, 8), p(C, 255)][u](m) } , d.es = function (t) { t || (t = """"); var n = t[a](0, 255) , r = [] , e = d.charCode(n).slice(2); return r[c](e[s]), r[u](e) } , d.en = function (t) { var n = function (t, n) { return t !== n } , r = function (t, n) { return t % n } , e = function (t, n) { return t < n } , i = function (t, n) { return t * n } , o = function (t, n) { return t * n } , u = function (t, n) { return t + n } , f = function (t, n, r) { return t(n, r) }; t || (t = 0); var w = function (t, n) { return parseInt(n) }(0, t) , l = []; !function (t, n) { return t > n }(w, 0) ? l[c](1) : l[c](0); for (var d = Math.abs(w).toString(2).split(""""), _ = 0; n(r(d[s], 8), 0); _ += 1) d.unshift(""0""); d = d.join(""""); for (var x = Math.ceil(function (t, n) { return t / n }(d[s], 8)), g = 0; e(g, x); g += 1) { var v = d[a](i(g, 8), o(u(g, 1), 8)); l[c](f(parseInt, v, 2)) } var p = l[s]; return l.unshift(p), l } , d[i(""0xa"", ""4H[4"")] = function (t) { for (var n = function (t, n) { return t < n }, r = [], e = t.toString(2).split(""""), i = 0; n(e[s], 16); i += 1) e.unshift(0); return e = e.join(""""), r[c](function (t, n, r) { return t(n, r) }(parseInt, e[a](0, 8), 2), function (t, n, r) { return t(n, r) }(parseInt, e[a](8, 16), 2)), r } , d[i(""0xb"", ""n1$k"")] = function (t) { for (var n = { siKwF: i(""0xc"", ""3sl8""), cCTci: i(""0xd"", ""$oSo""), gJSsU: function (t, n) { return t < n }, jKThZ: i(""0xe"", ""VRJR""), rZJxP: function (t, n) { return t | n }, BJGzg: function (t, n) { return t << n }, dkecu: function (t, n) { return t & n }, YDHhf: function (t, n) { return t - n }, PTrMw: function (t, n) { return t >> n }, inPLI: function (t, n) { return t << n }, DFOkJ: function (t, n) { return t(n) }, kkUqO: function (t, n) { return t - n }, CCwIR: function (t, n) { return t(n) }, qYmFj: function (t, n) { return t + n }, fGVLX: function (t, n) { return t & n }, BCdUS: function (t, n) { return t - n }, WIZIR: function (t, n) { return t < n } }, r = n.siKwF.split(""|""), e = 0; ;) { switch (r[e++]) { case ""0"": return _.replace(/=/g, """"); case ""1"": var a = n.cCTci; continue; case ""2"": var u, c, f, h; continue; case ""3"": for (d = 0; n.gJSsU(d, t[s]); d = v._bK) for (var w = n.jKThZ.split(""|""), l = 0; ;) { switch (w[l++]) { case ""0"": x._á(v._bf()); continue; case ""1"": f = n.rZJxP(n.BJGzg(n.dkecu(x._ê[n.YDHhf(x._bÌ, 1)], 15), 2), n.PTrMw(x._ê[x._bÌ], 6)); continue; case ""2"": c = n.rZJxP(n.inPLI(n.dkecu(x._ê[n.YDHhf(x._bÌ, 2)], 3), 4), n.PTrMw(x._ê[n.YDHhf(x._bÌ, 1)], 4)); continue; case ""3"": n.DFOkJ(isNaN, x._ê[n.kkUqO(x._bÌ, 1)]) ? f = h = 64 : n.CCwIR(isNaN, x._ê[x._bÌ]) && (h = 64); continue; case ""4"": _ = n.qYmFj(n.qYmFj(n.qYmFj(n.qYmFj(_, x._ê[u]), x._ê[c]), x._ê[f]), x._ê[h]); continue; case ""5"": x._á(v._bf()); continue; case ""6"": h = n.fGVLX(x._ê[x._bÌ], 63); continue; case ""7"": u = n.PTrMw(x._ê[n.BCdUS(x._bÌ, 2)], 2); continue; case ""8"": x._á(v._bf()); continue; case ""9"": x._bÌ -= 3; continue } break } continue; case ""4"": for (var d = 0; n.WIZIR(d, a[s]); d++) x._á(a.charAt(d)); continue; case ""5"": x._á(""=""); continue; case ""6"": var _ = """"; continue; case ""7"": var x = { ""_ê"": new Array(4095), ""_bÌ"": -1, ""_á"": function (t) { this._bÌ++, this._ê[this._bÌ] = t }, ""_bÝ"": function () { return this._bÌ--, g.ElHZO(this._bÌ, 0) && (this._bÌ = 0), this._ê[this._bÌ] } }; continue; case ""8"": var g = { ElHZO: function (t, r) { return n.WIZIR(t, r) } }; continue; case ""9"": var v = { ""_bÇ"": t, _bK: 0, _bf: function () { return t[o](this._bK++) } }; continue } break } }; return d; })(); // 4 var f_digest = (function (t, n, r) { var e, i, a, o, s; e = f_rot, i = f_utf8_bin.utf8, a = f_is_buffer, o = f_utf8_bin.bin, (s = function t(n, r) { n.constructor == String ? n = r && ""binary"" === r.encoding ? o.stringToBytes(n) : i.stringToBytes(n) : a(n) ? n = Array.prototype.slice.call(n, 0) : f(n) || (n = n.toString()); for (var s = e.bytesToWords(n), u = 8 * n.length, c = 1732584193, h = -271733879, w = -1732584194, l = 271733878, d = 0; d < s.length; d++) s[d] = 16711935 & (s[d] << 8 | s[d] >>> 24) | 4278255360 & (s[d] << 24 | s[d] >>> 8); s[u >>> 5] |= 128 << u % 32, s[14 + (u + 64 >>> 9 << 4)] = u; var _ = t._ff , x = t._gg , g = t._hh , v = t._ii; for (d = 0; d < s.length; d += 16) { var p = c , b = h , m = w , C = l; h = v(h = v(h = v(h = v(h = g(h = g(h = g(h = g(h = x(h = x(h = x(h = x(h = _(h = _(h = _(h = _(h, w = _(w, l = _(l, c = _(c, h, w, l, s[d + 0], 7, -680876936), h, w, s[d + 1], 12, -389564586), c, h, s[d + 2], 17, 606105819), l, c, s[d + 3], 22, -1044525330), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 4], 7, -176418897), h, w, s[d + 5], 12, 1200080426), c, h, s[d + 6], 17, -1473231341), l, c, s[d + 7], 22, -45705983), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 8], 7, 1770035416), h, w, s[d + 9], 12, -1958414417), c, h, s[d + 10], 17, -42063), l, c, s[d + 11], 22, -1990404162), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 12], 7, 1804603682), h, w, s[d + 13], 12, -40341101), c, h, s[d + 14], 17, -1502002290), l, c, s[d + 15], 22, 1236535329), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 1], 5, -165796510), h, w, s[d + 6], 9, -1069501632), c, h, s[d + 11], 14, 643717713), l, c, s[d + 0], 20, -373897302), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 5], 5, -701558691), h, w, s[d + 10], 9, 38016083), c, h, s[d + 15], 14, -660478335), l, c, s[d + 4], 20, -405537848), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 9], 5, 568446438), h, w, s[d + 14], 9, -1019803690), c, h, s[d + 3], 14, -187363961), l, c, s[d + 8], 20, 1163531501), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 13], 5, -1444681467), h, w, s[d + 2], 9, -51403784), c, h, s[d + 7], 14, 1735328473), l, c, s[d + 12], 20, -1926607734), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 5], 4, -378558), h, w, s[d + 8], 11, -2022574463), c, h, s[d + 11], 16, 1839030562), l, c, s[d + 14], 23, -35309556), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 1], 4, -1530992060), h, w, s[d + 4], 11, 1272893353), c, h, s[d + 7], 16, -155497632), l, c, s[d + 10], 23, -1094730640), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 13], 4, 681279174), h, w, s[d + 0], 11, -358537222), c, h, s[d + 3], 16, -722521979), l, c, s[d + 6], 23, 76029189), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 9], 4, -640364487), h, w, s[d + 12], 11, -421815835), c, h, s[d + 15], 16, 530742520), l, c, s[d + 2], 23, -995338651), w = v(w, l = v(l, c = v(c, h, w, l, s[d + 0], 6, -198630844), h, w, s[d + 7], 10, 1126891415), c, h, s[d + 14], 15, -1416354905), l, c, s[d + 5], 21, -57434055), w = v(w, l = v(l, c = v(c, h, w, l, s[d + 12], 6, 1700485571), h, w, s[d + 3], 10, -1894986606), c, h, s[d + 10], 15, -1051523), l, c, s[d + 1], 21, -2054922799), w = v(w, l = v(l, c = v(c, h, w, l, s[d + 8], 6, 1873313359), h, w, s[d + 15], 10, -30611744), c, h, s[d + 6], 15, -1560198380), l, c, s[d + 13], 21, 1309151649), w = v(w, l = v(l, c = v(c, h, w, l, s[d + 4], 6, -145523070), h, w, s[d + 11], 10, -1120210379), c, h, s[d + 2], 15, 718787259), l, c, s[d + 9], 21, -343485551), c = c + p >>> 0, h = h + b >>> 0, w = w + m >>> 0, l = l + C >>> 0 } return e.endian([c, h, w, l]) } )._ff = function (t, n, r, e, i, a, o) { var s = t + (n & r | ~n & e) + (i >>> 0) + o; return (s << a | s >>> 32 - a) + n } , s._gg = function (t, n, r, e, i, a, o) { var s = t + (n & e | r & ~e) + (i >>> 0) + o; return (s << a | s >>> 32 - a) + n } , s._hh = function (t, n, r, e, i, a, o) { var s = t + (n ^ r ^ e) + (i >>> 0) + o; return (s << a | s >>> 32 - a) + n } , s._ii = function (t, n, r, e, i, a, o) { var s = t + (r ^ (n | ~e)) + (i >>> 0) + o; return (s << a | s >>> 32 - a) + n } , s._blocksize = 16, s._digestsize = 16, tt = function (t, n) { if (null == t) throw new Error(""Illegal argument "" + t); var r = e.wordsToBytes(s(t, n)); return n && n.asBytes ? r : n && n.asString ? o.bytesToString(r) : e.bytesToHex(r) }; return tt; })(); // 5 var f_is_buffer = (function (t, n) { function r(t) { return !!t.constructor && ""function"" == typeof t.constructor.isBuffer && t.constructor.isBuffer(t) } return function (t) { return null != t && (r(t) || function (t) { return ""function"" == typeof t.readFloatLE && ""function"" == typeof t.slice && r(t.slice(0, 0)) }(t) || !!t._isBuffer) } })(); // 8 var f_yu_xun = (function (t, n, r) { ""use strict""; return function (t, n, r, e) { for (var i = 65535 & t | 0, a = t >>> 16 & 65535 | 0, o = 0; 0 !== r;) { r -= o = r > 2e3 ? 2e3 : r; do { a = a + (i = i + n[e++] | 0) | 0 } while (--o); i %= 65521, a %= 65521 } return i | a << 16 | 0 } })(); // 12 var f_yi = (function (t, n, r) { ""use strict""; var e = function () { for (var t, n = [], r = 0; r < 256; r++) { t = r; for (var e = 0; e < 8; e++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; n[r] = t } return n }(); return function (t, n, r, i) { var a = e , o = i + r; t ^= -1; for (var s = i; s < o; s++) t = t >>> 8 ^ a[255 & (t ^ n[s])]; return -1 ^ t } })(); // 13 var f_tr = (function (t, n, r) { ""use strict""; var n = {}; var e = f_assign; function i(t) { for (var n = t.length; --n >= 0;) t[n] = 0 } var a = 0 , o = 256 , s = o + 1 + 29 , u = 30 , c = 19 , f = 2 * s + 1 , h = 15 , w = 16 , l = 256 , d = 16 , _ = 17 , x = 18 , g = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0] , v = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13] , p = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7] , b = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] , m = new Array(2 * (s + 2)); i(m); var C = new Array(2 * u); i(C); var D = new Array(512); i(D); var O = new Array(256); i(O); var k = new Array(29); i(k); var y, K, z, A = new Array(u); function M(t, n, r, e, i) { this.static_tree = t, this.extra_bits = n, this.extra_base = r, this.elems = e, this.max_length = i, this.has_stree = t && t.length } function B(t, n) { this.dyn_tree = t, this.max_code = 0, this.stat_desc = n } function L(t) { return t < 256 ? D[t] : D[256 + (t >>> 7)] } function j(t, n) { t.pending_buf[t.pending++] = 255 & n, t.pending_buf[t.pending++] = n >>> 8 & 255 } function S(t, n, r) { t.bi_valid > w - r ? (t.bi_buf |= n << t.bi_valid & 65535, j(t, t.bi_buf), t.bi_buf = n >> w - t.bi_valid, t.bi_valid += r - w) : (t.bi_buf |= n << t.bi_valid & 65535, t.bi_valid += r) } function T(t, n, r) { S(t, r[2 * n], r[2 * n + 1]) } function H(t, n) { var r = 0; do { r |= 1 & t, t >>>= 1, r <<= 1 } while (--n > 0); return r >>> 1 } function V(t, n, r) { var e, i, a = new Array(h + 1), o = 0; for (e = 1; e <= h; e++) a[e] = o = o + r[e - 1] << 1; for (i = 0; i <= n; i++) { var s = t[2 * i + 1]; 0 !== s && (t[2 * i] = H(a[s]++, s)) } } function Y(t) { var n; for (n = 0; n < s; n++) t.dyn_ltree[2 * n] = 0; for (n = 0; n < u; n++) t.dyn_dtree[2 * n] = 0; for (n = 0; n < c; n++) t.bl_tree[2 * n] = 0; t.dyn_ltree[2 * l] = 1, t.opt_len = t.static_len = 0, t.last_lit = t.matches = 0 } function q(t) { t.bi_valid > 8 ? j(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 } function N(t, n, r, e) { var i = 2 * n , a = 2 * r; return t[i] < t[a] || t[i] === t[a] && e[n] <= e[r] } function R(t, n, r) { for (var e = t.heap[r], i = r << 1; i <= t.heap_len && (i < t.heap_len && N(n, t.heap[i + 1], t.heap[i], t.depth) && i++, !N(n, e, t.heap[i], t.depth));) t.heap[r] = t.heap[i], r = i, i <<= 1; t.heap[r] = e } function Q(t, n, r) { var e, i, a, s, u = 0; if (0 !== t.last_lit) do { e = t.pending_buf[t.d_buf + 2 * u] << 8 | t.pending_buf[t.d_buf + 2 * u + 1], i = t.pending_buf[t.l_buf + u], u++, 0 === e ? T(t, i, n) : (T(t, (a = O[i]) + o + 1, n), 0 !== (s = g[a]) && S(t, i -= k[a], s), T(t, a = L(--e), r), 0 !== (s = v[a]) && S(t, e -= A[a], s)) } while (u < t.last_lit); T(t, l, n) } function U(t, n) { var r, e, i, a = n.dyn_tree, o = n.stat_desc.static_tree, s = n.stat_desc.has_stree, u = n.stat_desc.elems, c = -1; for (t.heap_len = 0, t.heap_max = f, r = 0; r < u; r++) 0 !== a[2 * r] ? (t.heap[++t.heap_len] = c = r, t.depth[r] = 0) : a[2 * r + 1] = 0; for (; t.heap_len < 2;) a[2 * (i = t.heap[++t.heap_len] = c < 2 ? ++c : 0)] = 1, t.depth[i] = 0, t.opt_len--, s && (t.static_len -= o[2 * i + 1]); for (n.max_code = c, r = t.heap_len >> 1; r >= 1; r--) R(t, a, r); i = u; do { r = t.heap[1], t.heap[1] = t.heap[t.heap_len--], R(t, a, 1), e = t.heap[1], t.heap[--t.heap_max] = r, t.heap[--t.heap_max] = e, a[2 * i] = a[2 * r] + a[2 * e], t.depth[i] = (t.depth[r] >= t.depth[e] ? t.depth[r] : t.depth[e]) + 1, a[2 * r + 1] = a[2 * e + 1] = i, t.heap[1] = i++, R(t, a, 1) } while (t.heap_len >= 2); t.heap[--t.heap_max] = t.heap[1], function (t, n) { var r, e, i, a, o, s, u = n.dyn_tree, c = n.max_code, w = n.stat_desc.static_tree, l = n.stat_desc.has_stree, d = n.stat_desc.extra_bits, _ = n.stat_desc.extra_base, x = n.stat_desc.max_length, g = 0; for (a = 0; a <= h; a++) t.bl_count[a] = 0; for (u[2 * t.heap[t.heap_max] + 1] = 0, r = t.heap_max + 1; r < f; r++) (a = u[2 * u[2 * (e = t.heap[r]) + 1] + 1] + 1) > x && (a = x, g++), u[2 * e + 1] = a, e > c || (t.bl_count[a]++, o = 0, e >= _ && (o = d[e - _]), s = u[2 * e], t.opt_len += s * (a + o), l && (t.static_len += s * (w[2 * e + 1] + o))); if (0 !== g) { do { for (a = x - 1; 0 === t.bl_count[a];) a--; t.bl_count[a]--, t.bl_count[a + 1] += 2, t.bl_count[x]--, g -= 2 } while (g > 0); for (a = x; 0 !== a; a--) for (e = t.bl_count[a]; 0 !== e;) (i = t.heap[--r]) > c || (u[2 * i + 1] !== a && (t.opt_len += (a - u[2 * i + 1]) * u[2 * i], u[2 * i + 1] = a), e--) } }(t, n), V(a, c, t.bl_count) } function E(t, n, r) { var e, i, a = -1, o = n[1], s = 0, u = 7, c = 4; for (0 === o && (u = 138, c = 3), n[2 * (r + 1) + 1] = 65535, e = 0; e <= r; e++) i = o, o = n[2 * (e + 1) + 1], ++s < u && i === o || (s < c ? t.bl_tree[2 * i] += s : 0 !== i ? (i !== a && t.bl_tree[2 * i]++, t.bl_tree[2 * d]++) : s <= 10 ? t.bl_tree[2 * _]++ : t.bl_tree[2 * x]++, s = 0, a = i, 0 === o ? (u = 138, c = 3) : i === o ? (u = 6, c = 3) : (u = 7, c = 4)) } function P(t, n, r) { var e, i, a = -1, o = n[1], s = 0, u = 7, c = 4; for (0 === o && (u = 138, c = 3), e = 0; e <= r; e++) if (i = o, o = n[2 * (e + 1) + 1], !(++s < u && i === o)) { if (s < c) do { T(t, i, t.bl_tree) } while (0 != --s); else 0 !== i ? (i !== a && (T(t, i, t.bl_tree), s--), T(t, d, t.bl_tree), S(t, s - 3, 2)) : s <= 10 ? (T(t, _, t.bl_tree), S(t, s - 3, 3)) : (T(t, x, t.bl_tree), S(t, s - 11, 7)); s = 0, a = i, 0 === o ? (u = 138, c = 3) : i === o ? (u = 6, c = 3) : (u = 7, c = 4) } } i(A); var F = !1; function I(t, n, r, i) { S(t, (a << 1) + (i ? 1 : 0), 3), function (t, n, r, i) { q(t), j(t, r), j(t, ~r), e.arraySet(t.pending_buf, t.window, n, r, t.pending), t.pending += r }(t, n, r) } n._tr_init = function (t) { F || (function () { var t, n, r, e, i, a = new Array(h + 1); for (r = 0, e = 0; e < 28; e++) for (k[e] = r, t = 0; t < 1 << g[e]; t++) O[r++] = e; for (O[r - 1] = e, i = 0, e = 0; e < 16; e++) for (A[e] = i, t = 0; t < 1 << v[e]; t++) D[i++] = e; for (i >>= 7; e < u; e++) for (A[e] = i << 7, t = 0; t < 1 << v[e] - 7; t++) D[256 + i++] = e; for (n = 0; n <= h; n++) a[n] = 0; for (t = 0; t <= 143;) m[2 * t + 1] = 8, t++, a[8]++; for (; t <= 255;) m[2 * t + 1] = 9, t++, a[9]++; for (; t <= 279;) m[2 * t + 1] = 7, t++, a[7]++; for (; t <= 287;) m[2 * t + 1] = 8, t++, a[8]++; for (V(m, s + 1, a), t = 0; t < u; t++) C[2 * t + 1] = 5, C[2 * t] = H(t, 5); y = new M(m, g, o + 1, s, h), K = new M(C, v, 0, u, h), z = new M(new Array(0), p, 0, c, 7) }(), F = !0), t.l_desc = new B(t.dyn_ltree, y), t.d_desc = new B(t.dyn_dtree, K), t.bl_desc = new B(t.bl_tree, z), t.bi_buf = 0, t.bi_valid = 0, Y(t) } , n._tr_stored_block = I, n._tr_flush_block = function (t, n, r, e) { var i, a, s = 0; t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = function (t) { var n, r = 4093624447; for (n = 0; n <= 31; n++, r >>>= 1) if (1 & r && 0 !== t.dyn_ltree[2 * n]) return 0; if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1; for (n = 32; n < o; n++) if (0 !== t.dyn_ltree[2 * n]) return 1; return 0 }(t)), U(t, t.l_desc), U(t, t.d_desc), s = function (t) { var n; for (E(t, t.dyn_ltree, t.l_desc.max_code), E(t, t.dyn_dtree, t.d_desc.max_code), U(t, t.bl_desc), n = c - 1; n >= 3 && 0 === t.bl_tree[2 * b[n] + 1]; n--) ; return t.opt_len += 3 * (n + 1) + 5 + 5 + 4, n }(t), i = t.opt_len + 3 + 7 >>> 3, (a = t.static_len + 3 + 7 >>> 3) <= i && (i = a)) : i = a = r + 5, r + 4 <= i && -1 !== n ? I(t, n, r, e) : 4 === t.strategy || a === i ? (S(t, 2 + (e ? 1 : 0), 3), Q(t, m, C)) : (S(t, 4 + (e ? 1 : 0), 3), function (t, n, r, e) { var i; for (S(t, n - 257, 5), S(t, r - 1, 5), S(t, e - 4, 4), i = 0; i < e; i++) S(t, t.bl_tree[2 * b[i] + 1], 3); P(t, t.dyn_ltree, n - 1), P(t, t.dyn_dtree, r - 1) }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1), Q(t, t.dyn_ltree, t.dyn_dtree)), Y(t), e && q(t) } , n._tr_tally = function (t, n, r) { return t.pending_buf[t.d_buf + 2 * t.last_lit] = n >>> 8 & 255, t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & n, t.pending_buf[t.l_buf + t.last_lit] = 255 & r, t.last_lit++, 0 === n ? t.dyn_ltree[2 * r]++ : (t.matches++, n--, t.dyn_ltree[2 * (O[r] + o + 1)]++, t.dyn_dtree[2 * L(n)]++), t.last_lit === t.lit_bufsize - 1 } , n._tr_align = function (t) { S(t, 2, 3), T(t, l, m), function (t) { 16 === t.bi_valid ? (j(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8) }(t) }; return n; })(); // 11 var f_long = (function (t, n, r) { ""use strict""; var n = {}; var e, i = f_assign, a = f_tr, o = f_yu_xun, s = f_yi, u = f_stream, c = 0, f = 4, h = 0, w = -2, l = -1, d = 1, _ = 4, x = 2, g = 8, v = 9, p = 286, b = 30, m = 19, C = 2 * p + 1, D = 15, O = 3, k = 258, y = k + O + 1, K = 42, z = 103, A = 113, M = 666, B = 1, L = 2, j = 3, S = 4; function T(t, n) { return t.msg = u[n], n } function H(t) { return (t << 1) - (t > 4 ? 9 : 0) } function V(t) { for (var n = t.length; --n >= 0;) t[n] = 0 } function Y(t) { var n = t.state , r = n.pending; r > t.avail_out && (r = t.avail_out), 0 !== r && (i.arraySet(t.output, n.pending_buf, n.pending_out, r, t.next_out), t.next_out += r, n.pending_out += r, t.total_out += r, t.avail_out -= r, n.pending -= r, 0 === n.pending && (n.pending_out = 0)) } function q(t, n) { a._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, n), t.block_start = t.strstart, Y(t.strm) } function N(t, n) { t.pending_buf[t.pending++] = n } function R(t, n) { t.pending_buf[t.pending++] = n >>> 8 & 255, t.pending_buf[t.pending++] = 255 & n } function Q(t, n) { var r, e, i = t.max_chain_length, a = t.strstart, o = t.prev_length, s = t.nice_match, u = t.strstart > t.w_size - y ? t.strstart - (t.w_size - y) : 0, c = t.window, f = t.w_mask, h = t.prev, w = t.strstart + k, l = c[a + o - 1], d = c[a + o]; t.prev_length >= t.good_match && (i >>= 2), s > t.lookahead && (s = t.lookahead); do { if (c[(r = n) + o] === d && c[r + o - 1] === l && c[r] === c[a] && c[++r] === c[a + 1]) { a += 2, r++; do { } while (c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && a < w); if (e = k - (w - a), a = w - k, e > o) { if (t.match_start = n, o = e, e >= s) break; l = c[a + o - 1], d = c[a + o] } } } while ((n = h[n & f]) > u && 0 != --i); return o <= t.lookahead ? o : t.lookahead } function U(t) { var n, r, e, a, u, c, f, h, w, l, d = t.w_size; do { if (a = t.window_size - t.lookahead - t.strstart, t.strstart >= d + (d - y)) { i.arraySet(t.window, t.window, d, d, 0), t.match_start -= d, t.strstart -= d, t.block_start -= d, n = r = t.hash_size; do { e = t.head[--n], t.head[n] = e >= d ? e - d : 0 } while (--r); n = r = d; do { e = t.prev[--n], t.prev[n] = e >= d ? e - d : 0 } while (--r); a += d } if (0 === t.strm.avail_in) break; if (c = t.strm, f = t.window, h = t.strstart + t.lookahead, w = a, l = void 0, (l = c.avail_in) > w && (l = w), r = 0 === l ? 0 : (c.avail_in -= l, i.arraySet(f, c.input, c.next_in, l, h), 1 === c.state.wrap ? c.adler = o(c.adler, f, l, h) : 2 === c.state.wrap && (c.adler = s(c.adler, f, l, h)), c.next_in += l, c.total_in += l, l), t.lookahead += r, t.lookahead + t.insert >= O) for (u = t.strstart - t.insert, t.ins_h = t.window[u], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[u + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[u + O - 1]) & t.hash_mask, t.prev[u & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = u, u++, t.insert--, !(t.lookahead + t.insert < O));) ; } while (t.lookahead < y && 0 !== t.strm.avail_in) } function E(t, n) { for (var r, e; ;) { if (t.lookahead < y) { if (U(t), t.lookahead < y && n === c) return B; if (0 === t.lookahead) break } if (r = 0, t.lookahead >= O && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + O - 1]) & t.hash_mask, r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== r && t.strstart - r <= t.w_size - y && (t.match_length = Q(t, r)), t.match_length >= O) if (e = a._tr_tally(t, t.strstart - t.match_start, t.match_length - O), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= O) { t.match_length--; do { t.strstart++, t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + O - 1]) & t.hash_mask, r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart } while (0 != --t.match_length); t.strstart++ } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask; else e = a._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++; if (e && (q(t, !1), 0 === t.strm.avail_out)) return B } return t.insert = t.strstart < O - 1 ? t.strstart : O - 1, n === f ? (q(t, !0), 0 === t.strm.avail_out ? j : S) : t.last_lit && (q(t, !1), 0 === t.strm.avail_out) ? B : L } function P(t, n) { for (var r, e, i; ;) { if (t.lookahead < y) { if (U(t), t.lookahead < y && n === c) return B; if (0 === t.lookahead) break } if (r = 0, t.lookahead >= O && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + O - 1]) & t.hash_mask, r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = O - 1, 0 !== r && t.prev_length < t.max_lazy_match && t.strstart - r <= t.w_size - y && (t.match_length = Q(t, r), t.match_length <= 5 && (t.strategy === d || t.match_length === O && t.strstart - t.match_start > 4096) && (t.match_length = O - 1)), t.prev_length >= O && t.match_length <= t.prev_length) { i = t.strstart + t.lookahead - O, e = a._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - O), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; do { ++t.strstart <= i && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + O - 1]) & t.hash_mask, r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart) } while (0 != --t.prev_length); if (t.match_available = 0, t.match_length = O - 1, t.strstart++, e && (q(t, !1), 0 === t.strm.avail_out)) return B } else if (t.match_available) { if ((e = a._tr_tally(t, 0, t.window[t.strstart - 1])) && q(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return B } else t.match_available = 1, t.strstart++, t.lookahead-- } return t.match_available && (e = a._tr_tally(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < O - 1 ? t.strstart : O - 1, n === f ? (q(t, !0), 0 === t.strm.avail_out ? j : S) : t.last_lit && (q(t, !1), 0 === t.strm.avail_out) ? B : L } function F(t, n, r, e, i) { this.good_length = t, this.max_lazy = n, this.nice_length = r, this.max_chain = e, this.func = i } function I(t) { var n; return t && t.state ? (t.total_in = t.total_out = 0, t.data_type = x, (n = t.state).pending = 0, n.pending_out = 0, n.wrap < 0 && (n.wrap = -n.wrap), n.status = n.wrap ? K : A, t.adler = 2 === n.wrap ? 0 : 1, n.last_flush = c, a._tr_init(n), h) : T(t, w) } function W(t) { var n, r = I(t); return r === h && ((n = t.state).window_size = 2 * n.w_size, V(n.head), n.max_lazy_match = e[n.level].max_lazy, n.good_match = e[n.level].good_length, n.nice_match = e[n.level].nice_length, n.max_chain_length = e[n.level].max_chain, n.strstart = 0, n.block_start = 0, n.lookahead = 0, n.insert = 0, n.match_length = n.prev_length = O - 1, n.match_available = 0, n.ins_h = 0), r } function Z(t, n, r, e, a, o) { if (!t) return w; var s = 1; if (n === l && (n = 6), e < 0 ? (s = 0, e = -e) : e > 15 && (s = 2, e -= 16), a < 1 || a > v || r !== g || e < 8 || e > 15 || n < 0 || n > 9 || o < 0 || o > _) return T(t, w); 8 === e && (e = 9); var u = new function () { this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = g, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new i.Buf16(2 * C), this.dyn_dtree = new i.Buf16(2 * (2 * b + 1)), this.bl_tree = new i.Buf16(2 * (2 * m + 1)), V(this.dyn_ltree), V(this.dyn_dtree), V(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new i.Buf16(D + 1), this.heap = new i.Buf16(2 * p + 1), V(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new i.Buf16(2 * p + 1), V(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 } ; return t.state = u, u.strm = t, u.wrap = s, u.gzhead = null, u.w_bits = e, u.w_size = 1 << u.w_bits, u.w_mask = u.w_size - 1, u.hash_bits = a + 7, u.hash_size = 1 << u.hash_bits, u.hash_mask = u.hash_size - 1, u.hash_shift = ~~((u.hash_bits + O - 1) / O), u.window = new i.Buf8(2 * u.w_size), u.head = new i.Buf16(u.hash_size), u.prev = new i.Buf16(u.w_size), u.lit_bufsize = 1 << a + 6, u.pending_buf_size = 4 * u.lit_bufsize, u.pending_buf = new i.Buf8(u.pending_buf_size), u.d_buf = 1 * u.lit_bufsize, u.l_buf = 3 * u.lit_bufsize, u.level = n, u.strategy = o, u.method = r, W(t) } e = [new F(0, 0, 0, 0, function (t, n) { var r = 65535; for (r > t.pending_buf_size - 5 && (r = t.pending_buf_size - 5); ;) { if (t.lookahead <= 1) { if (U(t), 0 === t.lookahead && n === c) return B; if (0 === t.lookahead) break } t.strstart += t.lookahead, t.lookahead = 0; var e = t.block_start + r; if ((0 === t.strstart || t.strstart >= e) && (t.lookahead = t.strstart - e, t.strstart = e, q(t, !1), 0 === t.strm.avail_out)) return B; if (t.strstart - t.block_start >= t.w_size - y && (q(t, !1), 0 === t.strm.avail_out)) return B } return t.insert = 0, n === f ? (q(t, !0), 0 === t.strm.avail_out ? j : S) : (t.strstart > t.block_start && (q(t, !1), t.strm.avail_out), B) } ), new F(4, 4, 8, 4, E), new F(4, 5, 16, 8, E), new F(4, 6, 32, 32, E), new F(4, 4, 16, 16, P), new F(8, 16, 32, 32, P), new F(8, 16, 128, 128, P), new F(8, 32, 128, 256, P), new F(32, 128, 258, 1024, P), new F(32, 258, 258, 4096, P)], n.deflateInit = function (t, n) { return Z(t, n, g, 15, 8, 0) } , n.deflateInit2 = Z, n.deflateReset = W, n.deflateResetKeep = I, n.deflateSetHeader = function (t, n) { return t && t.state ? 2 !== t.state.wrap ? w : (t.state.gzhead = n, h) : w } , n.deflate = function (t, n) { var r, i, o, u; if (!t || !t.state || n > 5 || n < 0) return t ? T(t, w) : w; if (i = t.state, !t.output || !t.input && 0 !== t.avail_in || i.status === M && n !== f) return T(t, 0 === t.avail_out ? -5 : w); if (i.strm = t, r = i.last_flush, i.last_flush = n, i.status === K) if (2 === i.wrap) t.adler = 0, N(i, 31), N(i, 139), N(i, 8), i.gzhead ? (N(i, (i.gzhead.text ? 1 : 0) + (i.gzhead.hcrc ? 2 : 0) + (i.gzhead.extra ? 4 : 0) + (i.gzhead.name ? 8 : 0) + (i.gzhead.comment ? 16 : 0)), N(i, 255 & i.gzhead.time), N(i, i.gzhead.time >> 8 & 255), N(i, i.gzhead.time >> 16 & 255), N(i, i.gzhead.time >> 24 & 255), N(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0), N(i, 255 & i.gzhead.os), i.gzhead.extra && i.gzhead.extra.length && (N(i, 255 & i.gzhead.extra.length), N(i, i.gzhead.extra.length >> 8 & 255)), i.gzhead.hcrc && (t.adler = s(t.adler, i.pending_buf, i.pending, 0)), i.gzindex = 0, i.status = 69) : (N(i, 0), N(i, 0), N(i, 0), N(i, 0), N(i, 0), N(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0), N(i, 3), i.status = A); else { var l = g + (i.w_bits - 8 << 4) << 8; l |= (i.strategy >= 2 || i.level < 2 ? 0 : i.level < 6 ? 1 : 6 === i.level ? 2 : 3) << 6, 0 !== i.strstart && (l |= 32), l += 31 - l % 31, i.status = A, R(i, l), 0 !== i.strstart && (R(i, t.adler >>> 16), R(i, 65535 & t.adler)), t.adler = 1 } if (69 === i.status) if (i.gzhead.extra) { for (o = i.pending; i.gzindex < (65535 & i.gzhead.extra.length) && (i.pending !== i.pending_buf_size || (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), Y(t), o = i.pending, i.pending !== i.pending_buf_size));) N(i, 255 & i.gzhead.extra[i.gzindex]), i.gzindex++; i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), i.gzindex === i.gzhead.extra.length && (i.gzindex = 0, i.status = 73) } else i.status = 73; if (73 === i.status) if (i.gzhead.name) { o = i.pending; do { if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), Y(t), o = i.pending, i.pending === i.pending_buf_size)) { u = 1; break } u = i.gzindex < i.gzhead.name.length ? 255 & i.gzhead.name.charCodeAt(i.gzindex++) : 0, N(i, u) } while (0 !== u); i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 0 === u && (i.gzindex = 0, i.status = 91) } else i.status = 91; if (91 === i.status) if (i.gzhead.comment) { o = i.pending; do { if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), Y(t), o = i.pending, i.pending === i.pending_buf_size)) { u = 1; break } u = i.gzindex < i.gzhead.comment.length ? 255 & i.gzhead.comment.charCodeAt(i.gzindex++) : 0, N(i, u) } while (0 !== u); i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 0 === u && (i.status = z) } else i.status = z; if (i.status === z && (i.gzhead.hcrc ? (i.pending + 2 > i.pending_buf_size && Y(t), i.pending + 2 <= i.pending_buf_size && (N(i, 255 & t.adler), N(i, t.adler >> 8 & 255), t.adler = 0, i.status = A)) : i.status = A), 0 !== i.pending) { if (Y(t), 0 === t.avail_out) return i.last_flush = -1, h } else if (0 === t.avail_in && H(n) <= H(r) && n !== f) return T(t, -5); if (i.status === M && 0 !== t.avail_in) return T(t, -5); if (0 !== t.avail_in || 0 !== i.lookahead || n !== c && i.status !== M) { var d = 2 === i.strategy ? function (t, n) { for (var r; ;) { if (0 === t.lookahead && (U(t), 0 === t.lookahead)) { if (n === c) return B; break } if (t.match_length = 0, r = a._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, r && (q(t, !1), 0 === t.strm.avail_out)) return B } return t.insert = 0, n === f ? (q(t, !0), 0 === t.strm.avail_out ? j : S) : t.last_lit && (q(t, !1), 0 === t.strm.avail_out) ? B : L }(i, n) : 3 === i.strategy ? function (t, n) { for (var r, e, i, o, s = t.window; ;) { if (t.lookahead <= k) { if (U(t), t.lookahead <= k && n === c) return B; if (0 === t.lookahead) break } if (t.match_length = 0, t.lookahead >= O && t.strstart > 0 && (e = s[i = t.strstart - 1]) === s[++i] && e === s[++i] && e === s[++i]) { o = t.strstart + k; do { } while (e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && i < o); t.match_length = k - (o - i), t.match_length > t.lookahead && (t.match_length = t.lookahead) } if (t.match_length >= O ? (r = a._tr_tally(t, 1, t.match_length - O), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (r = a._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), r && (q(t, !1), 0 === t.strm.avail_out)) return B } return t.insert = 0, n === f ? (q(t, !0), 0 === t.strm.avail_out ? j : S) : t.last_lit && (q(t, !1), 0 === t.strm.avail_out) ? B : L }(i, n) : e[i.level].func(i, n); if (d !== j && d !== S || (i.status = M), d === B || d === j) return 0 === t.avail_out && (i.last_flush = -1), h; if (d === L && (1 === n ? a._tr_align(i) : 5 !== n && (a._tr_stored_block(i, 0, 0, !1), 3 === n && (V(i.head), 0 === i.lookahead && (i.strstart = 0, i.block_start = 0, i.insert = 0))), Y(t), 0 === t.avail_out)) return i.last_flush = -1, h } return n !== f ? h : i.wrap <= 0 ? 1 : (2 === i.wrap ? (N(i, 255 & t.adler), N(i, t.adler >> 8 & 255), N(i, t.adler >> 16 & 255), N(i, t.adler >> 24 & 255), N(i, 255 & t.total_in), N(i, t.total_in >> 8 & 255), N(i, t.total_in >> 16 & 255), N(i, t.total_in >> 24 & 255)) : (R(i, t.adler >>> 16), R(i, 65535 & t.adler)), Y(t), i.wrap > 0 && (i.wrap = -i.wrap), 0 !== i.pending ? h : 1) } , n.deflateEnd = function (t) { var n; return t && t.state ? (n = t.state.status) !== K && 69 !== n && 73 !== n && 91 !== n && n !== z && n !== A && n !== M ? T(t, w) : (t.state = null, n === A ? T(t, -3) : h) : w } , n.deflateSetDictionary = function (t, n) { var r, e, a, s, u, c, f, l, d = n.length; if (!t || !t.state) return w; if (2 === (s = (r = t.state).wrap) || 1 === s && r.status !== K || r.lookahead) return w; for (1 === s && (t.adler = o(t.adler, n, d, 0)), r.wrap = 0, d >= r.w_size && (0 === s && (V(r.head), r.strstart = 0, r.block_start = 0, r.insert = 0), l = new i.Buf8(r.w_size), i.arraySet(l, n, d - r.w_size, r.w_size, 0), n = l, d = r.w_size), u = t.avail_in, c = t.next_in, f = t.input, t.avail_in = d, t.next_in = 0, t.input = n, U(r); r.lookahead >= O;) { e = r.strstart, a = r.lookahead - (O - 1); do { r.ins_h = (r.ins_h << r.hash_shift ^ r.window[e + O - 1]) & r.hash_mask, r.prev[e & r.w_mask] = r.head[r.ins_h], r.head[r.ins_h] = e, e++ } while (--a); r.strstart = e, r.lookahead = O - 1, U(r) } return r.strstart += r.lookahead, r.block_start = r.strstart, r.insert = r.lookahead, r.lookahead = 0, r.match_length = r.prev_length = O - 1, r.match_available = 0, t.next_in = c, t.input = f, t.avail_in = u, r.wrap = s, h } , n.deflateInfo = ""pako deflate (from Nodeca project)""; return n; })(); // 10 var f_gzip = (function (t, n, r) { ""use strict""; var n = {}; var e = f_long , i = f_assign , a = f_string , o = f_stream , s = f_input , u = Object.prototype.toString , c = 0 , f = -1 , h = 0 , w = 8; function l(t) { if (!(this instanceof l)) return new l(t); this.options = i.assign({ level: f, method: w, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: h, to: """" }, t || {}); var n = this.options; n.raw && n.windowBits > 0 ? n.windowBits = -n.windowBits : n.gzip && n.windowBits > 0 && n.windowBits < 16 && (n.windowBits += 16), this.err = 0, this.msg = """", this.ended = !1, this.chunks = [], this.strm = new s, this.strm.avail_out = 0; var r = e.deflateInit2(this.strm, n.level, n.method, n.windowBits, n.memLevel, n.strategy); if (r !== c) throw new Error(o[r]); if (n.header && e.deflateSetHeader(this.strm, n.header), n.dictionary) { var d; if (d = ""string"" == typeof n.dictionary ? a.string2buf(n.dictionary) : ""[object ArrayBuffer]"" === u.call(n.dictionary) ? new Uint8Array(n.dictionary) : n.dictionary, (r = e.deflateSetDictionary(this.strm, d)) !== c) throw new Error(o[r]); this._dict_set = !0 } } function d(t, n) { var r = new l(n); if (r.push(t, !0), r.err) throw r.msg || o[r.err]; return r.result } l.prototype.push = function (t, n) { var r, o, s = this.strm, f = this.options.chunkSize; if (this.ended) return !1; o = n === ~~n ? n : !0 === n ? 4 : 0, ""string"" == typeof t ? s.input = a.string2buf(t) : ""[object ArrayBuffer]"" === u.call(t) ? s.input = new Uint8Array(t) : s.input = t, s.next_in = 0, s.avail_in = s.input.length; do { if (0 === s.avail_out && (s.output = new i.Buf8(f), s.next_out = 0, s.avail_out = f), 1 !== (r = e.deflate(s, o)) && r !== c) return this.onEnd(r), this.ended = !0, !1; 0 !== s.avail_out && (0 !== s.avail_in || 4 !== o && 2 !== o) || (""string"" === this.options.to ? this.onData(a.buf2binstring(i.shrinkBuf(s.output, s.next_out))) : this.onData(i.shrinkBuf(s.output, s.next_out))) } while ((s.avail_in > 0 || 0 === s.avail_out) && 1 !== r); return 4 === o ? (r = e.deflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === c) : 2 !== o || (this.onEnd(c), s.avail_out = 0, !0) } , l.prototype.onData = function (t) { this.chunks.push(t) } , l.prototype.onEnd = function (t) { t === c && (""string"" === this.options.to ? this.result = this.chunks.join("""") : this.result = i.flattenChunks(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg } , n.Deflate = l, n.deflate = d, n.deflateRaw = function (t, n) { return (n = n || {}).raw = !0, d(t, n) } , n.gzip = function (t, n) { return (n = n || {}).gzip = !0, d(t, n) }; return n; })(); // 9 var f_p = (function (t, n, r) { var n, e, i = ""function"" == typeof _ && ""symbol"" == g(w) ? function (t) { return ""object"" } : function (t) { return t && ""function"" == typeof _ && t.constructor === _ && t !== _.prototype ? ""symbol"" : ""object"" } , a = f_en, o = f_base64, s = f_err, u = [""QzwKMQ4="", ""w6fCisOpFyEo"", ""w7LDkcKMw4F9"", ""wqLDlVkyLG7Cvg=="", ""w4nDvHUmUg=="", ""CGTDnk7DoMO0Eg=="", ""woBEw60FeA=="", ""w684w4vDhWM="", ""w7HDv2zDocKF"", ""w7LDmcK9KTQ="", ""LcOPWsKmwro="", ""w7A+FDZH"", ""w4PCvSM="", ""KMOiaA=="", ""RMOiwq3CjsOr"", ""wqLDhEI="", ""WcOOdlx8"", ""w7HDs8K9w55Bw4cs"", ""JMK5IcOPRcOawrjDgMKq"", ""a8KKw5bCk8OdcxjCjW/DlcO1w7Y="", ""LcOyw5LDiyES"", ""ecOAwp7Cg8O1w6o3w6k="", ""wqzCt8K5wr8Zw5M="", ""wo0HwpQSw6bDosKTYsO2"", ""PMOiaMKrez3CkCBs"", ""DMKLZkFBw50Lwqlvw7k="", ""wq/Cq8K9w5BHw5tiXA=="", ""w4vDvnkvSMK8w4t7w4U="", ""w6bDi8KLwq3ClcKJR8KkZlQ="", ""wrvDkG9HY8OVFS/CqQQ="", ""wph9w6w="", ""wpsWR8KTwog="", ""wqhfwobDr8KJ"", ""wqDCkklGTg=="", ""w7LDuX/DsMKY"", ""flXCtwhS"", ""w63DlcKvwoPCkQ=="", ""UBYOOB56"", ""w6bDvMK1w59h"", ""wpMvw5M8Jg=="", ""UzfCosOewog="", ""L0DDtV7DjA=="", ""fmk/w7jCuQ=="", ""YMKzw6/DmQLDrw=="", ""w7/CszLDi8O+I8OuHMKGSQ=="", ""w6gZw6vDvUY="", ""wrkewp4Nw6I="", ""GCJdwqvClw=="", ""T8OzRR/ClXPChw=="", ""JXwNwo3Cjg=="", ""YBYIID8="", ""fsOHwpzChMOZw7s="", ""wpQsw68vMwrDng8jw5UK"", ""w6/CtzrDmsOY"", ""wojDrGY4Pg=="", ""wpYMwoUSw40="", ""wpfCj2ZfUg=="", ""IcOmcsKHSzTCiw=="", ""RcOIV3Z9""]; n = u, e = 136, function (t) { for (; --t;) n.push(n.shift()) }(++e); var c = function t(n, r) { var e, i = u[n -= 0]; void 0 === t.KnuQDT && ((e = function () { var t; t = Function('return (function() {}.constructor(""return this"")( ));')() return t }()).atob || (e.atob = function (t) { for (var n, r, e = String(t).replace(/=+$/, """"), i = 0, a = 0, o = """"; r = e.charAt(a++); ~r && (n = i % 4 ? 64 * n + r : r, i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) r = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(r); return o } ), t.fyxzDe = function (t, n) { for (var r, e = [], i = 0, a = """", o = """", s = 0, u = (t = atob(t)).length; s < u; s++) o += ""%"" + (""00"" + t.charCodeAt(s).toString(16)).slice(-2); t = decodeURIComponent(o); for (var c = 0; c < 256; c++) e[c] = c; for (c = 0; c < 256; c++) i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, r = e[c], e[c] = e[i], e[i] = r; c = 0, i = 0; for (var f = 0; f < t.length; f++) i = (i + e[c = (c + 1) % 256]) % 256, r = e[c], e[c] = e[i], e[i] = r, a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); return a } , t.aBwsIj = {}, t.KnuQDT = !0); var a = t.aBwsIj[n]; return void 0 === a ? (void 0 === t.oBOLyG && (t.oBOLyG = !0), i = t.fyxzDe(i, r), t.aBwsIj[n] = i) : i = a, i } , f = c(""0x0"", ""0Q^3"") , h = c(""0x1"", ""&zxH"") , l = c(""0x2"", ""kc36"") , d = c(""0x3"", ""FsN1"") , x = c(""0x4"", ""wt6v"") , v = void 0; (""undefined"" == typeof window ? ""undefined"" : i(window)) !== c(""0x5"", ""kWt7"") && (v = window); var p = {}; function b() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date[c(""0xc"", ""HxY!"")]() , n = {}; n[c(""0xd"", ""E7dI"")] = function (t, n) { return t(n) } , n[c(""0xe"", ""r[(a"")] = function (t) { return t() } , n[c(""0xf"", ""kkhd"")] = function (t, n) { return t % n } , n[c(""0x10"", ""l*OF"")] = function (t, n, r, e) { return t(n, r, e) } , n[c(""0x11"", ""zgAZ"")] = function (t, n) { return t(n) } , n[c(""0x12"", ""gPk6"")] = c(""0x13"", ""jhb9""); var r = n[c(""0x14"", ""#BDR"")](String, t)[c(""0x15"", ""mUZ7"")](0, 10) , e = n[c(""0x16"", ""!LcL"")](o) , i = n[c(""0x17"", ""OPo!"")]((r + ""_"" + e)[c(""0x18"", ""mpB0"")]("""")[c(""0x19"", ""*%RS"")](function (t, n) { return t + n[c(""0x1a"", ""[)ww"")](0) }, 0), 1e3) , u = n[c(""0x1b"", ""BmuK"")](s, n[c(""0x1c"", ""kWt7"")](String, i), 3, ""0""); return a[n[c(""0x1d"", ""ogP5"")]]("""" + r + u)[c(""0x1e"", ""v*sR"")](/=/g, """") + ""_"" + e } function m(t) { var n = {}; return n[c(""0x1f"", ""zrO^"")] = function (t, n) { return t + n } , n[c(""0x20"", ""jhb9"")](t[c(""0x21"", ""FsN1"")](0)[c(""0x22"", ""mUZ7"")](), t[c(""0x23"", ""[)ww"")](1)) } p[c(""0x6"", ""6axu"")] = function (t, n) { var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 9999 , e = { hNolq: function (t, n) { return t + n }, HSBcF: function (t, n) { return t * n }, QsJzw: function (t, n) { return t * n }, irUnm: c(""0x7"", ""3hFI""), ZRUhv: function (t, n) { return t + n }, KcgwS: function (t, n) { return t + n }, NcxmC: function (t, n) { return t || n }, HWavj: c(""0x8"", ""#BDR"") }; t = e.hNolq(""_"", t); var i = """"; if (r) { var a = new Date; a.setTime(e.hNolq(a.getTime(), e.HSBcF(e.HSBcF(e.QsJzw(e.QsJzw(r, 24), 60), 60), 1e3))), i = e.hNolq(e.irUnm, a.toUTCString()) } v[d][l] = e.hNolq(e.ZRUhv(e.KcgwS(e.KcgwS(t, ""=""), e.NcxmC(n, """")), i), e.HWavj) } , p[c(""0x9"", ""&8PU"")] = function (t) { for (var n = function (t, n) { return t + n }, r = function (t, n) { return t < n }, e = function (t, n) { return t === n }, i = n(t = n(""_"", t), ""=""), a = v[d][l].split("";""), o = 0; r(o, a[x]); o++) { for (var s = a[o]; e(s.charAt(0), "" "");) s = s[f](1, s[x]); if (e(s.indexOf(i), 0)) return s[f](i[x], s[x]) } return null } , p[c(""0xa"", ""PA5G"")] = function (t, n) { t = ""_"" + t, v[h].setItem(t, n) } , p[c(""0xb"", ""VlH&"")] = function (t) { return t = ""_"" + t, v[h].getItem(t) }; return function () { var t = {}; t[c(""0x24"", ""!jRO"")] = function (t, n) { return t(n) } , t[c(""0x25"", ""kWt7"")] = function (t, n) { return t(n) } , t[c(""0x26"", ""kkhd"")] = c(""0x27"", ""6axu""), t[c(""0x28"", ""3hFI"")] = function (t) { return t() } , t[c(""0x29"", ""jhb9"")] = c(""0x2a"", ""7CAL""), t[c(""0x2b"", ""#BDR"")] = c(""0x2c"", ""!jRO""), t[c(""0x2d"", ""&8PU"")] = c(""0x2e"", ""OPo!""); var n = t[c(""0x2f"", ""HxY!"")] , r = {} , e = t[c(""0x30"", ""BmuK"")](b); return [t[c(""0x31"", ""l*OF"")], t[c(""0x32"", ""jFJ8"")]][t[c(""0x33"", ""Ayw("")]](function (i) { var a = c(""0x34"", ""AVSJ"") + i + c(""0x35"", ""[)ww""); r[a] = e; }), r } })(); // 16 var f_main = (function (t, n, r) { var n, e, i = ""function"" == typeof _ && ""symbol"" == g(w) ? function (t) { return ""object"" } : function (t) { return t && ""function"" == typeof _ && t.constructor === _ && t !== _.prototype ? ""symbol"" : ""object"" } , a = f_digest, o = f_gzip, l = f_en, d = f_p, x = [""N8KlwqzDisKH"", ""w4XDgsOb"", ""wqfDi3/CjMOP"", ""aFNew60Q"", ""w6bDhMK/w6bDqQ=="", ""w5rDhF7Dhmg="", ""wqTCgcO9w5QL"", ""CcKww4VnCA=="", ""BHFtGnPChkMLHMKqw4VjQMKT"", ""wqjCmcOxw44="", ""En/CvTp5VE9APwLDrw=="", ""F3hvHw=="", ""TcOrRMOH"", ""VWYRJQLCqMO5GVrDnMOp"", ""w6dzOcKF"", ""w43CnsOFHg=="", ""wrJSwp/CtsOgUmzDjibDkS0="", ""w5TCvVrCjg=="", ""w6FAUwQ="", ""w4zCrgklw43DvMOhIcONwp3DhQ=="", ""GwrDsMKr"", ""VGkWNQ=="", ""w5nDlXbDtw=="", ""wrgOwrzCjA=="", ""w7vCh8KWVA=="", ""w7Euwoc4"", ""wqEBwrbCkw=="", ""w758M8Ka"", ""w5DDgMOUDA=="", ""wqEdwrPDsg=="", ""w6ghwo0n"", ""VcO9w6Ju"", ""w6HCqcKVQDkNcsK+w6VSwrsOw5wqQcO5w5QgPSprVQ=="", ""wo7DvCnDiQ=="", ""w6IRc8K8"", ""w4bDk8OnwrfCnsOCw4LCjiUrQgBJRFMGw4k="", ""w4cdU0M="", ""JC8cw6c="", ""UsOWw4xn"", ""wqJyHBskw5zDrVUd"", ""L8KgcMKl"", ""w43CslDCkQ=="", ""w5TCkcOPAQ=="", ""KMK+w4pqIsK5w7XDrcO2wqPCpcOVwrJV"", ""w4vCrcKNRgUbScKjw75WwrIfw6I4WA=="", ""wonCp8ObQMKc"", ""OV5eMEM="", ""wrpyDijDkA=="", ""OS4Aw7BvEsKow6szwro="", ""w5FDKcKEw5I="", ""w5oTRVtPwpQRC8OP"", ""FycFw5Rd"", ""NcK8w5ZqEcK2"", ""w74OVW5g"", ""wplkIT0I"", ""w4cNdMKTEQ=="", ""w7PDkmXDm1Y="", ""w5bCoMKKSj8="", ""GVYWOBQ="", ""w7oLWcKZJg=="", ""HnHCsCt4VGRCHwDDvhzCm8Kgeg=="", ""wpwFwpLCulvDnsO8IAA="", ""w4LDjsOTHg=="", ""TmQNLgLCocOoAE8="", ""MsKPUsKMHw=="", ""w6ZmGcK/w6w="", ""TWYcKg=="", ""woUZwozCocKY"", ""wqTDpSDDg30="", ""wpJlORHDvlDDssKQwognWMOn"", ""wqfDtjDDp0A="", ""w63DlUPDiWU="", ""w7wkeHpv"", ""CMKrw6BWEg=="", ""w4rDlMOLwrvCmw=="", ""w7fCiwvCr3k="", ""w5ZKKsKiw7A="", ""VsO8wqbDuwE="", ""d8OIa8Oxw54="", ""wr4IwrPCl8Kb"", ""C2hBH3o="", ""woojwrbCgFU="", ""HnvCtTJ0RW8="", ""wpNgIw8r"", ""NMKTw4lTNg=="", ""alNZ"", ""w5UoYEtm"", ""D8KLwpPCsR3Cvg=="", ""w7nDisONIk8="", ""BHk0EQ=="", ""w5XCrcKAQg=="", ""w6zCgRcX"", ""IcOwwrAb"", ""w5TCrgQq"", ""wpNgLzwM"", ""DktuClo="", ""E8Obw5R8esKtw6rDuA=="", ""wqIQwrnCkcKe"", ""w6/ChHHCt8Ko"", ""SGkMKQfCq8OI"", ""w47CoA4v"", ""w4ULXsKbHQ=="", ""dMOxw5F/wo0="", ""wpZ/bAYB"", ""wq4+wpDCmX8="", ""PnVeBUA="", ""w5jCq8KzfW0="", ""w6QXfMKnAw=="", ""NkN6OEY="", ""wroUTMKqPw=="", ""LwrDhcKVeg=="", ""wr92wqfCh8Ou"", ""wrdSwoE="", ""OVNbPw=="", ""YcOAw49yaA=="", ""HlNtNWY="", ""BlQ6LCs="", ""FkwHGSw="", ""NsKvwrzDk8KF"", ""w450XxhF"", ""wovDsy7Dh2MWTnLCqg=="", ""w6k8fMKYBw=="", ""wrg+ecKtEA=="", ""wpxpwpTCusOq"", ""woFnMh3DiV3DgMKHwrk+WcOwPAzDi24="", ""w7oDwogcEw=="", ""w4bCn1/CtcKY"", ""S8OKw4pnf8KUGwnClA=="", ""EmloFWDChnQ6AcKpw4N5ccKJKsOV"", ""KkBYJ0fDjFJFAQ=="", ""wrHChcO3w44QZBbDljw="", ""CcKJwpXCvwvCmBXCi0cp"", ""w6zCkhsIw4JPGzLCuw=="", ""w6BEwrLCmE4APMOINsOQwo4="", ""wpLClcOWw6w6"", ""w5tMdCZm"", ""QsOJwqDDmQZgTkTCtA=="", ""w7vCvinCtHVWw5sowpDDosKEY8OlAhc="", ""w5DCjzk+w5w="", ""w7HDlmTDsk4="", ""wrtAcCwd"", ""ZWUOLyw="", ""D8KdwoDCsQvCrwc="", ""w5HCgMOIC8OtVsOCR8Kaw6lMw6nDmWsWw64="", ""w6jCgQYbw4hP"", ""w7l9LQ=="", ""LMK0ccK9H2Vew7QS"", ""YMKoQw=="", ""FcOVw6lsZ8Kp"", ""w5rDjsKsw7LDuU7DgMOOWsOy"", ""wrZlHSwTw57Dpk8lwqtWNcOfNMKBBw=="", ""HnHCsCt4VGRC"", ""w6oJe8KhHlDDrSjChjUA"", ""wrjDgyXCoQzCuSDCvDrCjQ=="", ""NcK8w5ZgGMK0"", ""GsKKwoLCqg=="", ""wqABwr/DoA=="", ""PcO+wrARwpxSVA8="", ""RsOSwqLDiBpgVlnCoQ=="", ""wpd7PxnDk0zDig=="", ""UcOXwqbDiAdgbw=="", ""w5IQVUVPwp4KNcOF"", ""w7t3NMKJw4wc"", ""WMOXw4twccKU"", ""VMOUwr3DqAh3Xw=="", ""w71UwrLCgw=="", ""wpcbc8KL"", ""w4DCvU3ChA=="", ""AXYzHwbDoMKjBwE="", ""w40JLsKDZilbw6de"", ""w5rDm8Kyw63DqA=="", ""w48ebsKt"", ""w4/Dj8ODCH8Bwp9lwpTDqHnDiA=="", ""woUSwq7Drg=="", ""w6zDl8OnwrfCmsOGw7vCjiM="", ""wqvCssOWVsK/"", ""woVKSSEg"", ""w6XCk8KYXUwd"", ""AMOIwqMVwps="", ""M8KDwpHDkcKr"", ""SsKdVl97"", ""wpk5wo3DvsKz"", ""w7QyY8KcHcObI8O7Nw=="", ""wpXDrUfCqMOn"", ""w5vDgljDhGM="", ""w5bDu8OCI0g="", ""wpPChMO5U8KT"", ""wrZAZDo+"", ""ZMODw6VPwoc="", ""w5IVZU1E"", ""w4fDhMOjwrHCjw=="", ""wpM6V8K8NQ=="", ""wrLCmsOxw5Mw"", ""MsKWwrbDoMKtEsKYwolzw68="", ""wpxtcA8c"", ""w4w5dMKYW8O9K8O4AMKtZsKiw4PCrQ=="", ""eWdYw4Id"", ""wqjCtMOXdMK6HsKKwqk="", ""wpMRwrPCr8Kb"", ""DmwcLi4="", ""w7pEwqPCj10OL8O9JQ=="", ""w7/CqsKne1A="", ""EXnCuw58"", ""MMK0Z8KrGV9Sw7MSAnA="", ""w7DDk8OlwpHCsQ=="", ""Y8Oiwr/DiBo="", ""w63Dg8OlwrvCj8Oww6bChSUq"", ""CHvCpxFZ"", ""Z8OiY8Ojw7I="", ""w4rCucKXTCggWMKlw6tfwqE="", ""wpIHwpvCqMKC"", ""CGx4EWbCtE47B8K3"", ""BcKbccK6CA=="", ""w4fCrgstw7HDscOFOcOcwpzDnA=="", ""NlNbDEA="", ""KsKmWMKhBw=="", ""w4cwwoYtCEJqVw=="", ""JVIAAjQ="", ""YsKxeXN3"", ""JWxqEnHCkQ=="", ""w5rCrMKiR30="", ""w5bCuSoZw44="", ""w6hMwqjCnw=="", ""QcKNY1NM"", ""J8OLwqY0wqo="", ""woRfXBkC"", ""w5PDvMOGwqbCqQ=="", ""w7rDusKZw5HDmQ=="", ""w5PClcOODsOrWsOnR8Ka"", ""wptcwqjChsOe"", ""NcO+wr4xwp1PVAxJw4XCmRvDtg=="", ""OiHDhMK4Rw=="", ""G11uB3o="", ""Pl1aEl3DjERYBTfDq1nCkMO/w61rw5YEEsO1LUhI"", ""DsKLRMK2Pw=="", ""KMK0wrHDlMKv"", ""w6gywoE4CUJ8SsKY"", ""wqLCvMOQYg=="", ""w7jDvkLDpFg="", ""w5DCq8KoRjY="", ""w7EuaMKNFMOGNMOuNg=="", ""w69Iwq/Cjw=="", ""w5TDjsOkE3gLwplx"", ""wqvDkDTCpAHCjSw="", ""WG4qJAA="", ""UMOqfsOHw6htwoHDqg=="", ""wrXCssO1acK6"", ""CmzCvCp6RXNGPw=="", ""w7lOwpLCn10ON8O/"", ""w6jCjycIw59SDCU="", ""wozDuDrDjmQcRQ=="", ""w4zDnUDDuWI="", ""w6N9CcKaw4odb3w="", ""w7LDmsOkwrnClMOJw7w="", ""wrDCucOLYcK/GcKX"", ""Ik7CvQt5"", ""w7tzNMKJw40VZn7DqA=="", ""N316EEs="", ""w6F3NMKKw5cG"", ""wplYGz/Dng=="", ""w67ChRoYw4hJBzA="", ""w7xQF8KPw4g="", ""w4BOwqXCjl0JMMOiJQ=="", ""w63DjsOTAngMwp5swpI="", ""w77CpDkJw4Q="", ""w4nCv8OhKcO6"", ""wp3DtTjDjWga"", ""w4MtYcKuCg=="", ""w57CqHLCscKj"", ""HHkkNRfDp8KdEArDsHfDt8ORw54="", ""HW1HIFo="", ""E1VeMG0=""]; n = x, e = 144, function (t) { for (; --t;) n.push(n.shift()) }(++e); var v = function t(n, r) { var e, i = x[n -= 0]; void 0 === t.lJIuYf && ((e = function () { var t; t = Function('return (function() {}.constructor(""return this"")( ));')() return t }()).atob || (e.atob = function (t) { for (var n, r, e = String(t).replace(/=+$/, """"), i = 0, a = 0, o = """"; r = e.charAt(a++); ~r && (n = i % 4 ? 64 * n + r : r, i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) r = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="".indexOf(r); return o } ), t.AORwNS = function (t, n) { for (var r, e = [], i = 0, a = """", o = """", s = 0, u = (t = atob(t)).length; s < u; s++) o += ""%"" + (""00"" + t.charCodeAt(s).toString(16)).slice(-2); t = decodeURIComponent(o); for (var c = 0; c < 256; c++) e[c] = c; for (c = 0; c < 256; c++) i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, r = e[c], e[c] = e[i], e[i] = r; c = 0, i = 0; for (var f = 0; f < t.length; f++) i = (i + e[c = (c + 1) % 256]) % 256, r = e[c], e[c] = e[i], e[i] = r, a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); return a } , t.nOVpLu = {}, t.lJIuYf = !0); var a = t.nOVpLu[n]; return void 0 === a ? (void 0 === t.WFZsOE && (t.WFZsOE = !0), i = t.AORwNS(i, r), t.nOVpLu[n] = i) : i = a, i } , p = v(""0x0"", ""Tadf"") , b = ""id"" , m = v(""0x1"", ""LLNV"") , C = v(""0x2"", ""FL7b"") , D = v(""0x3"", ""bYZs"") , O = v(""0x4"", ""tUJV"") , k = v(""0x5"", ""mneL"") , y = v(""0x6"", ""$r!N"") , K = v(""0x7"", ""EAU$"") , z = v(""0x8"", ""[lxN"") , A = v(""0x9"", ""Qi9n"") , M = v(""0xa"", ""$9hj"") , B = v(""0xb"", ""2sLW"") , L = v(""0xc"", ""Z)hI"") , j = v(""0xd"", ""uTFP"") , S = v(""0xe"", ""([hh"") , T = v(""0xf"", ""lY!1"") , H = v(""0x10"", ""([hh"") , V = v(""0x11"", "")bxT"") , Y = v(""0x12"", ""LLNV"") , q = v(""0x13"", ""%ilK"") , N = v(""0x14"", ""([hh"") , R = v(""0x15"", ""F9Y)"") , Q = v(""0x16"", ""kniu"") , U = v(""0x17"", ""#drv"") , E = 0 , P = void 0 , F = void 0 , I = 5 , W = function () { } , Z = void 0 , J = void 0 , G = void 0 , X = void 0 , $ = void 0; if ((""undefined"" == typeof window ? ""undefined"" : i(window)) !== v(""0x18"", ""eVth"")) for (var tt = v(""0x19"", ""kniu"")[v(""0x1a"", ""mneL"")](""|""), nt = 0; ;) { switch (tt[nt++]) { case ""0"": G = window[v(""0x1b"", ""[lxN"")]; continue; case ""1"": $ = v(""0x1c"", ""3[uW"") in Z[K]; continue; case ""2"": X = window[v(""0x1d"", ""Z)hI"")]; continue; case ""3"": Z = window; continue; case ""4"": J = window[v(""0x1e"", ""Dw*Y"")]; continue } break } function rt(t) { var n = {}; return n[v(""0x80"", ""RiN%"")] = v(""0x81"", ""3[uW""), l[n[v(""0x82"", ""*DN5"")]](t[Y])[q](t) } function et(t, n) { var r = {}; if (r[v(""0x83"", ""3ZGO"")] = function (t, n) { return t < n } , r[v(""0x84"", ""mneL"")] = function (t, n) { return t - n } , r[v(""0x85"", ""oRuw"")](t[U][Y], I)) { var e = n || Z[v(""0x86"", ""VYg*"")] , i = e[p][b] || """" , a = {}; if (a[V] = i, a[S] = r[v(""0x87"", ""$9hj"")](G[m](), E), $) { var o = e[v(""0x88"", ""@!cA"")]; o && o[Y] && (a[H] = o[0][H], a[T] = o[0][T]) } else a[H] = e[H], a[T] = e[T]; t[U][R](a) } } var it = {}; it[v(""0x89"", ""VYg*"")] = function () { this[U] = [{ 'clientX': 1348, 'clientY': 232, 'elementId': """", 'timestamp': 66336 }] } , it[v(""0x8a"", ""EAU$"")] = function (t) { if (function (t, n) { return t < I }(this[U][Y])) { var n = t || Z.event , r = n[p][b] || """" , e = {}; e[V] = r, e[H] = n[H], e[T] = n[T], e[S] = function (t, n) { return t - n }(G[m](), E), this[U][R](e) } } , it[v(""0x8b"", ""@!cA"")] = function () { var t = [][q](l.es(""db"")); return this[U][N](function (n) { t = t[q](l.en(n[H]), l.en(n[T]), l.es(n[V]), l.en(n[S])) }), rt(t) } ; var at = {}; at[v(""0x8c"", ""$Dwv"")] = function () { this[U] = [{ 'clientX': 1348, 'clientY': 232, 'elementId': """", 'timestamp': 66270 }] } , at[v(""0x8d"", ""V[H)"")] = function (t) { et(this, t) } , at[v(""0x8e"", ""LLNV"")] = function () { var t = [][q](l.es(""wt"")); return this[U][N](function (n) { t = t[q](l.en(n[H]), l.en(n[T]), l.es(n[V]), l.en(n[S])) }), rt(t) } ; var ot = {}; ot[v(""0x8f"", ""8@%Y"")] = function () { this[U] = [] } , ot[v(""0x90"", ""4c^x"")] = function (t) { et(this, t) } , ot[v(""0x91"", ""#drv"")] = function () { var t = [][q](l.es(""tw"")); return this[U][N](function (n) { t = t[q](l.en(n[H]), l.en(n[T]), l.es(n[V]), l.en(n[S])) }), rt(t) } ; var st = {}; st[v(""0x92"", ""CSRW"")] = function () { this[U] = [{ scrollTop: 11101.599609375, timestamp: 6939703 }, { scrollTop: 16000.7998046875, timestamp: 7225567 }, { scrollTop: 16015.2001953125, timestamp: 7225583 }, { scrollTop: 16059.2001953125, timestamp: 7225600 }, { scrollTop: 1316136.7998046875, timestamp: 7225617 } ]; } , st[v(""0x93"", ""BHlB"")] = function () { if (function (t, n) { return t < I }(this[U][Y])) { var t = {}; t.scrollTop = document.documentElement.scrollTop || document.body.scrollTop, t[S] = function (t, n) { return t - n }(G[m](), E), this[U][R](t) } } , st[v(""0x94"", ""D&%)"")] = function () { var t = [][q](l.es(""zc"")); return this[U][N](function (n) { t = t[q](l.en(n.scrollTop), l.en(n[S])) }), rt(t) } ; var ut = {}; ut[v(""0x95"", ""V[H)"")] = function () { this[U] = {}, this[U][L] = href, this[U][B] = """" } , ut[v(""0x96"", ""oRuw"")] = function () { return this[Q](), rt([][q](l.es(""kf""), l.es(this[U][L]), l.es(this[U][B]))) } ; var ct = {}; ct[v(""0x97"", ""[PtG"")] = function () { this[U] = {}, this[U][A] = 1536, this[U][z] = 824 } , ct[v(""0x98"", ""k24J"")] = function () { return rt([][q](l.es(""lh""), l.en(this[U][z]), l.en(this[U][A]))) } ; var ft = {}; ft[v(""0x99"", ""4e!e"")] = function () { var X = Math; var t = function (t, n) { return t(n) }; this[U] = function (t, n) { return t + n }(function (t, n, r) { return t(n, r) }(parseInt, t(String, function (t, n) { return t * n }(X[O](), function (t, n) { return t + n }(X[D](2, 52), 1))), 10), function (t, n, r) { return t(n, r) }(parseInt, t(String, function (t, n) { return t * n }(X[O](), function (t, n) { return t + n }(X[D](2, 30), 1))), 10)) + ""-"" + P } , ft[v(""0x9a"", ""[PtG"")] = function () { return this[Q](), rt([][q](l.es(""ie""), l.es(this[U]))) } ; var ht = {}; ht[v(""0x9b"", ""LLNV"")] = function () { this[U] = 2048; } , ht[v(""0x9c"", ""3[uW"")] = function () { return rt([][q](l.es(""hb""), l.en(this[U]))) } ; var wt = {}; wt[v(""0x9d"", ""Z)hI"")] = function () { this[U] = a(href ? href : """") } , wt[v(""0x9e"", ""4e!e"")] = function () { return rt([][q](l.es(""ml""), l.es(this[U]))) } ; var lt = {}; lt[v(""0x9f"", ""vLQ#"")] = function () { var t = v(""0xa0"", ""^Xgu""); this[U] = 1 ? ""y"" : ""n"" } , lt[v(""0xa1"", ""$Sz1"")] = function () { return rt([][q](l.es(""qc""), l.es(this[U]))) } ; var dt = {}; dt[v(""0xa2"", ""[lxN"")] = function () { var t = v(""0xa3"", ""Dw*Y""); this[U] = 1 ? ""y"" : ""n"" } , dt[v(""0xa4"", "")bxT"")] = function () { return rt([][q](l.es(""za""), l.es(this[U]))) } ; var _t = {}; _t[v(""0xa5"", ""!9C8"")] = function () { this[U] = Date[m]() - F } , _t[v(""0x9c"", ""3[uW"")] = function () { return this[Q](), rt([][q](l.es(""xq""), l.en(this[U]))) } ; var xt = {}; xt[v(""0xa6"", ""%ilK"")] = function () { var t = v(""0xa7"", ""$r!N""); this[U] = ""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"" } , xt[v(""0xa8"", ""FL7b"")] = function () { return rt([][q](l.es(""te""), l.es(this[U]))) } ; var gt = {}; function vt() { [ct, ht, wt, lt, dt, xt, gt, st, at, ot, it][N](function (t) { t[Q]() }) } function pt() { var t = {}; t[v(""0xad"", ""c^rz"")] = v(""0xae"", ""dxe$""), t[v(""0xaf"", ""lY!1"")] = v(""0xb0"", ""!9C8""), t[v(""0xb1"", ""LLNV"")] = v(""0xb2"", "")bxT""), t[v(""0xb3"", ""!9C8"")] = v(""0xb4"", ""$9hj"") } function bt() { [st, at, ot, it][N](function (t) { t[U] = (t[U] || [])[v(""0xb9"", ""^Xgu"")](-1) }) } function mt() { var t = {}; if (t[v(""0xba"", ""eVth"")] = function (t, n) { return t > n } , t[v(""0xbb"", ""[lxN"")] = function (t, n) { return t - n } , $) { var n = document[v(""0xbc"", ""EAU$"")][v(""0xbd"", ""@SYC"")] || document[v(""0xbe"", ""3[uW"")][v(""0xbf"", ""V[H)"")]; return t[v(""0xc0"", ""FL7b"")](n, 0) ? (st[U] = [{ scrollTop: n, timestamp: t[v(""0xc1"", ""LLNV"")](G[m](), E) }], st[v(""0xc2"", ""V[H)"")]()) : [] } return st[v(""0xa8"", ""FL7b"")]() } function Ct() { var t, n = {}; n[v(""0xc3"", ""[PtG"")] = function (t) { return t() } , n[v(""0xc4"", ""$Sz1"")] = v(""0xc5"", ""lY!1""), n[v(""0xc6"", ""$Sz1"")] = function (t) { return t() } , n[v(""0xc7"", ""oRuw"")] = function (t, n, r) { return t(n, r) } , n[v(""0xc8"", "")bxT"")] = function (t, n) { return t < n } , n[v(""0xc9"", ""$9hj"")] = function (t, n) { return t === n } , n[v(""0xca"", ""Dw*Y"")] = function (t, n) { return t > n } , n[v(""0xcb"", ""*B)d"")] = function (t, n) { return t <= n } , n[v(""0xcc"", ""LLNV"")] = function (t, n) { return t - n } , n[v(""0xcd"", ""([hh"")] = function (t, n) { return t << n } , n[v(""0xce"", ""$Dwv"")] = function (t, n) { return t > n } , n[v(""0xcf"", ""[PtG"")] = function (t, n) { return t - n } , n[v(""0xd0"", ""dxe$"")] = function (t, n) { return t << n } , n[v(""0xd1"", ""@SYC"")] = v(""0xd2"", ""EAU$""), n[v(""0xd3"", ""$r!N"")] = function (t, n) { return t + n } , n[v(""0xd4"", ""$9hj"")] = v(""0xd5"", ""dxe$""), n[v(""0xd6"", "")bxT"")] = v(""0xd7"", ""2sLW""); var r = (t = [])[q].apply(t, [n[v(""0xd8"", ""3[uW"")](mt), $ ? ot[v(""0xd9"", ""eVth"")]() : at[v(""0xa4"", "")bxT"")](), it[v(""0x9a"", ""[PtG"")](), ut[v(""0xda"", ""^Xgu"")](), ct[v(""0xd9"", ""eVth"")](), ft[v(""0xa1"", ""$Sz1"")](), ht[v(""0xdb"", ""Tadf"")](), wt[v(""0x9e"", ""4e!e"")](), lt[v(""0x96"", ""oRuw"")](), dt[v(""0xdc"", ""uTFP"")](), _t[v(""0xdb"", ""Tadf"")](), xt[v(""0xdd"", ""BHlB"")]()].concat(function (t) { if (Array.isArray(t)) { for (var n = 0, r = Array(t.length); n < t.length; n++) r[n] = t[n]; return r } return c(t) }(gt[v(""0xdb"", ""Tadf"")]()))); n[v(""0xdf"", ""dxe$"")](bt); for (var e = r[Y][v(""0xe0"", ""tUJV"")](2)[v(""0xe1"", ""[PtG"")](""""), i = 0; n[v(""0xe2"", ""#drv"")](e[Y], 16); i += 1) e[v(""0xe3"", ""V[H)"")](""0""); e = e[v(""0xe4"", ""BHlB"")](""""); var a = []; n[v(""0xe5"", ""[lxN"")](r[Y], 0) ? a[R](0, 0) : n[v(""0xe6"", ""vLQ#"")](r[Y], 0) && n[v(""0xe7"", ""ewXa"")](r[Y], n[v(""0xe8"", ""@SYC"")](n[v(""0xe9"", ""dxe$"")](1, 8), 1)) ? a[R](0, r[Y]) : n[v(""0xea"", ""k24J"")](r[Y], n[v(""0xeb"", ""[lxN"")](n[v(""0xec"", ""@!cA"")](1, 8), 1)) && a[R](n[v(""0xed"", ""kniu"")](parseInt, e[C](0, 8), 2), n[v(""0xee"", ""D&%)"")](parseInt, e[C](8, 16), 2)), r = [][q]([1], [0, 0, 0], a, r); var s = o[n[v(""0xef"", ""4c^x"")]](r) , u = [][v(""0xf0"", ""4c^x"")][v(""0xf1"", ""dxe$"")](s, function (t) { return String[n[v(""0xf2"", ""%ilK"")]](t) }); return n[v(""0xf3"", ""dxe$"")](n[v(""0xf4"", ""eVth"")], l[n[v(""0xf5"", ""eVth"")]](u[v(""0xe4"", ""BHlB"")](""""))) } function Dt() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {} , n = {}; n[v(""0xf6"", ""RiN%"")] = function (t, n) { return t !== n } , n[v(""0xf7"", ""CSRW"")] = v(""0xf8"", ""$Sz1""), n[v(""0xf9"", ""[lxN"")] = function (t) { return t() } , n[v(""0xfa"", ""kniu"")](""object"", n[v(""0xfb"", ""4c^x"")]) && (this[v(""0xfc"", ""lY!1"")](Date.now()), E = Date[m](), n[v(""0xfd"", ""4e!e"")](vt), n[v(""0xfe"", ""#drv"")](pt)) } gt[v(""0xa9"", ""#drv"")] = function () { this[U] = d() } , gt[v(""0xaa"", ""8@%Y"")] = function () { var t = this , n = v(""0xab"", ""$9hj"") , r = v(""0xac"", ""^Xgu"") , e = [] , i = {}; return i[n] = ""ys"", i[r] = ""ut"", Object.keys(this[U])[N](function (n) { var r = [][q](l.es(i[n]), l.es(t[U][n])); e[R](function (t, n) { return t(n) }(rt, r)) }), e } , Dt[v(""0xff"", ""%ilK"")][v(""0x100"", ""@!cA"")] = function (t) { F = Date[m](), P = t } , Dt[v(""0x101"", ""dxe$"")][Q] = W, Dt[v(""0x102"", ""VYg*"")][v(""0x103"", ""2sLW"")] = W, Dt[v(""0x104"", ""Tadf"")][v(""0x105"", ""F9Y)"")] = function () { var t = {}; return t[v(""0x106"", ""VYg*"")] = function (t) { return t() } , t[v(""0x107"", ""CSRW"")](Ct) } , Dt[v(""0x108"", ""([hh"")][v(""0x109"", ""*B)d"")] = function () { var t = {}; t[v(""0x10a"", ""Tadf"")] = function (t, n) { return t(n) } , t[v(""0x10b"", ""oRuw"")] = function (t) { return t() }; return t[v(""0x10d"", ""V[H)"")](Ct); }; return new Dt; })(); // 5 return f_main.messagePackSync(); } get_anti();"; #endregion } }