public int Execute(int jobID) { WebServiceCharging3g webServiceCharging3G = new WebServiceCharging3g(); string userName = "******"; string userPass = "******"; string cpId = "1930"; string price; try { DataTable dtUsers = ViSport_S2_Registered_UsersController.GetSportGameUserByTypeTp(false); if (dtUsers != null && dtUsers.Rows.Count > 0) { string message = string.Empty; string returnValue = string.Empty; string notEnoughMoney = AppEnv.GetSetting("NotEnoughMoney"); string serviceType = "Charge Hero"; string serviceName = "ViSport_Hero"; string reasonLog = string.Empty; int count = 0; for (int i = 0; i < dtUsers.Rows.Count; i++) { if (count >= 3) { Thread.Sleep(1000); count = 0; } try { string msisdn = dtUsers.Rows[i]["User_ID"].ToString(); #region TIEN HANH CHARGED price = "5000"; returnValue = webServiceCharging3G.PaymentVnmWithAccount(dtUsers.Rows[i]["User_ID"].ToString(), price, "Charged Sub Trieu phu bong da ", "Trieuphu_Sub", userName, userPass, cpId); if (returnValue.Trim() == notEnoughMoney) { price = "3000"; returnValue = webServiceCharging3G.PaymentVnmWithAccount(dtUsers.Rows[i]["User_ID"].ToString(), price, "Charged Sub Trieu phu bong da", "Trieuphu_Sub", userName, userPass, cpId); if (returnValue.Trim() == notEnoughMoney) { price = "2000"; returnValue = webServiceCharging3G.PaymentVnmWithAccount(dtUsers.Rows[i]["User_ID"].ToString(), price, "Charged Sub Trieu phu bong da", "Trieuphu_Sub", userName, userPass, cpId); if (returnValue.Trim() == notEnoughMoney) { price = "1000"; returnValue = webServiceCharging3G.PaymentVnmWithAccount(dtUsers.Rows[i]["User_ID"].ToString(), price, "Charged Sub Trieu phu bong da", "Trieuphu_Sub", userName, userPass, cpId); } } } if (returnValue == "1") { #region Sinh MDT string code1 = RandomActiveCode.Generate(8); string code2 = RandomActiveCode.Generate(8); ViSport_S2_Registered_UsersController.SportGameHeroLotteryCodeInsert(msisdn, code1); ViSport_S2_Registered_UsersController.SportGameHeroLotteryCodeInsert(msisdn, code2); #endregion #region LOG DOANH THU var logInfo = new SportGameHeroChargedUserLogInfo(); logInfo.ID = ConvertUtility.ToInt32(dtUsers.Rows[i]["ID"].ToString()); logInfo.User_ID = dtUsers.Rows[i]["User_ID"].ToString(); logInfo.Request_ID = dtUsers.Rows[i]["Request_ID"].ToString(); logInfo.Service_ID = dtUsers.Rows[i]["Service_ID"].ToString(); logInfo.Command_Code = dtUsers.Rows[i]["Command_Code"].ToString(); logInfo.Service_Type = ConvertUtility.ToInt32(dtUsers.Rows[i]["Service_Type"].ToString()); logInfo.Charging_Count = ConvertUtility.ToInt32(dtUsers.Rows[i]["Charging_Count"].ToString()); logInfo.FailedChargingTime = ConvertUtility.ToInt32(dtUsers.Rows[i]["FailedChargingTimes"].ToString()); logInfo.RegisteredTime = ConvertUtility.ToDateTime(dtUsers.Rows[i]["RegisteredTime"].ToString()); logInfo.ExpiredTime = DateTime.Now.AddDays(1); logInfo.Registration_Channel = dtUsers.Rows[i]["Registration_Channel"].ToString(); logInfo.Status = ConvertUtility.ToInt32(dtUsers.Rows[i]["Status"].ToString()); logInfo.Operator = dtUsers.Rows[i]["Operator"].ToString(); logInfo.Price = ConvertUtility.ToInt32(price); logInfo.Reason = "Succ"; ViSport_S2_Registered_UsersController.InsertSportGameHeroChargedUserLogForSub(logInfo); #endregion } else { #region LOG DOANH THU var logInfo = new SportGameHeroChargedUserLogInfo(); logInfo.ID = ConvertUtility.ToInt32(dtUsers.Rows[i]["ID"].ToString()); logInfo.User_ID = dtUsers.Rows[i]["User_ID"].ToString(); logInfo.Request_ID = dtUsers.Rows[i]["Request_ID"].ToString(); logInfo.Service_ID = dtUsers.Rows[i]["Service_ID"].ToString(); logInfo.Command_Code = dtUsers.Rows[i]["Command_Code"].ToString(); logInfo.Service_Type = ConvertUtility.ToInt32(dtUsers.Rows[i]["Service_Type"].ToString()); logInfo.Charging_Count = ConvertUtility.ToInt32(dtUsers.Rows[i]["Charging_Count"].ToString()); logInfo.FailedChargingTime = ConvertUtility.ToInt32(dtUsers.Rows[i]["FailedChargingTimes"].ToString()); logInfo.RegisteredTime = ConvertUtility.ToDateTime(dtUsers.Rows[i]["RegisteredTime"].ToString()); logInfo.ExpiredTime = DateTime.Now.AddDays(1); logInfo.Registration_Channel = dtUsers.Rows[i]["Registration_Channel"].ToString(); logInfo.Status = ConvertUtility.ToInt32(dtUsers.Rows[i]["Status"].ToString()); logInfo.Operator = dtUsers.Rows[i]["Operator"].ToString(); logInfo.Price = ConvertUtility.ToInt32(price); logInfo.Reason = returnValue; ViSport_S2_Registered_UsersController.InsertSportGameHeroChargedUserLogForSub(logInfo); #endregion } if (returnValue == "1")//CHARGED THANH CONG { string today = DateTime.Now.DayOfWeek.ToString(); string serviceId = dtUsers.Rows[i]["Service_ID"].ToString(); string commandCode = dtUsers.Rows[i]["Command_Code"].ToString(); string requestId = dtUsers.Rows[i]["Request_ID"].ToString(); if (CheckDayOfWeek(today)) //Tra MT vao cac ngay 3,5,7 { #region SEND MT THONG_TIN_TRAN_DAU DataTable dtMtFootball = ViSport_S2_Registered_UsersController.SportGameHeroMatchGetByDay(); if (dtMtFootball != null && dtMtFootball.Rows.Count > 0) { string teamA = UnicodeUtility.UnicodeToKoDau(dtMtFootball.Rows[0]["Team_A_Name"].ToString()); string teamB = UnicodeUtility.UnicodeToKoDau(dtMtFootball.Rows[0]["Team_B_Name"].ToString()); string message1 = "Tran dau du doan ngay hom nay la: " + teamA + " va " + teamB + ". De du doan " + teamA + " thang soan KQ 1, du doan " + teamB + " thang soan KQ 3, du doan 2 doi hoa soan KQ 2 gui 979"; SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message1, serviceId, commandCode, requestId); //MT1 string message2 = "De du doan tong so ban thang soan BT G gui 979 (voi G la tong so ban thang 2 doi ghi trong thoi gian thi dau chinh thuc)"; SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message2, serviceId, commandCode, requestId); //MT2 string message3 = "De du doan ti so trong thoi gian chinh thuc soan TS A B gui 979 trong do A la so ban thang doi " + teamA + " ghi duoc, B la so ban thang doi " + teamB + " ghi duoc."; SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message3, serviceId, commandCode, requestId); //MT3 string message4 = "De du doan " + teamA + " co ti le giu bong nhieu hon soan GB 1, du doan " + teamB + " co ti le giu bong nhieu hon soan GB 3, hai doi co ti le giu bong ngang nhau soan GB 2 gui 979"; SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message4, serviceId, commandCode, requestId); //MT4 string message5 = "De du doan tong so the vang soan TV C gui 979 trong do C la tong so the vang trong tai rut ra cho 2 doi trong thoi gian thi dau chinh thuc "; SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message5, serviceId, commandCode, requestId); //MT5 } #endregion } else //Tra Cau hoi vao cac ngay 2,4,6,CN { #region SEND MT CAU_HOI_BONG_DA //SEND MT CHO KHACH HANG DataTable dtQuestion = ViSport_S2_Registered_UsersController.GetQuestionInfoSportGameHero(); if (dtQuestion != null && dtQuestion.Rows.Count > 0) { message = dtQuestion.Rows[0]["Question"].ToString(); message = message.Replace("P1", "1").Replace("P2", "2"); int questionIdnew = ConvertUtility.ToInt32(dtQuestion.Rows[0]["Id"].ToString()); string answer = dtQuestion.Rows[0]["Answer"].ToString(); answer = answer.Replace("P1", "1").Replace("P2", "2"); ViSport_S2_Registered_UsersController.InsertSportGameHeroAnswerLog(dtUsers.Rows[i]["User_ID"].ToString(), questionIdnew, message, answer, DateTime.Now, 0); // LUU LOG Question SendMtSportGame(dtUsers.Rows[i]["User_ID"].ToString(), message, serviceId, commandCode, requestId); } //END SEND MT CHO KHACH HANG #endregion } } #endregion count = count + 1; } catch (Exception ex) { log.Error("Trieu phu bong da Loi charged : " + ex); } } } return(1); } catch (Exception ex) { log.Error("Trieu phu bong da Loi lay tap User : " + ex); return(0); } }
/// <summary> /// Encodes the supplied UTF-8 text. /// </summary> /// <param name="utf8Source">A source buffer containing the UTF-8 text to encode.</param> /// <param name="utf8Destination">The destination buffer to which the encoded form of <paramref name="utf8Source"/> /// will be written.</param> /// <param name="bytesConsumed">The number of bytes consumed from the <paramref name="utf8Source"/> buffer.</param> /// <param name="bytesWritten">The number of bytes written to the <paramref name="utf8Destination"/> buffer.</param> /// <param name="isFinalBlock"><see langword="true"/> if there is further source data that needs to be encoded; /// <see langword="false"/> if there is no further source data that needs to be encoded.</param> /// <returns>An <see cref="OperationStatus"/> describing the result of the encoding operation.</returns> /// <remarks>The buffers <paramref name="utf8Source"/> and <paramref name="utf8Destination"/> must not overlap.</remarks> public unsafe virtual OperationStatus EncodeUtf8( ReadOnlySpan <byte> utf8Source, Span <byte> utf8Destination, out int bytesConsumed, out int bytesWritten, bool isFinalBlock = true) { int originalUtf8SourceLength = utf8Source.Length; int originalUtf8DestinationLength = utf8Destination.Length; const int TempUtf16CharBufferLength = 24; // arbitrarily chosen, but sufficient for any reasonable implementation char * pTempCharBuffer = stackalloc char[TempUtf16CharBufferLength]; const int TempUtf8ByteBufferLength = TempUtf16CharBufferLength * 3 /* max UTF-8 output code units per UTF-16 input code unit */; byte * pTempUtf8Buffer = stackalloc byte[TempUtf8ByteBufferLength]; uint nextScalarValue; int utf8BytesConsumedForScalar = 0; int nonEscapedByteCount = 0; OperationStatus opStatus = OperationStatus.Done; while (!utf8Source.IsEmpty) { // For performance, read until we require escaping. do { nextScalarValue = utf8Source[nonEscapedByteCount]; if (UnicodeUtility.IsAsciiCodePoint(nextScalarValue)) { // Check Ascii cache. byte[]? encodedBytes = GetAsciiEncoding((byte)nextScalarValue); if (ReferenceEquals(encodedBytes, s_noEscape)) { if (++nonEscapedByteCount <= utf8Destination.Length) { // Source data can be copied as-is. continue; } --nonEscapedByteCount; opStatus = OperationStatus.DestinationTooSmall; break; } if (encodedBytes == null) { // We need to escape and update the cache, so break out of this loop. opStatus = OperationStatus.Done; utf8BytesConsumedForScalar = 1; break; } // For performance, handle the non-escaped bytes and encoding here instead of breaking out of the loop. if (nonEscapedByteCount > 0) { // We previously verified the destination size. Debug.Assert(nonEscapedByteCount <= utf8Destination.Length); utf8Source.Slice(0, nonEscapedByteCount).CopyTo(utf8Destination); utf8Source = utf8Source.Slice(nonEscapedByteCount); utf8Destination = utf8Destination.Slice(nonEscapedByteCount); nonEscapedByteCount = 0; } if (!((ReadOnlySpan <byte>)encodedBytes).TryCopyTo(utf8Destination)) { opStatus = OperationStatus.DestinationTooSmall; break; } utf8Destination = utf8Destination.Slice(encodedBytes.Length); utf8Source = utf8Source.Slice(1); continue; } // Code path for non-Ascii. opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Source.Slice(nonEscapedByteCount), out nextScalarValue, out utf8BytesConsumedForScalar); if (opStatus == OperationStatus.Done) { if (!WillEncode((int)nextScalarValue)) { nonEscapedByteCount += utf8BytesConsumedForScalar; if (nonEscapedByteCount <= utf8Destination.Length) { // Source data can be copied as-is. continue; } nonEscapedByteCount -= utf8BytesConsumedForScalar; opStatus = OperationStatus.DestinationTooSmall; } } // We need to escape. break; } while (nonEscapedByteCount < utf8Source.Length); if (nonEscapedByteCount > 0) { // We previously verified the destination size. Debug.Assert(nonEscapedByteCount <= utf8Destination.Length); utf8Source.Slice(0, nonEscapedByteCount).CopyTo(utf8Destination); utf8Source = utf8Source.Slice(nonEscapedByteCount); utf8Destination = utf8Destination.Slice(nonEscapedByteCount); nonEscapedByteCount = 0; } if (utf8Source.IsEmpty) { goto Done; } // This code path is hit for ill-formed input data (where decoding has replaced it with U+FFFD) // and for well-formed input data that must be escaped. if (opStatus != OperationStatus.Done) // Optimize happy path. { if (opStatus == OperationStatus.NeedMoreData) { if (!isFinalBlock) { bytesConsumed = originalUtf8SourceLength - utf8Source.Length; bytesWritten = originalUtf8DestinationLength - utf8Destination.Length; return(OperationStatus.NeedMoreData); } // else treat this as a normal invalid subsequence. } else if (opStatus == OperationStatus.DestinationTooSmall) { goto ReturnDestinationTooSmall; } } if (TryEncodeUnicodeScalar((int)nextScalarValue, pTempCharBuffer, TempUtf16CharBufferLength, out int charsWrittenJustNow)) { // Now that we have it as UTF-16, transcode it to UTF-8. // Need to copy it to a temporary buffer first, otherwise GetBytes might throw an exception // due to lack of output space. int transcodedByteCountThisIteration = Encoding.UTF8.GetBytes(pTempCharBuffer, charsWrittenJustNow, pTempUtf8Buffer, TempUtf8ByteBufferLength); ReadOnlySpan <byte> transcodedUtf8BytesThisIteration = new ReadOnlySpan <byte>(pTempUtf8Buffer, transcodedByteCountThisIteration); // Update cache for Ascii if (UnicodeUtility.IsAsciiCodePoint(nextScalarValue)) { _asciiEscape[nextScalarValue] = transcodedUtf8BytesThisIteration.ToArray(); } if (!transcodedUtf8BytesThisIteration.TryCopyTo(utf8Destination)) { goto ReturnDestinationTooSmall; } utf8Destination = utf8Destination.Slice(transcodedByteCountThisIteration); } else { // We really don't expect this to fail. If that happens we'll report an error to our caller. bytesConsumed = originalUtf8SourceLength - utf8Source.Length; bytesWritten = originalUtf8DestinationLength - utf8Destination.Length; return(OperationStatus.InvalidData); } utf8Source = utf8Source.Slice(utf8BytesConsumedForScalar); } Done: // Input buffer has been fully processed! bytesConsumed = originalUtf8SourceLength; bytesWritten = originalUtf8DestinationLength - utf8Destination.Length; return(OperationStatus.Done); ReturnDestinationTooSmall: bytesConsumed = originalUtf8SourceLength - utf8Source.Length; bytesWritten = originalUtf8DestinationLength - utf8Destination.Length; return(OperationStatus.DestinationTooSmall); }
public static OperationStatus DecodeScalarValueFromUtf8(ReadOnlySpan <byte> source, out uint result, out int bytesConsumed) { const char ReplacementChar = '\uFFFD'; // This method follows the Unicode Standard's recommendation for detecting // the maximal subpart of an ill-formed subsequence. See The Unicode Standard, // Ch. 3.9 for more details. In summary, when reporting an invalid subsequence, // it tries to consume as many code units as possible as long as those code // units constitute the beginning of a longer well-formed subsequence per Table 3-7. int index = 0; // Try reading input[0]. if ((uint)index >= (uint)source.Length) { goto NeedsMoreData; } uint tempValue = source[index]; if (!UnicodeUtility.IsAsciiCodePoint(tempValue)) { goto NotAscii; } Finish: bytesConsumed = index + 1; Debug.Assert(1 <= bytesConsumed && bytesConsumed <= 4); // Valid subsequences are always length [1..4] result = tempValue; return(OperationStatus.Done); NotAscii: // Per Table 3-7, the beginning of a multibyte sequence must be a code unit in // the range [C2..F4]. If it's outside of that range, it's either a standalone // continuation byte, or it's an overlong two-byte sequence, or it's an out-of-range // four-byte sequence. if (!UnicodeUtility.IsInRangeInclusive(tempValue, 0xC2, 0xF4)) { goto FirstByteInvalid; } tempValue = (tempValue - 0xC2) << 6; // Try reading input[1]. index++; if ((uint)index >= (uint)source.Length) { goto NeedsMoreData; } // Continuation bytes are of the form [10xxxxxx], which means that their two's // complement representation is in the range [-65..-128]. This allows us to // perform a single comparison to see if a byte is a continuation byte. int thisByteSignExtended = (sbyte)source[index]; if (thisByteSignExtended >= -64) { goto Invalid; } tempValue += (uint)thisByteSignExtended; tempValue += 0x80; // remove the continuation byte marker tempValue += (0xC2 - 0xC0) << 6; // remove the leading byte marker if (tempValue < 0x0800) { Debug.Assert(UnicodeUtility.IsInRangeInclusive(tempValue, 0x0080, 0x07FF)); goto Finish; // this is a valid 2-byte sequence } // This appears to be a 3- or 4-byte sequence. Since per Table 3-7 we now have // enough information (from just two code units) to detect overlong or surrogate // sequences, we need to perform these checks now. if (!UnicodeUtility.IsInRangeInclusive(tempValue, ((0xE0 - 0xC0) << 6) + (0xA0 - 0x80), ((0xF4 - 0xC0) << 6) + (0x8F - 0x80))) { // The first two bytes were not in the range [[E0 A0]..[F4 8F]]. // This is an overlong 3-byte sequence or an out-of-range 4-byte sequence. goto Invalid; } if (UnicodeUtility.IsInRangeInclusive(tempValue, ((0xED - 0xC0) << 6) + (0xA0 - 0x80), ((0xED - 0xC0) << 6) + (0xBF - 0x80))) { // This is a UTF-16 surrogate code point, which is invalid in UTF-8. goto Invalid; } if (UnicodeUtility.IsInRangeInclusive(tempValue, ((0xF0 - 0xC0) << 6) + (0x80 - 0x80), ((0xF0 - 0xC0) << 6) + (0x8F - 0x80))) { // This is an overlong 4-byte sequence. goto Invalid; } // The first two bytes were just fine. We don't need to perform any other checks // on the remaining bytes other than to see that they're valid continuation bytes. // Try reading input[2]. index++; if ((uint)index >= (uint)source.Length) { goto NeedsMoreData; } thisByteSignExtended = (sbyte)source[index]; if (thisByteSignExtended >= -64) { goto Invalid; // this byte is not a UTF-8 continuation byte } tempValue <<= 6; tempValue += (uint)thisByteSignExtended; tempValue += 0x80; // remove the continuation byte marker tempValue -= (0xE0 - 0xC0) << 12; // remove the leading byte marker if (tempValue <= 0xFFFF) { Debug.Assert(UnicodeUtility.IsInRangeInclusive(tempValue, 0x0800, 0xFFFF)); goto Finish; // this is a valid 3-byte sequence } // Try reading input[3]. index++; if ((uint)index >= (uint)source.Length) { goto NeedsMoreData; } thisByteSignExtended = (sbyte)source[index]; if (thisByteSignExtended >= -64) { goto Invalid; // this byte is not a UTF-8 continuation byte } tempValue <<= 6; tempValue += (uint)thisByteSignExtended; tempValue += 0x80; // remove the continuation byte marker tempValue -= (0xF0 - 0xE0) << 18; // remove the leading byte marker UnicodeDebug.AssertIsValidSupplementaryPlaneScalar(tempValue); goto Finish; // this is a valid 4-byte sequence FirstByteInvalid: index = 1; // Invalid subsequences are always at least length 1. Invalid: Debug.Assert(1 <= index && index <= 3); // Invalid subsequences are always length 1..3 bytesConsumed = index; result = ReplacementChar; return(OperationStatus.InvalidData); NeedsMoreData: Debug.Assert(0 <= index && index <= 3); // Incomplete subsequences are always length 0..3 bytesConsumed = index; result = ReplacementChar; return(OperationStatus.NeedMoreData); }
protected void HienThiNoiDung(Boolean thuchien) { pnlNoiDung.Visible = true; id = ConvertUtility.ToInt32(Request.QueryString["id"]); DataSet ds = XosoController.GetDetail_LotAndOtherLotByIdAndTop(id, 6); string chitietGiaodich = "KQXS: " + ds.Tables[0].Rows[0]["company_name"].ToString() + " ngày " + ConvertUtility.ToDateTime(ds.Tables[0].Rows[0]["lot_time"]).ToString("dd/MM/yyyy") + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); if (thuchien) { // if (lang == "1") { ltrTieuDe.Text = "XỔ SỐ"; lblTen.Text = ds.Tables[0].Rows[0]["company_name"].ToString() + " ngày " + ConvertUtility.ToDateTime(ds.Tables[0].Rows[0]["lot_time"]).ToString("dd/MM/yyyy"); //ltrNoiDung.Text = "Bạn đã đăng ký thành công dịch vụ lấy kết quả trực tiếp từ trường quay xổ số.<br />Cảm ơn bạn đã sử dụng dịch vụ!"; lbldb6.Text = "Đặc Biệt DB6"; lbldb.Text = "Đặc Biệt"; lblg1.Text = "Nhất"; lblg2.Text = "Nhì"; lblg3.Text = "Ba"; lblg4.Text = "Tư"; lblg5.Text = "Năm"; lblg6.Text = "Sáu"; lblg7.Text = "Bảy"; lblg8.Text = "Tám"; //lblOther.Text = "XEM TIẾP"; } else { ltrTieuDe.Text = "XO SO"; lblTen.Text = UnicodeUtility.UnicodeToKoDau(ds.Tables[0].Rows[0]["company_name"].ToString()) + " ngay " + ConvertUtility.ToDateTime(ds.Tables[0].Rows[0]["lot_time"]).ToString("dd/MM/yyyy");; //ltrNoiDung.Text = "Ban da dang ky thanh cong dich vu lay ket qua truc tiep tu truong quay xo so.<br />Cam on ban da su dung dich vu!"; }; // Nội dung KQXS if (string.IsNullOrEmpty(ds.Tables[0].Rows[0]["lot_prize16"].ToString())) { g1.Visible = false; } else { g1.Visible = true; ltrgdb6.Text = ds.Tables[0].Rows[0]["lot_prize16"].ToString(); } if (string.IsNullOrEmpty(ds.Tables[0].Rows[0]["lot_prize08"].ToString())) { g8.Visible = false; } else { g8.Visible = true; ltrg8.Text = ds.Tables[0].Rows[0]["lot_prize08"].ToString(); } ltrg1.Text = ds.Tables[0].Rows[0]["lot_prize01"].ToString(); ltrg2.Text = ds.Tables[0].Rows[0]["lot_prize02"].ToString(); ltrg3.Text = ds.Tables[0].Rows[0]["lot_prize03"].ToString(); ltrg4.Text = ds.Tables[0].Rows[0]["lot_prize04"].ToString(); ltrg5.Text = ds.Tables[0].Rows[0]["lot_prize05"].ToString(); ltrg6.Text = ds.Tables[0].Rows[0]["lot_prize06"].ToString(); ltrg7.Text = ds.Tables[0].Rows[0]["lot_prize07"].ToString(); ltrdb.Text = ds.Tables[0].Rows[0]["lot_prize15"].ToString(); // Transaction.Success(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), id.ToString(), chitietGiaodich, 9); // //rptOther.DataSource = ds.Tables[1]; //rptOther.ItemDataBound += new RepeaterItemEventHandler(rptOther_ItemDataBound); ; //rptOther.DataBind(); } else { detail.Visible = false; //Thông báo lỗi thanh toán if (lang == "1") { ltrTieuDe.Text = Resources.Resource.wThongBao; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan; } else { ltrTieuDe.Text = Resources.Resource.wThongBao_KD; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan_KD; } Transaction.Failure(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), id.ToString(), chitietGiaodich, 9, messageReturn); //--Thông báo lỗi thanh toán } //log charging ILog logger = log4net.LogManager.GetLogger(Session["telco"].ToString()); logger.Debug("--------------------------------------------------"); logger.Debug("MSISDN:" + Session["msisdn"].ToString()); logger.Debug("Dich vu: Xo so - Ket qua - parameter: " + price + " - id: " + id); logger.Debug("IP:" + HttpContext.Current.Request.UserHostAddress); logger.Debug("Error:" + messageReturn); logger.Debug("Current Url:" + Request.RawUrl); //end log }
protected void rptlstCategory_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemIndex < 0) { return; } DataRowView curData = (DataRowView)e.Item.DataItem; System.Web.UI.WebControls.Image imgAvatar = (System.Web.UI.WebControls.Image)e.Item.FindControl("imgAvatar"); HyperLink lnkAvatar = (HyperLink)e.Item.FindControl("lnkAvatar"); HyperLink lnkTenAnh = (HyperLink)e.Item.FindControl("lnkTenAnh"); Literal ltrTheloai = (Literal)e.Item.FindControl("ltrTheloai"); Literal ltrLuottai = (Literal)e.Item.FindControl("ltrLuottai"); HyperLink lnkTai = (HyperLink)e.Item.FindControl("lnkTai"); HyperLink lnkTang = (HyperLink)e.Item.FindControl("lnkTang"); string sGioiThieu; if (lang == 1) { lnkTenAnh.Text = "<span class=\"bold\">" + curData["AppNameUnicode"].ToString() + "</span>"; ltrTheloai.Text = Resources.Resource.wTheLoai + curData["Web_Name"].ToString(); sGioiThieu = curData["DescriptionUnicode"].ToString(); if (sGioiThieu.Length > 120) { sGioiThieu = sGioiThieu.Substring(0, sGioiThieu.LastIndexOf(" ", 110)) + "..."; } ltrLuottai.Text = Resources.Resource.wGioiThieu + sGioiThieu; lnkTai.Text = "<span class=\"orange bold\">" + Resources.Resource.wTai + "</span>"; lnkTang.Text = "<span class=\"orange bold\">" + Resources.Resource.wTang + "</span>"; } else { lnkTenAnh.Text = "<span class=\"bold\">" + curData["AppName"].ToString() + "</span>"; ltrTheloai.Text = Resources.Resource.wTheLoai_KD + UnicodeUtility.UnicodeToKoDau(curData["Web_Name"].ToString()); sGioiThieu = curData["Description"].ToString(); if (sGioiThieu.Length > 120) { sGioiThieu = sGioiThieu.Substring(0, sGioiThieu.LastIndexOf(" ", 110)) + "..."; } ltrLuottai.Text = Resources.Resource.wGioiThieu_KD + sGioiThieu; lnkTai.Text = "<span class=\"orange bold\">" + Resources.Resource.wTai_KD + "</span>"; lnkTang.Text = "<span class=\"orange bold\">" + Resources.Resource.wTang_KD + "</span>"; } lnkTang.NavigateUrl = UrlProcess.GetAppDetailUrl(lang.ToString(), "detail", width, curData["W_AppItemID"].ToString(), hotro.ToString()) + "&g=1"; if (MobileUtils.CheckValidModel(curData["ModelSupport"].ToString(), _info)) { lnkTai.NavigateUrl = UrlProcess.GetAppDownloadUrl(lang.ToString(), width, curData["W_AppItemID"].ToString(), hotro.ToString()); //lnkTai.NavigateUrl = "../Download.aspx?id=" + curData["W_AppItemID"].ToString() + "&lang=" + lang + "&w=" + width; } else { lnkTai.NavigateUrl = ""; if (lang == 1) { lnkTai.Text = Resources.Resource.wKhongHoTro; } else { lnkTai.Text = Resources.Resource.wKhongHoTro_KD; } } lnkAvatar.NavigateUrl = lnkTenAnh.NavigateUrl = UrlProcess.GetAppDetailUrl(lang.ToString(), "detail", width, curData["W_AppItemID"].ToString(), hotro.ToString()); WapXzone_VNM.CreateAvatar.MOReceiver ws = new WapXzone_VNM.CreateAvatar.MOReceiver(); ws.GenerateAvatarThumnail(curData["Avatar"].ToString(), 60, 70); imgAvatar.ImageUrl = preurl + MultimediaUtility.GetAvatarThumnail(curData["Avatar"].ToString(), 60, 70).Replace("~", ""); //imgAvatar.ImageUrl = preurl + curData["Avatar"].ToString().Replace("~", ""); }
public static string BuildNewQuangCao(List <NewsInfo> list) { #if !DEBUG var oData = CacheController.GetListNews(list[0].pk_Id); if (oData != null) { return(oData.ToString()); } #endif var sb = new StringBuilder(); for (int i = 0; i < list.Count; i++) { NewsInfo entity = list[i]; sb.Append("<div class=\"box_tingannhat\">"); sb.AppendFormat("<img src=\"{0}\" width=\"68\" alt=\"{1}\" title=\"\"/>", UntilityFunction.GetPathImgThumb(entity.s_Image), entity.s_Title); sb.AppendFormat("<a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a>", entity.pk_Id, UnicodeUtility.UrlRewriting(entity.s_Title), entity.s_Title); sb.Append("</div>"); } string s = sb.ToString(); #if !DEBUG CacheController.GetListNews(list[0].pk_Id, s); #endif return(s); }
public virtual unsafe int FindFirstCharacterToEncodeUtf8(ReadOnlySpan <byte> utf8Text) { // Loop through the input text, terminating when we see ill-formed UTF-8 or when we decode a scalar value // that must be encoded. If we see either of these things then we'll return its index in the original // input sequence. If we consume the entire text without seeing either of these, return -1 to indicate // that the text can be copied as-is without escaping. fixed(byte *ptr = utf8Text) { int idx = 0; #if NETCOREAPP if (Sse2.IsSupported) { sbyte *startingAddress = (sbyte *)ptr; while (utf8Text.Length - 16 >= idx) { Debug.Assert(startingAddress >= ptr && startingAddress <= (ptr + utf8Text.Length - 16)); // Load the next 16 bytes. Vector128 <sbyte> sourceValue = Sse2.LoadVector128(startingAddress); Vector128 <sbyte> mask = Sse2Helper.CreateAsciiMask(sourceValue); int index = Sse2.MoveMask(mask); if (index != 0) { // At least one of the following 16 bytes is non-ASCII. int processNextSixteen = idx + 16; Debug.Assert(processNextSixteen <= utf8Text.Length); while (idx < processNextSixteen) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx]) == 1) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } } else { if (DoesAsciiNeedEncoding(ptr[idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1) { goto Return; } idx++; } startingAddress = (sbyte *)ptr + idx; } // Process the remaining bytes. Debug.Assert(utf8Text.Length - idx < 16); } #endif while (idx < utf8Text.Length) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx]) == 1) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } idx = -1; // All bytes are allowed. Return: return(idx); } }
protected void HienThiNoiDung(Boolean thuchien, Boolean log) { pnlNoiDung.Visible = true; gameid = Request.QueryString["id"];//ThethaoController.GetSport_GameDetailBySportID(ConvertUtility.ToInt32(Request.QueryString["id"])).Rows[0]["PK_Game_ID"].ToString(); DataTable ykcg = ThethaoController.GetDetail_YKCG_ByGameID(gameid); string chitietGiaodich = string.Empty; if (thuchien) { if (lang == "1") { ltrTieuDe.Text = linkStr; lblTen.Text = "Thống kê"; } else { ltrTieuDe.Text = linkStr_KD; lblTen.Text = "Thong ke"; }; if (ykcg.Rows.Count > 0) { chitietGiaodich = "Thong ke: " + ykcg.Rows[0]["Team_Name1"].ToString() + " - " + ykcg.Rows[0]["Team_Name2"].ToString() + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); if (lang == "1") { ltrNoiDung.Text = ykcg.Rows[0]["Ideal_Content"].ToString(); } else { ltrNoiDung.Text = UnicodeUtility.UnicodeToKoDau(ykcg.Rows[0]["Ideal_Content"].ToString()); } } chitietGiaodich = chitietGiaodich + "\r\n" + ltrNoiDung.Text; if (log) { Transaction.Success(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 6); } } else { chitietGiaodich = "Thong ke: " + gameid + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); //Thông báo lỗi thanh toán if (lang == "1") { ltrTieuDe.Text = linkStr + " » " + Resources.Resource.wThongBao; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan; } else { ltrTieuDe.Text = linkStr_KD + " » " + Resources.Resource.wThongBao_KD; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan_KD; } if (log) { Transaction.Failure(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 6, messageReturn); } //--Thông báo lỗi thanh toán } if (log) { //log charging ILog logger = log4net.LogManager.GetLogger(Session["telco"].ToString()); logger.Debug("--------------------------------------------------"); logger.Debug("MSISDN: " + Session["msisdn"].ToString()); logger.Debug("Dich vu: Thong ke " + gameid); logger.Debug("Chi tiet: " + chitietGiaodich); logger.Debug("IP: " + HttpContext.Current.Request.UserHostAddress); logger.Debug("Error: " + messageReturn); logger.Debug("Current Url: " + Request.RawUrl); //end log } }
protected void Page_Load(object sender, EventArgs e) { width = Request.QueryString["w"]; tab = Request.QueryString["tab"]; tvprice = ConfigurationSettings.AppSettings.Get("tipprice"); tkprice = ConfigurationSettings.AppSettings.Get("ykcgprice"); kqcprice = ConfigurationSettings.AppSettings.Get("kqchoprice"); if (!IsPostBack) { catid = ConvertUtility.ToInt32(Request.QueryString["catid"]); lang = ConvertUtility.ToInt32(Request.QueryString["lang"]); DataSet ds = ThethaoController.GetAll_CompetitionRelationInfo(catid); if (lang == 1) { lnkLichthidau.Text = "LỊCH THI ĐẤU"; lnkTheThao.Text = "BÓNG ĐÁ"; if (ds.Tables[0].Rows.Count > 0) { lblCompetitonName.Text = ds.Tables[0].Rows[0]["NameUnicode"].ToString(); } if (ds.Tables.Count > 3 && ds.Tables[3].Rows.Count > 0) { if (ConvertUtility.ToString(ds.Tables[3].Rows[0]["Name"].ToString()) != "") { ltrRoundName.Text = " - " + ds.Tables[3].Rows[0]["Name"].ToString(); } } //ltrGia.Text = "(" + Resources.Resource.wThongBaoGia + "Tư vấn " + ConfigurationSettings.AppSettings.Get("tipprice") + Resources.Resource.wDonViTien + ", Thống kê " + ConfigurationSettings.AppSettings.Get("ykcgprice") + Resources.Resource.wDonViTien + ", KQ chờ " + ConfigurationSettings.AppSettings.Get("kqchoprice") + Resources.Resource.wDonViTien + ")"; } else { lnkLichthidau.Text = "LICH THI DAU"; lnkTheThao.Text = "BONG DA"; if (ds.Tables[0].Rows.Count > 0) { lblCompetitonName.Text = ds.Tables[0].Rows[0]["Name"].ToString(); } if (ds.Tables.Count > 3 && ds.Tables[3].Rows.Count > 0) { if (ConvertUtility.ToString(ds.Tables[3].Rows[0]["Name"].ToString()) != "") { ltrRoundName.Text = " - " + UnicodeUtility.UnicodeToKoDau(ds.Tables[3].Rows[0]["Name"].ToString()); } //ltrRoundName.Text = " - " + UnicodeUtility.UnicodeToKoDau(ds.Tables[3].Rows[0]["Name"].ToString()); } //ltrGia.Text = "(" + Resources.Resource.wThongBaoGia_KD + "Tu van " + ConfigurationSettings.AppSettings.Get("tipprice") + Resources.Resource.wDonViTien_KD + ", Thong ke " + ConfigurationSettings.AppSettings.Get("ykcgprice") + Resources.Resource.wDonViTien_KD + ", KQ cho " + ConfigurationSettings.AppSettings.Get("kqchoprice") + Resources.Resource.wDonViTien_KD + ")"; } lnkTheThao.NavigateUrl = UrlProcess.GetSportHomeUrl(lang.ToString(), "home", width); //Get ra danh sach tran dau if (!string.IsNullOrEmpty(Request.QueryString["cpage"])) { curpage = ConvertUtility.ToInt32(Request.QueryString["cpage"]); } int totalrecord = 0; DataTable dtlst = ThethaoController.GetAllGameByCompetitionID_LTD(catid, pagesize, curpage, out totalrecord); rptLichThiDau.DataSource = dtlst; rptLichThiDau.ItemDataBound += new RepeaterItemEventHandler(rptlist_ItemDataBound);; rptLichThiDau.DataBind(); Paging1.totalrecord = totalrecord; Paging1.pagesize = pagesize; Paging1.numberpage = pagenumber; Paging1.defaultparam = "?lang=" + Request.QueryString["lang"] + "&display=" + Request.QueryString["display"] + "&w=" + Request.QueryString["w"] + "&catid=" + Request.QueryString["catid"]; Paging1.queryparam = "?lang=" + Request.QueryString["lang"] + "&display=" + Request.QueryString["display"] + "&w=" + Request.QueryString["w"] + "&catid=" + Request.QueryString["catid"] + "&cpage="; } }
protected void Page_Load(object sender, EventArgs e) { preurl = ConfigurationSettings.AppSettings.Get("urldata"); width = Request.QueryString["w"]; hotro = ConvertUtility.ToInt32(Request.QueryString["hotro"]).ToString(); lang = ConvertUtility.ToInt32(Request.QueryString["lang"]); id = ConvertUtility.ToInt32(Request.QueryString["id"]); if (!IsPostBack) { _info = Get_User_Agent_Info(); //Detail DataTable dtDetail = PhanmemController.GetAPPDetailByIDHasCache(Session["telco"].ToString(), id); //end detail if (dtDetail.Rows.Count > 0) { price = ConfigurationSettings.AppSettings.Get("Appprice"); if (dtDetail.Rows[0]["Web_Name"].ToString() == "Vmg_zone") { price = "1000"; } lnkCateChannel.NavigateUrl = UrlProcess.GetAppCategoryUrlNew(lang.ToString(), width, dtDetail.Rows[0]["W_AppCategoryID"].ToString(), hotro); lnkHomeChannel.NavigateUrl = UrlProcess.GetAppHomeUrlNew(lang.ToString(), width, hotro); if (lang == 1) { lnkHomeChannel.Text = "PHẦN MỀM"; lnkCateChannel.Text = dtDetail.Rows[0]["Title_Unicode"].ToString().ToUpper(); ltrTenAnh.Text = dtDetail.Rows[0]["AppNameUnicode"].ToString(); ltrNhom.Text = Resources.Resource.wTheLoai + dtDetail.Rows[0]["Web_Name"]; ltrGiaTai.Text = Resources.Resource.wGiaTai + price + Resources.Resource.wDonViTien; ltrGioiThieu.Text = Resources.Resource.wGioiThieu + dtDetail.Rows[0]["DescriptionUnicode"]; lnkTai.Text = Resources.Resource.wTaiVe; ltrCungTheLoai.Text = Resources.Resource.pmPhanMemCungTheLoai; } else { lnkCateChannel.Text = dtDetail.Rows[0]["Title"].ToString().ToUpper(); ltrTenAnh.Text = dtDetail.Rows[0]["AppName"].ToString(); ltrNhom.Text = Resources.Resource.wTheLoai_KD + UnicodeUtility.UnicodeToKoDau(dtDetail.Rows[0]["Web_Name"].ToString()); ltrGiaTai.Text = Resources.Resource.wGiaTai_KD + price + Resources.Resource.wDonViTien_KD; ltrGioiThieu.Text = Resources.Resource.wGioiThieu_KD + dtDetail.Rows[0]["Description"]; lnkTai.Text = Resources.Resource.wTaiVe_KD; ltrCungTheLoai.Text = Resources.Resource.pmPhanMemCungTheLoai_KD; } if (MobileUtils.CheckValidModel(dtDetail.Rows[0]["ModelSupport"].ToString(), _info)) { lnkTai.NavigateUrl = UrlProcess.GetAppDownloadUrlNew(lang.ToString(), width, dtDetail.Rows[0]["W_AppItemID"].ToString(), hotro); } else { lnkTai.Visible = false; } WapXzone_VNM.CreateAvatar.MOReceiver ws = new WapXzone_VNM.CreateAvatar.MOReceiver(); ws.GenerateAvatarThumnail(dtDetail.Rows[0]["Avatar"].ToString(), 120, 141); imgDetail.ImageUrl = preurl + MultimediaUtility.GetAvatarThumnail(dtDetail.Rows[0]["Avatar"].ToString(), 120, 141).Replace("~", ""); //Other if (!string.IsNullOrEmpty(Request.QueryString["tpage"])) { tpage = ConvertUtility.ToInt32(Request.QueryString["tpage"]); } int totaltopdownload = 0; DataTable dtltopdownload = PhanmemController.GetAllAppByCategoryAndDisplayTypeHasCache(Session["telco"].ToString(), ConvertUtility.ToInt32(dtDetail.Rows[0]["W_AppCategoryID"]), 0, pagesize, tpage, out totaltopdownload); rptCungTheLoai.DataSource = dtltopdownload; rptCungTheLoai.ItemDataBound += rptCungTheLoai_ItemDataBound; rptCungTheLoai.DataBind(); Paging1.totalrecord = totaltopdownload; Paging1.pagesize = pagesize; Paging1.numberpage = pagenumber; Paging1.defaultparam = "?lang=" + Request.QueryString["lang"] + "&display=" + Request.QueryString["display"] + "&w=" + Request.QueryString["w"] + "&id=" + Request.QueryString["id"]; Paging1.queryparam = "?lang=" + Request.QueryString["lang"] + "&display=" + Request.QueryString["display"] + "&w=" + Request.QueryString["w"] + "&id=" + Request.QueryString["id"] + "&tpage="; } } }
public override unsafe int FindFirstCharacterToEncodeUtf8(ReadOnlySpan <byte> utf8Text) { fixed(byte *ptr = utf8Text) { int idx = 0; #if NETCOREAPP if (Sse2.IsSupported || AdvSimd.Arm64.IsSupported) { sbyte *startingAddress = (sbyte *)ptr; while (utf8Text.Length - 16 >= idx) { Debug.Assert(startingAddress >= ptr && startingAddress <= (ptr + utf8Text.Length - 16)); bool containsNonAsciiBytes; // Load the next 16 bytes, and check for ASCII text. // Any byte that's not in the ASCII range will already be negative when casted to signed byte. if (Sse2.IsSupported) { Vector128 <sbyte> sourceValue = Sse2.LoadVector128(startingAddress); containsNonAsciiBytes = Sse2Helper.ContainsNonAsciiByte(sourceValue); } else if (AdvSimd.Arm64.IsSupported) { Vector128 <sbyte> sourceValue = AdvSimd.LoadVector128(startingAddress); containsNonAsciiBytes = AdvSimdHelper.ContainsNonAsciiByte(sourceValue); } else { throw new PlatformNotSupportedException(); } if (containsNonAsciiBytes) { // At least one of the following 16 bytes is non-ASCII. int processNextSixteen = idx + 16; Debug.Assert(processNextSixteen <= utf8Text.Length); while (idx < processNextSixteen) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx]) == 1) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } } else { if (DoesAsciiNeedEncoding(ptr[idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1 || DoesAsciiNeedEncoding(ptr[++idx]) == 1) { goto Return; } idx++; } startingAddress = (sbyte *)ptr + idx; } // Process the remaining bytes. Debug.Assert(utf8Text.Length - idx < 16); } #endif while (idx < utf8Text.Length) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx]) == 1) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } Debug.Assert(idx == utf8Text.Length); idx = -1; // All bytes are allowed. Return: return(idx); } }
protected void HienThiNoiDung(Boolean thuchien, Boolean isLog) { pnlNoiDung.Visible = true; gameid = Request.QueryString["id"];//ThethaoController.GetSport_GameDetailBySportID(ConvertUtility.ToInt32(Request.QueryString["id"])).Rows[0]["PK_Game_ID"].ToString(); DataTable sportinfo = ThethaoController.GetSport_GameDetailByID(gameid); //string chitietGiaodich = "Ket qua cho tran dau: " + sportinfo.Rows[0]["Team_Name1"].ToString() + " - " + sportinfo.Rows[0]["Team_Name2"].ToString() + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); string chitietGiaodich = "Ket qua cho tran dau: " + sportinfo.Rows[0]["Team_Name1"] + " - " + sportinfo.Rows[0]["Team_Name2"]; if (thuchien) { //insertMT string smscontent = "Bạn đã đăng ký thành công dịch vụ Kết quả chờ trận đấu " + sportinfo.Rows[0]["Team_Name1"].ToString() + " - " + sportinfo.Rows[0]["Team_Name2"].ToString() + ". Cảm ơn bạn đã sử dụng dịch vụ."; mt = new MTInfo(); mt.User_ID = Session["msisdn"].ToString(); mt.Message = UnicodeUtility.UnicodeToKoDau(smscontent); mt.Service_ID = ConfigurationSettings.AppSettings.Get("kqchocommandcode"); mt.Command_Code = ConfigurationSettings.AppSettings.Get("kqchocode"); mt.Message_Type = (int)Constant.MessageType.FREE; Random random = new Random(); mt.Request_ID = random.Next(100000000, 999999999).ToString(); mt.Total_Message = 1; mt.Message_Index = 0; mt.IsMore = 0; mt.Content_Type = 0; mt.ServiceType = 4;//servicetype of kq cho; MTController.SmsMtInsert(mt); //insert mt waitting mtwaitting = new MTWaittingInfo(); mtwaitting.User_ID = Session["msisdn"].ToString(); mtwaitting.Message = ""; mtwaitting.Service_ID = ConfigurationSettings.AppSettings.Get("kqchocommandcode"); mtwaitting.Command_Code = ConfigurationSettings.AppSettings.Get("kqchocode"); mtwaitting.Message_Type = (int)Constant.MessageType.FREE; mtwaitting.Request_ID = random.Next(100000000, 999999999).ToString(); mtwaitting.Total_Message = 10; mtwaitting.Message_Index = 1; mtwaitting.IsMore = 0; mtwaitting.Content_Type = 0; mtwaitting.ServiceType = 4;//dv ket qua cho mtwaitting.UniqueId = gameid; mtwaitting.ExpiredDate = DateTime.Now.AddDays(10); mtwaitting.PartnerID = string.Empty; mtwaitting.Operator = AppEnv.CheckFreeContentMsisdn(); MTController.SMS_MTWaittingInsert(mtwaitting); //insert wap transaction // if (lang == "1") { ltrTieuDe.Text = "BÓNG ĐÁ"; lblTen.Text = "Kết quả chờ trận đấu"; ltrNoiDung.Text = smscontent; } else { ltrTieuDe.Text = "BONG DA"; lblTen.Text = "Ket qua cho tran dau"; ltrNoiDung.Text = UnicodeUtility.UnicodeToKoDau(smscontent); } if (isLog) { Transaction.Success(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 8); } } else { //Thông báo lỗi thanh toán if (lang == "1") { ltrTieuDe.Text = Resources.Resource.wThongBao; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan; } else { ltrTieuDe.Text = Resources.Resource.wThongBao_KD; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan_KD; } if (isLog) { Transaction.Failure(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 8, messageReturn); } //--Thông báo lỗi thanh toán } if (isLog) { //log charging ILog logger = log4net.LogManager.GetLogger(Session["telco"].ToString()); logger.Debug("--------------------------------------------------"); logger.Debug("MSISDN: " + Session["msisdn"].ToString()); logger.Debug("Dich vu: Ket qua cho (truc tiep) " + gameid); logger.Debug("Chi tiet: " + chitietGiaodich); logger.Debug("IP: " + HttpContext.Current.Request.UserHostAddress); logger.Debug("Error: " + messageReturn); logger.Debug("Current Url: " + Request.RawUrl); //end log } }
protected void Page_Load(object sender, EventArgs e) { string partnerid = string.Empty; try { DesSecurity des = new DesSecurity(); string token = des.Des3Decrypt(Request.QueryString["c"], AppEnv.GetSetting("msisdnkey")); logger.Debug("token =" + token); logger.Debug("c =" + Request.QueryString["c"]); DataTable dtTrans = DBController.Transaction_Online_GetByToken(token); if (dtTrans != null && dtTrans.Rows.Count > 0) { //logger.Debug("dtTrans.Rows.Count =" + dtTrans.Rows.Count); int status = 1; string debit_status = string.Empty; string strType = Constant.pmContentTypeVNM[ConvertUtility.ToInt32(dtTrans.Rows[0]["ItemType"])]; partnerid = dtTrans.Rows[0]["PartnerID"].ToString(); WapXzone_VNM.Library.VNMCharging.VNMChargingGW charging = new WapXzone_VNM.Library.VNMCharging.VNMChargingGW(); string productId = string.Empty; string productKey = string.Empty; string price = dtTrans.Rows[0]["Price"].ToString(); if (strType == "TEXT") { if (price == "1000") { productId = "RELAXSTORYREAD"; productKey = "READ"; } else if (price == "15000") { productId = "RELAXSTORYMONTHLY"; productKey = "READ_MONTHLY"; } else if (price == "2000") { productId = "RELAXLOVER"; productKey = "LOVER"; } else if (price == "3000") { productId = "RELAXPLACE"; productKey = "PLACE"; } else if (price == "5000") { productId = "RELAXADVISESEX"; productKey = "ADVISE_SEX"; } } else if (strType == "WP") { productId = "PICDOWN"; productKey = "PIC_DOWN"; } else if (strType == "TT") { productId = "FOOTBALLSUMARY"; productKey = "FOOTBALL_SUMARY"; } else if (strType == "JG") { productId = "GAMEDOWN"; productKey = "GAME_DOWN"; } else if (strType == "APP") { productId = "APPDOWN"; productKey = "APP_DOWN"; } else if (strType == "VID") { productId = "VIDEODOWN"; productKey = "VIDEO_DOWN"; } else if (strType == "YKCG") { productId = "FOOTBALLADVISE"; productKey = "FOOTBALL_ADVISE"; } else if (strType == "TIP") { productId = "FOOTBALLADVISE"; productKey = "FOOTBALL_ADVISE"; } else if (strType == "KQCHO") { productId = "FOOTBALLRESULT"; productKey = "FOOTBALL_RESULT"; } else if (strType == "KQXS") { productId = "LOTOLASTRESULT"; productKey = "LAST_RESULT"; } else if (strType == "SOICAU") { productId = "LOTOSOICAU"; productKey = "SOICAU"; } else if (strType == "XSKQCHO") { productId = "LOTORESULT"; productKey = "RESULT"; } else if (strType == "XOSO20") { productId = "LOTORESULTMONTHLY"; productKey = "RESULTMONTHLY"; } else if (strType == "RELAX") { productId = "RELAXSTORYREAD"; productKey = "READ"; } else if (strType == "GAME87") { productId = "FOOTBALLADVISE"; productKey = "FOOTBALL_RESULT"; } else if (strType == "Tu vi") { productId = "HOROSCOPE"; productKey = "HOROSCOPE"; } debit_status = charging.NavigatePaymentVnm(dtTrans.Rows[0]["msisdn"].ToString(), productId, productKey, price, "D", strType, UnicodeUtility.RemoveSpecialCharacter(UnicodeUtility.UnicodeToKoDau(dtTrans.Rows[0]["ItemDetail"].ToString()))); //debit_status = charging.PaymentVNM(dtTrans.Rows[0]["msisdn"].ToString(),productId,productKey); if (!string.IsNullOrEmpty(debit_status) && debit_status == "1") { // Thanh toán thành công >> trả nội dung status = 0; } //logger.Debug("debit_status =" + debit_status); //Tạo Transaction_Online mới string vTransactionID = DBController.Transaction_Online_Insert(dtTrans.Rows[0]["msisdn"].ToString(), 4, ConvertUtility.ToInt32(partnerid), "", ""); //Ghi Transaction, Transaction_Log, xoá Transaction_Online cũ DBController.Transaction_Insert_New(dtTrans.Rows[0]["ItemID"].ToString(), dtTrans.Rows[0]["ItemDetail"].ToString(), ConvertUtility.ToInt32(dtTrans.Rows[0]["ItemType"]), dtTrans.Rows[0]["msisdn"].ToString(), 4, 0, ConvertUtility.ToInt32(dtTrans.Rows[0]["Price"]), ConvertUtility.ToInt32(partnerid), ConvertUtility.ToDecimal(dtTrans.Rows[0]["TransactionID"]), ConvertUtility.ToDateTime(dtTrans.Rows[0]["Created"]), "debit_status: " + debit_status, status); WapController.Transaction_Online_Delete(dtTrans.Rows[0]["msisdn"].ToString()); //Trả kết quả qua URL if (status == 0) { if (AppEnv.GetSetting("ExceptPartner").IndexOf("|" + ConvertUtility.ToString(dtTrans.Rows[0]["PartnerID"]) + "|") > -1) { logger.Debug("http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "?&p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString())); Response.Redirect(@"http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "?&p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString()), false); //HttpContext.Current.ApplicationInstance.CompleteRequest(); return; } else { logger.Debug("http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "?p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString())); if (dtTrans.Rows[0]["CallBackUrl"].ToString().IndexOf("?") > -1) { Response.Redirect(@"http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "&p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString()), false); } else { Response.Redirect(@"http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "?p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString()), false); } //HttpContext.Current.ApplicationInstance.CompleteRequest(); return; } } else { if (dtTrans.Rows[0]["CallBackUrl"].ToString().IndexOf("?") > -1) { Response.Redirect("http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "&p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|-1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString()), false); } else { Response.Redirect("http://" + dtTrans.Rows[0]["Domain"].ToString() + dtTrans.Rows[0]["CallBackUrl"].ToString() + "?p=" + des.Des3Encrypt(dtTrans.Rows[0]["msisdn"].ToString() + "|-1|" + vTransactionID + "|" + dtTrans.Rows[0]["TransactionID"].ToString(), dtTrans.Rows[0]["KeyCode"].ToString()), false); } } } else { Response.Redirect("http://payment.xzone.vn/e.aspx", false); } } catch (Exception ex) { logger.Debug("Exception=" + ex.ToString()); Response.Redirect("http://payment.xzone.vn/e.aspx", false); //Response.Write(ex.ToString()); //Response.Redirect("http://payment.xzone.vn/sc.aspx?pid=" + partnerid); } }
public static string BuildAudioBookDetailLink(int portalId, int tabId, int catId, object id, object title) { return(string.Format("/{0}/{1}/{2}/{3}/{4}/{5}/{6}", "Song", portalId, tabId, catId, 1, id, UnicodeUtility.ToPlainText(title))); }
public static string BuildNewNoiBat(NewsInfo entity) { #if !DEBUG var oData = CacheController.GetNews(entity.pk_Id); if (oData != null) { return(oData.ToString()); } #endif var sb = new StringBuilder(); sb.AppendFormat("<img class=\"anhnoibat\" width=\"320\" src=\"{0}\" alt=\"\" title=\"{1}\"/>", UntilityFunction.GetPathImg(entity.s_Image), entity.s_Title); sb.AppendFormat("<a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a>", entity.pk_Id, UnicodeUtility.UrlRewriting(entity.s_Title), entity.s_Title); sb.AppendFormat("<strong>{0}</strong>", entity.s_Description); //sb.AppendFormat("<td><a href=\"{0}\"><img border=\"0\" src=\"{1}\"></a></td>", o.s_Homepage, o.s_Logo); string s = sb.ToString(); #if !DEBUG CacheController.GetNews(entity.pk_Id, s); #endif return(s); }
protected void rptlist_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemIndex < 0) { return; } DataRowView curData = (DataRowView)e.Item.DataItem; Label ltrGame = (Label)e.Item.FindControl("ltrGame"); Literal ltrTime = (Literal)e.Item.FindControl("ltrTime"); HyperLink lnkTuVan = (HyperLink)e.Item.FindControl("lnkTuVan"); HyperLink lnkThongke = (HyperLink)e.Item.FindControl("lnkThongke"); HyperLink lnkKQCho = (HyperLink)e.Item.FindControl("lnkKQCho"); if (lang == 1) { ltrGame.Text = "<span class=\"bold\">" + curData["Team_Name1"].ToString() + " ? - ? " + curData["Team_Name2"].ToString() + "</span>"; lnkTuVan.Text = "Tư vấn"; lnkThongke.Text = "Thống kê"; lnkKQCho.Text = "<span class=\"blue bold\">KQ chờ</span>"; } else { ltrGame.Text = "<span class=\"bold\">" + UnicodeUtility.UnicodeToKoDau(curData["Team_Name1"].ToString()) + " ? - ? " + UnicodeUtility.UnicodeToKoDau(curData["Team_Name2"].ToString()) + "</span>"; lnkTuVan.Text = "Tu van"; lnkThongke.Text = "Thong ke"; lnkKQCho.Text = "<span class=\"blue bold\">KQ cho</span>"; } if (ThethaoController.GetDetail_YKCG_ByGameID(curData["PK_Game_ID"].ToString()).Rows.Count > 0) { lnkThongke.Text = "<span class=\"blue bold\">" + lnkThongke.Text + "</span>"; lnkThongke.NavigateUrl = "../ThongKe.aspx?id=" + curData["Sport_Id"].ToString() + "&lang=" + lang + "&w=" + width; } else { lnkThongke.Text = "<span class=\"gray bold\">" + lnkThongke.Text + "</span>"; lnkThongke.Enabled = false; } DataTable tip = ThethaoController.GetDetail_Tip_ByGameID(curData["PK_Game_ID"].ToString()); if (tip.Rows.Count > 0) { lnkTuVan.Text = "<span class=\"blue bold\">" + lnkTuVan.Text + "</span>"; lnkTuVan.NavigateUrl = "../TuVan.aspx?id=" + curData["Sport_Id"].ToString() + "&lang=" + lang + "&w=" + width; } else { lnkTuVan.Text = "<span class=\"gray bold\">" + lnkTuVan.Text + "</span>"; lnkTuVan.Enabled = false; } lnkKQCho.NavigateUrl = "../KQCho.aspx?id=" + curData["Sport_Id"].ToString() + "&lang=" + lang + "&w=" + width; ltrTime.Text = ConvertUtility.ToDateTime(curData["StartTime"]).ToString("dd/MM/yyyy HH:mm"); }
public static string BuildNewTop(List <NewsInfo> list) { #if !DEBUG var oData = CacheController.GetListNews(list[0].pk_Id); if (oData != null) { return(oData.ToString()); } #endif var oData = CacheController.GetListNews(list[0].pk_Id); if (oData != null) { return(oData.ToString()); } var sb = new StringBuilder(); sb.AppendFormat("<img class=\"anhnoibat\" src=\"{0}\" width=\"95\" alt=\"{1}\" title=\"\"/>", UntilityFunction.GetPathImgThumb(list[0].s_Image), list[0].s_Title); sb.AppendFormat("<a class=\"tieude\" href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a>", list[0].pk_Id, UnicodeUtility.UrlRewriting(list[0].s_Title), list[0].s_Title); sb.AppendFormat("<p>{0}</p>", list[0].s_Description); sb.Append("<div class=\"clear\"></div><ul>"); for (int i = 1; i < list.Count; i++) { NewsInfo entity = list[i]; sb.AppendFormat("<li><a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a></li>", entity.pk_Id, UnicodeUtility.UrlRewriting(entity.s_Title), entity.s_Title); } sb.Append("</ul>"); //sb.AppendFormat("<td><a href=\"{0}\"><img border=\"0\" src=\"{1}\"></a></td>", o.s_Homepage, o.s_Logo); string s = sb.ToString(); #if !DEBUG CacheController.GetListNews(list[0].pk_Id, s); #endif return(s); }
//private static void GetTopNews(string html, FilterFullInfo record) //{ // try // { // long totalSize = 0; // //string p = "<div class="folder-top">.*?<a.*?href="(?<Link>.*?)".*?><img.*?src="(?<ImagePath>.*?)".*?/></a>.*?<p><a.*?href=".*?".*?class="link-topnews">(?<Title>.*?)</a>.*?<label class="item-time">(?<Time>.*?)</label>.*?<label class="item-date">(?<Date>.*?)</label></p>.*?<p>(?<Teaser>.*?)</p>.*?</div>"; // MatchCollection mcList = Regex.Matches(html, record.ParternGetTopNews, RegexOptions.IgnoreCase | RegexOptions.Singleline); // } // catch (Exception ex) // { // _logger.Info(string.Format("Error = {0}", ex.Message) + Environment.NewLine); // } //} //Tra ve 1 mang chua cac link va image thumb private static string StartMining(Record record) { string url = record.Source; long totalSize = 0; string html = RunBrowser(record.Source, out totalSize); if (record.ListStartAfter.IndexOf("*[@") > 0) { HtmlDocument docList = new HtmlDocument(); docList.LoadHtml(html); HtmlNode nodes = docList.DocumentNode.SelectSingleNode(record.ListStartAfter); if (nodes != null) { html = nodes.InnerHtml; } else { html = ""; } } else { if (html.IndexOf(record.ListStartAfter.Replace(".*", "")) > 0) { html = Regex.Match(html, record.ListStartAfter, RegexOptions.IgnoreCase | RegexOptions.Singleline).Value; // Remove doan duoi html = Regex.Replace(html, record.ListEndAt, "", RegexOptions.Singleline); } else { html = ""; } } if (html != "") { html = html.Replace("\r\n", "").Replace("> <", "><"); HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(html); HtmlNodeCollection nodes = doc1.DocumentNode.SelectNodes("//li"); if (nodes != null) { foreach (HtmlNode itemList in nodes) { HtmlNode nodesImage = itemList.SelectSingleNode("//*[@class=\"box-wiget-content-img\"]/a"); string imgAvatar = nodesImage.InnerHtml; HtmlNode nodesTitle = itemList.SelectSingleNode("//*[@class=\"box-wiget-content-title fsize14\"]/a"); string title = nodesTitle.InnerHtml; HtmlNode nodesTeaser = itemList.SelectSingleNode("//*[@class=\"box-wiget-content-des\"]/span"); string Teaser = nodesTeaser.InnerHtml; HtmlNode nodesLink = itemList.SelectSingleNode("//*[@class=\"box-wiget-content-img\"]/a[@href]"); HtmlAttribute linkAtt = nodesLink.Attributes["href"]; string link = linkAtt.Value; HtmlNode nodesPubDate = itemList.SelectSingleNode("//*[@class=\"box-wiget-content-timpost\"]"); string pubDate = nodesPubDate.InnerHtml; //MatchCollection mcList = Regex.Matches(html, record.ParternList, RegexOptions.IgnoreCase | RegexOptions.Singleline); var list = new List <ObjectLink>(); var listImage = new List <ObjectImage>(); int i = 0; //if (mcList != null && mcList.Count > 0) //{ // _logger.Debug("Matchs : " + mcList.Count.ToString()); //foreach (Match match in mcList) //{ #region Get main content var contentInfo = new ContentInfo(); contentInfo.Content_Headline = AppEnv.NCRToUnicode(Regex.Replace(title, "<.*?>", "", RegexOptions.IgnoreCase | RegexOptions.Singleline)); // AppEnv.NCRToUnicode(Regex.Replace(match.Groups["Title"].Value, "<.*?>", "", RegexOptions.IgnoreCase | RegexOptions.Singleline)); contentInfo.Content_Url = link; // OptimiseUrl(match.Groups["Link"].Value, record); try { Uri uri = new Uri(contentInfo.Content_Url); Uri uri1 = new Uri(record.Source); if (uri.Host != uri1.Host) { continue; } } catch (Exception) { continue; } long totalSizeTemp = 0; string contentDetail = GetContentDetail(contentInfo.Content_Url, record, out totalSizeTemp); if (contentDetail.Trim() == "") { continue; } contentInfo.Content_Teaser = StripTagsRegex(Teaser); // StripTagsRegex(match.Groups["Teaser"].Value); if (contentInfo.Content_Teaser.Trim() == "") { continue; } contentInfo.Content_Body = GetContentBody(contentDetail, record); if (contentInfo.Content_Body.Trim() == "") { continue; } string date = ""; date = pubDate;// match.Groups["PubDate"].Value; if (date == "") { if (record.PatternPubDate != "") { date = GetPubDateByParttern(contentDetail, record); } else { date = GetPubDate(contentInfo.Content_Body, record); } } contentInfo.Content_CreateDate = OpitmisePubDate(date); contentInfo.Content_Status = 1; contentInfo.CategoryID = record.CategoryID; contentInfo.Content_UserID = 212; contentInfo.Content_HeadlineKD = UnicodeUtility.UnicodeToKoDau(contentInfo.Content_Headline); contentInfo.Content_TeaserKD = UnicodeUtility.UnicodeToKoDau(contentInfo.Content_Teaser); contentInfo.Content_Source = record.Page; string imagePath = imgAvatar;// match.Groups["ImagePath"].Value.Trim(); if (imagePath.IndexOf("src=\"") > -1) { imagePath = imagePath.Substring(imagePath.IndexOf("src=\"") + 5); imagePath = imagePath.Substring(0, imagePath.IndexOf("\"")); } if (imagePath.IndexOf("src='") > -1) { imagePath = imagePath.Substring(imagePath.IndexOf("src='") + 5); imagePath = imagePath.Substring(0, imagePath.IndexOf("'")); } string imageDownloadUrl = ""; string imageName = ""; if (Convert.ToInt32(AppEnv.GetSetting("SaveImage")) == 1) { #region lay anh dau tien trong bai chi tiet HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(contentInfo.Content_Body); HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//img"); if (node != null) { foreach (HtmlNode img in node) { HtmlAttribute att = img.Attributes["src"]; imageDownloadUrl = att.Value; string exceptionImg = AppEnv.GetSetting("exceptionImg"); string[] arr = exceptionImg.Split(','); int flag = 0; foreach (string item in arr) { if (item != "") { if (imageDownloadUrl.Contains(item)) { imageDownloadUrl = ""; flag = 1; break; } } } if (flag == 1) { continue; } else { break; } } } else { imageDownloadUrl = imagePath; } #endregion imageDownloadUrl = OptimiseUrl(imageDownloadUrl, record); imageName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".jpg"; var objectImage = new ObjectImage { ImageName = imageName, Link = imageDownloadUrl }; listImage.Add(objectImage); contentInfo.Content_Avatar = AppEnv.GetSetting("virtualPath") + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/" + imageName; } else { contentInfo.Content_Avatar = record.HttpPrefix + imagePath; } contentInfo.Content_BigAvatar = ""; if (i < 6) { contentInfo.Content_Rank = 2; } else { contentInfo.Content_Rank = 1; } contentInfo.IsPublished = true; try { DateTime dt = Convert.ToDateTime(contentInfo.Content_CreateDate); if (dt.Year == DateTime.Now.Year && dt.Month == DateTime.Now.Month && dt.Day < DateTime.Now.Day) { continue; } else { if (dt.Year < DateTime.Now.Year || dt.Month < DateTime.Now.Month) { continue; } else { int returnValue = AppEnv.Insert(contentInfo); } } } catch (Exception) { try { DateTime dt = DateTime.Parse(contentInfo.Content_CreateDate, new CultureInfo("fr-FR", false)); if (dt.Year == DateTime.Now.Year && dt.Month == DateTime.Now.Month && dt.Day < DateTime.Now.Day) { continue; } else { if (dt.Year < DateTime.Now.Year || dt.Month < DateTime.Now.Month) { continue; } else { int returnValue = AppEnv.Insert(contentInfo); } } } catch (Exception) { int returnValue = AppEnv.Insert(contentInfo); } } #endregion i++; totalSize += totalSizeTemp; //} string physicalPath = AppEnv.GetSetting("phyPath") + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\"; #region Download Image if (listImage != null && listImage.Count > 0) { int totalImage = 0; foreach (ObjectImage item in listImage) { Image image = DownloadImage(item.Link); if (image != null) { if (!Directory.Exists(physicalPath)) { Directory.CreateDirectory(physicalPath); } image.Save(physicalPath + item.ImageName, ImageFormat.Jpeg); totalImage++; } } } #endregion _logger.Info(string.Format("Finished mining with source = {0}", record.Source) + Environment.NewLine); //} } return(html); } else { return(""); } } else { return(""); } }
protected void Page_Load(object sender, EventArgs e) { Session["LastPage"] = Request.RawUrl; lang = Request.QueryString["lang"]; if (!IsPostBack) { width = ConvertUtility.ToInt32(Request.QueryString["w"]); if (width == 0) { width = (int)Constant.DefaultScreen.Standard; } ltrWidth.Text = "<meta content=\"width=" + width.ToString() + "; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" name=\"viewport\" />"; // var advertisement = new Advertisement { Channel = "Home", Position = "HomeCenter", Param = 0, Lang = lang, Width = width.ToString() }; litAds.Text = advertisement.GetAds(); var advertisement1 = new Advertisement { Channel = "Home", Position = "UnderLinks", Param = 0, Lang = lang, Width = width.ToString() }; litAds1.Text = advertisement1.GetAds(); } if (string.IsNullOrEmpty(Request.QueryString["display"])) { display = "home"; } else { display = Request.QueryString["display"]; } string telCo = "Vietnamobile"; string id = Request.QueryString["id"]; Literal title = new Literal(); Literal ltrEnd = new Literal(); Literal ltrEnd1 = new Literal(); try { string wapHomeURL = "http://wap.vietnamobile.com.vn"; DataTable dtMusic = RTController.GetAllWap_RingTone_ByPackageID(ConvertUtility.ToInt32(AppEnv.GetSetting("packageId"))); title.Text = "<style type=\"text/css\">body {font-family:Verdana, Arial, Helvetica; font-size:12px;} .mainmenu {display:block;width: 100%;background-color: #de60cb;color:#fff;text-align:center;line-height:25px;} .mainmenu a{color:#fff;} a:link, a:visited {text-decoration:none;}</style>"; if (lang == "1") { title.Text += "<div style=\"background-color:#EA6A00;color:#FFFFFF;display:block;line-height:25px;width:100%;margin-top:5px;padding-left:5px;font-weight:bold;\">" + "Chào mừng bạn đến với dịch vụ nhạc chuông <b style=\"color:blue\">(Miễn Phí)</b> của Vietnamobile" + "</div>"; } else { title.Text += "<div style=\"background-color:#EA6A00;color:#FFFFFF;display:block;line-height:25px;width:100%;margin-top:5px;padding-left:5px;font-weight:bold;\">" + "Chao mung ban den voi dich vu nhac chuong <b style=\"color:blue\">(Mien Phi)</b> cua Vietnamobile" + "</div>"; } //title.Text += "<div style=\"padding-left:5px;margin:5px 0 5px 0;\">Click để tải:"; plList.Controls.Add(title); Literal ltr = new Literal(); ltr.Text = "<br />"; plList.Controls.Add(ltr); foreach (DataRow row in dtMusic.Rows) { string ringtonepath = row["Path"].ToString(); if (!string.IsNullOrEmpty(ringtonepath)) { HyperLink lnkfile = new HyperLink(); ltr = new Literal(); ltr.Text = "<img style=\"padding-left:10px\" class=\"thumblist\" alt=\"thumb\" src=\"../img/b-ring.gif\">"; if (lang == "1") { lnkfile.Text = row["SongName"].ToString(); } else { lnkfile.Text = UnicodeUtility.UnicodeToKoDau(row["SongName"].ToString()); } string ext = ringtonepath.Split('.')[ringtonepath.Split('.').Length - 1]; lnkfile.NavigateUrl = "http://media.xzone.vn/" + ringtonepath.Replace("~/", ""); lnkfile.Attributes.Add("style", "color:#006CBF;padding-left:15px;padding-top:3px;padding-bottom:3px;display:block"); lnkfile.Attributes.Add("class", "bold"); plList.Controls.Add(ltr); plList.Controls.Add(lnkfile); ltr = new Literal(); ltr.Text = "<div class=\"clearfix\"></div>"; plList.Controls.Add(ltr); } } //Khuyen mai //ltrEnd1.Text = "</div><div style=\"border-bottom: 1px solid #790083;height: 7px; margin: 5px 0 10px 0; width: 100%;\"></div>"; ltrEnd1.Text = "</div><div style=\"height: 7px; margin: 5px 0 0px 0; width: 100%;\"></div>"; ltrEnd.Text += "<div style=\"background-color: #EA6A00; color: #FFFFFF; display: block; line-height: 25px; text-align: center; width: 100%;\">"; //ltrEnd.Text += "<a style=\"color:#fff\" href=\"" + wapHomeURL + "\">Trang chủ</a> | <a style=\"color:#fff\" href=\"" + wapHomeURL + "/Game/Default.aspx?lang=1&display=home&hotro=0\">Game</a> | <a style=\"color:#fff\" href=\"" + wapHomeURL + "/Music/Default.aspx?lang=1&display=home\">Nhạc</a> | <a style=\"color:#fff\" href=\"" + wapHomeURL + "/Thethao/Default.aspx?lang=1&display=home\">Bóng đá</a></div>"; plList.Controls.Add(ltrEnd); plList.Controls.Add(ltrEnd1); } catch (Exception ex) { Response.Write(ex.ToString()); } }
protected void HienThiNoiDung(Boolean thuchien, Boolean log) { pnlNoiDung.Visible = true; gameid = ThethaoController.GetAll_Sport87DetailByGame87ID(ConvertUtility.ToInt32(Request.QueryString["id"])).Rows[0]["PK_Game87_ID"].ToString(); DataSet ds87detail = ThethaoController.GetAll_Sport87_DetailBy_PK_Game87ID(gameid); string chitietGiaodich = string.Empty; if (thuchien) { if (ds87detail.Tables[0].Rows.Count > 0) { if (lang == "1") { ltrTieuDe.Text = linkStr; lblTen.Text = ds87detail.Tables[0].Rows[0]["Name"].ToString(); ltrNoiDung.Text = ds87detail.Tables[0].Rows[0]["ContentValue"].ToString().Replace("\r\n", "<div class=\"clearfix\"></div>"); } else { ltrTieuDe.Text = linkStr_KD; lblTen.Text = UnicodeUtility.UnicodeToKoDau(ds87detail.Tables[0].Rows[0]["Name"].ToString()); ltrNoiDung.Text = UnicodeUtility.UnicodeToKoDau(ds87detail.Tables[0].Rows[0]["ContentValue"].ToString().Replace("\r\n", "<div class=\"clearfix\"></div>")); } //chitietGiaodich = "Tu van dac biet: " + ds87detail.Tables[0].Rows[0]["Name"].ToString() + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); chitietGiaodich = "Tu van dac biet: " + ds87detail.Tables[0].Rows[0]["Name"]; chitietGiaodich = chitietGiaodich + "\r\n" + ltrNoiDung.Text; if (log) { Transaction.Success(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 14);//game 87 } } } else { chitietGiaodich = "Tu van dac biet: " + gameid + " -- newtransactionid: " + ConvertUtility.ToString(Session["transactionid"]) + " -- old tranid: " + ConvertUtility.ToString(Session["transactionid_old"]); //Thông báo lỗi thanh toán if (lang == "1") { ltrTieuDe.Text = linkStr + " » " + Resources.Resource.wThongBao; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan; } else { ltrTieuDe.Text = linkStr_KD + " » " + Resources.Resource.wThongBao_KD; ltrNoiDung.Text = Resources.Resource.wThongBaoLoiThanhToan_KD; } if (log) { Transaction.Failure(Session["telco"].ToString(), Session["msisdn"].ToString(), price, Request.Url.ToString(), gameid, chitietGiaodich, 14, messageReturn); } //--Thông báo lỗi thanh toán } if (log) { //log charging ILog logger = log4net.LogManager.GetLogger(Session["telco"].ToString()); logger.Debug("--------------------------------------------------"); logger.Debug("MSISDN: " + Session["msisdn"].ToString()); logger.Debug("Dich vu: Tu van dac biet (Game87)" + gameid); logger.Debug("Chi tiet: " + chitietGiaodich); logger.Debug("IP: " + HttpContext.Current.Request.UserHostAddress); logger.Debug("Error: " + messageReturn); logger.Debug("Current Url: " + Request.RawUrl); //end log } }
// Returns &inputBuffer[inputLength] if the input buffer is valid. /// <summary> /// Given an input buffer <paramref name="pInputBuffer"/> of char length <paramref name="inputLength"/>, /// returns a pointer to where the first invalid data appears in <paramref name="pInputBuffer"/>. /// </summary> /// <remarks> /// Returns a pointer to the end of <paramref name="pInputBuffer"/> if the buffer is well-formed. /// </remarks> public static char *GetPointerToFirstInvalidChar(char *pInputBuffer, int inputLength, out long utf8CodeUnitCountAdjustment, out int scalarCountAdjustment) { Debug.Assert(inputLength >= 0, "Input length must not be negative."); Debug.Assert(pInputBuffer != null || inputLength == 0, "Input length must be zero if input buffer pointer is null."); // First, we'll handle the common case of all-ASCII. If this is able to // consume the entire buffer, we'll skip the remainder of this method's logic. int numAsciiCharsConsumedJustNow = (int)ASCIIUtility.GetIndexOfFirstNonAsciiChar(pInputBuffer, (uint)inputLength); Debug.Assert(0 <= numAsciiCharsConsumedJustNow && numAsciiCharsConsumedJustNow <= inputLength); pInputBuffer += (uint)numAsciiCharsConsumedJustNow; inputLength -= numAsciiCharsConsumedJustNow; if (inputLength == 0) { utf8CodeUnitCountAdjustment = 0; scalarCountAdjustment = 0; return(pInputBuffer); } // If we got here, it means we saw some non-ASCII data, so within our // vectorized code paths below we'll handle all non-surrogate UTF-16 // code points branchlessly. We'll only branch if we see surrogates. // // We still optimistically assume the data is mostly ASCII. This means that the // number of UTF-8 code units and the number of scalars almost matches the number // of UTF-16 code units. As we go through the input and find non-ASCII // characters, we'll keep track of these "adjustment" fixups. To get the // total number of UTF-8 code units required to encode the input data, add // the UTF-8 code unit count adjustment to the number of UTF-16 code units // seen. To get the total number of scalars present in the input data, // add the scalar count adjustment to the number of UTF-16 code units seen. long tempUtf8CodeUnitCountAdjustment = 0; int tempScalarCountAdjustment = 0; if (Sse2.IsSupported) { if (inputLength >= Vector128 <ushort> .Count) { Vector128 <ushort> vector0080 = Vector128.Create((ushort)0x80); Vector128 <ushort> vectorA800 = Vector128.Create((ushort)0xA800); Vector128 <short> vector8800 = Vector128.Create(unchecked ((short)0x8800)); Vector128 <ushort> vectorZero = Vector128 <ushort> .Zero; do { Vector128 <ushort> utf16Data = Sse2.LoadVector128((ushort *)pInputBuffer); // unaligned uint mask; Vector128 <ushort> charIsNonAscii; if (Sse41.IsSupported) { // Sets the 0x0080 bit of each element in 'charIsNonAscii' if the corresponding // input was 0x0080 <= [value]. (i.e., [value] is non-ASCII.) charIsNonAscii = Sse41.Min(utf16Data, vector0080); } else { // Sets the 0x0080 bit of each element in 'charIsNonAscii' if the corresponding // input was 0x0080 <= [value] <= 0x7FFF. The case where 0x8000 <= [value] will // be handled in a few lines. charIsNonAscii = Sse2.AndNot(Sse2.CompareGreaterThan(vector0080.AsInt16(), utf16Data.AsInt16()).AsUInt16(), vector0080); } #if DEBUG // Quick check to ensure we didn't accidentally set the 0x8000 bit of any element. uint debugMask = (uint)Sse2.MoveMask(charIsNonAscii.AsByte()); Debug.Assert((debugMask & 0b_1010_1010_1010_1010) == 0, "Shouldn't have set the 0x8000 bit of any element in 'charIsNonAscii'."); #endif // DEBUG // Sets the 0x8080 bits of each element in 'charIsNonAscii' if the corresponding // input was 0x0800 <= [value]. This also handles the missing range a few lines above. Vector128 <ushort> charIsThreeByteUtf8Encoded = Sse2.Subtract(vectorZero, Sse2.ShiftRightLogical(utf16Data, 11)); mask = (uint)Sse2.MoveMask(Sse2.Or(charIsNonAscii, charIsThreeByteUtf8Encoded).AsByte()); // Each even bit of mask will be 1 only if the char was >= 0x0080, // and each odd bit of mask will be 1 only if the char was >= 0x0800. // // Example for UTF-16 input "[ 0123 ] [ 1234 ] ...": // // ,-- set if char[1] is >= 0x0800 // | ,-- set if char[0] is >= 0x0800 // v v // mask = ... 1 1 0 1 // ^ ^-- set if char[0] is non-ASCII // `-- set if char[1] is non-ASCII // // This means we can popcnt the number of set bits, and the result is the // number of *additional* UTF-8 bytes that each UTF-16 code unit requires as // it expands. This results in the wrong count for UTF-16 surrogate code // units (we just counted that each individual code unit expands to 3 bytes, // but in reality a well-formed UTF-16 surrogate pair expands to 4 bytes). // We'll handle this in just a moment. // // For now, compute the popcnt but squirrel it away. We'll fold it in to the // cumulative UTF-8 adjustment factor once we determine that there are no // unpaired surrogates in our data. (Unpaired surrogates would invalidate // our computed result and we'd have to throw it away.) uint popcnt = (uint)BitOperations.PopCount(mask); // Surrogates need to be special-cased for two reasons: (a) we need // to account for the fact that we over-counted in the addition above; // and (b) they require separate validation. utf16Data = Sse2.Add(utf16Data, vectorA800); mask = (uint)Sse2.MoveMask(Sse2.CompareLessThan(utf16Data.AsInt16(), vector8800).AsByte()); if (mask != 0) { // There's at least one UTF-16 surrogate code unit present. // Since we performed a pmovmskb operation on the result of a 16-bit pcmpgtw, // the resulting bits of 'mask' will occur in pairs: // - 00 if the corresponding UTF-16 char was not a surrogate code unit; // - 11 if the corresponding UTF-16 char was a surrogate code unit. // // A UTF-16 high/low surrogate code unit has the bit pattern [ 11011q## ######## ], // where # is any bit; q = 0 represents a high surrogate, and q = 1 represents // a low surrogate. Since we added 0xA800 in the vectorized operation above, // our surrogate pairs will now have the bit pattern [ 10000q## ######## ]. // If we logical right-shift each word by 3, we'll end up with the bit pattern // [ 00010000 q####### ], which means that we can immediately use pmovmskb to // determine whether a given char was a high or a low surrogate. // // Therefore the resulting bits of 'mask2' will occur in pairs: // - 00 if the corresponding UTF-16 char was a high surrogate code unit; // - 01 if the corresponding UTF-16 char was a low surrogate code unit; // - ## (garbage) if the corresponding UTF-16 char was not a surrogate code unit. // Since 'mask' already has 00 in these positions (since the corresponding char // wasn't a surrogate), "mask AND mask2 == 00" holds for these positions. uint mask2 = (uint)Sse2.MoveMask(Sse2.ShiftRightLogical(utf16Data, 3).AsByte()); // 'lowSurrogatesMask' has its bits occur in pairs: // - 01 if the corresponding char was a low surrogate char, // - 00 if the corresponding char was a high surrogate char or not a surrogate at all. uint lowSurrogatesMask = mask2 & mask; // 'highSurrogatesMask' has its bits occur in pairs: // - 01 if the corresponding char was a high surrogate char, // - 00 if the corresponding char was a low surrogate char or not a surrogate at all. uint highSurrogatesMask = (mask2 ^ 0b_0101_0101_0101_0101u /* flip all even-numbered bits 00 <-> 01 */) & mask; Debug.Assert((highSurrogatesMask & lowSurrogatesMask) == 0, "A char cannot simultaneously be both a high and a low surrogate char."); Debug.Assert(((highSurrogatesMask | lowSurrogatesMask) & 0b_1010_1010_1010_1010u) == 0, "Only even bits (no odd bits) of the masks should be set."); // Now check that each high surrogate is followed by a low surrogate and that each // low surrogate follows a high surrogate. We make an exception for the case where // the final char of the vector is a high surrogate, since we can't perform validation // on it until the next iteration of the loop when we hope to consume the matching // low surrogate. highSurrogatesMask <<= 2; if ((ushort)highSurrogatesMask != lowSurrogatesMask) { goto NonVectorizedLoop; // error: mismatched surrogate pair; break out of vectorized logic } if (highSurrogatesMask > ushort.MaxValue) { // There was a standalone high surrogate at the end of the vector. // We'll adjust our counters so that we don't consider this char consumed. highSurrogatesMask = (ushort)highSurrogatesMask; // don't allow stray high surrogate to be consumed by popcnt popcnt -= 2; // the '0xC000_0000' bits in the original mask are shifted out and discarded, so account for that here pInputBuffer--; inputLength++; } // If we're 64-bit, we can perform the zero-extension of the surrogate pairs count for // free right now, saving the extension step a few lines below. If we're 32-bit, the // convertion to nuint immediately below is a no-op, and we'll pay the cost of the real // 64 -bit extension a few lines below. nuint surrogatePairsCountNuint = (uint)BitOperations.PopCount(highSurrogatesMask); // 2 UTF-16 chars become 1 Unicode scalar tempScalarCountAdjustment -= (int)surrogatePairsCountNuint; // Since each surrogate code unit was >= 0x0800, we eagerly assumed // it'd be encoded as 3 UTF-8 code units, so our earlier popcnt computation // assumes that the pair is encoded as 6 UTF-8 code units. Since each // pair is in reality only encoded as 4 UTF-8 code units, we need to // perform this adjustment now. if (IntPtr.Size == 8) { // Since we've already zero-extended surrogatePairsCountNuint, we can directly // sub + sub. It's more efficient than shl + sub. tempUtf8CodeUnitCountAdjustment -= (long)surrogatePairsCountNuint; tempUtf8CodeUnitCountAdjustment -= (long)surrogatePairsCountNuint; } else { // Take the hit of the 64-bit extension now. tempUtf8CodeUnitCountAdjustment -= 2 * (uint)surrogatePairsCountNuint; } } tempUtf8CodeUnitCountAdjustment += popcnt; pInputBuffer += Vector128 <ushort> .Count; inputLength -= Vector128 <ushort> .Count; } while (inputLength >= Vector128 <ushort> .Count); } } else if (Vector.IsHardwareAccelerated) { if (inputLength >= Vector <ushort> .Count) { Vector <ushort> vector0080 = new Vector <ushort>(0x0080); Vector <ushort> vector0400 = new Vector <ushort>(0x0400); Vector <ushort> vector0800 = new Vector <ushort>(0x0800); Vector <ushort> vectorD800 = new Vector <ushort>(0xD800); do { // The 'twoOrMoreUtf8Bytes' and 'threeOrMoreUtf8Bytes' vectors will contain // elements whose values are 0xFFFF (-1 as signed word) iff the corresponding // UTF-16 code unit was >= 0x0080 and >= 0x0800, respectively. By summing these // vectors, each element of the sum will contain one of three values: // // 0x0000 ( 0) = original char was 0000..007F // 0xFFFF (-1) = original char was 0080..07FF // 0xFFFE (-2) = original char was 0800..FFFF // // We'll negate them to produce a value 0..2 for each element, then sum all the // elements together to produce the number of *additional* UTF-8 code units // required to represent this UTF-16 data. This is similar to the popcnt step // performed by the SSE2 code path. This will overcount surrogates, but we'll // handle that shortly. Vector <ushort> utf16Data = Unsafe.ReadUnaligned <Vector <ushort> >(pInputBuffer); Vector <ushort> twoOrMoreUtf8Bytes = Vector.GreaterThanOrEqual(utf16Data, vector0080); Vector <ushort> threeOrMoreUtf8Bytes = Vector.GreaterThanOrEqual(utf16Data, vector0800); Vector <nuint> sumVector = (Vector <nuint>)(Vector <ushort> .Zero - twoOrMoreUtf8Bytes - threeOrMoreUtf8Bytes); // We'll try summing by a natural word (rather than a 16-bit word) at a time, // which should halve the number of operations we must perform. nuint popcnt = 0; for (int i = 0; i < Vector <nuint> .Count; i++) { popcnt += sumVector[i]; } uint popcnt32 = (uint)popcnt; if (IntPtr.Size == 8) { popcnt32 += (uint)(popcnt >> 32); } // As in the SSE4.1 paths, compute popcnt but don't fold it in until we // know there aren't any unpaired surrogates in the input data. popcnt32 = (ushort)popcnt32 + (popcnt32 >> 16); // Now check for surrogates. utf16Data -= vectorD800; Vector <ushort> surrogateChars = Vector.LessThan(utf16Data, vector0800); if (surrogateChars != Vector <ushort> .Zero) { // There's at least one surrogate (high or low) UTF-16 code unit in // the vector. We'll build up additional vectors: 'highSurrogateChars' // and 'lowSurrogateChars', where the elements are 0xFFFF iff the original // UTF-16 code unit was a high or low surrogate, respectively. Vector <ushort> highSurrogateChars = Vector.LessThan(utf16Data, vector0400); Vector <ushort> lowSurrogateChars = Vector.AndNot(surrogateChars, highSurrogateChars); // We want to make sure that each high surrogate code unit is followed by // a low surrogate code unit and each low surrogate code unit follows a // high surrogate code unit. Since we don't have an equivalent of pmovmskb // or palignr available to us, we'll do this as a loop. We won't look at // the very last high surrogate char element since we don't yet know if // the next vector read will have a low surrogate char element. if (lowSurrogateChars[0] != 0) { goto Error; // error: start of buffer contains standalone low surrogate char } ushort surrogatePairsCount = 0; for (int i = 0; i < Vector <ushort> .Count - 1; i++) { surrogatePairsCount -= highSurrogateChars[i]; // turns into +1 or +0 if (highSurrogateChars[i] != lowSurrogateChars[i + 1]) { goto NonVectorizedLoop; // error: mismatched surrogate pair; break out of vectorized logic } } if (highSurrogateChars[Vector <ushort> .Count - 1] != 0) { // There was a standalone high surrogate at the end of the vector. // We'll adjust our counters so that we don't consider this char consumed. pInputBuffer--; inputLength++; popcnt32 -= 2; } nint surrogatePairsCountNint = (nint)surrogatePairsCount; // zero-extend to native int size // 2 UTF-16 chars become 1 Unicode scalar tempScalarCountAdjustment -= (int)surrogatePairsCountNint; // Since each surrogate code unit was >= 0x0800, we eagerly assumed // it'd be encoded as 3 UTF-8 code units. Each surrogate half is only // encoded as 2 UTF-8 code units (for 4 UTF-8 code units total), // so we'll adjust this now. tempUtf8CodeUnitCountAdjustment -= surrogatePairsCountNint; tempUtf8CodeUnitCountAdjustment -= surrogatePairsCountNint; } tempUtf8CodeUnitCountAdjustment += popcnt32; pInputBuffer += Vector <ushort> .Count; inputLength -= Vector <ushort> .Count; } while (inputLength >= Vector <ushort> .Count); } } NonVectorizedLoop: // Vectorization isn't supported on our current platform, or the input was too small to benefit // from vectorization, or we saw invalid UTF-16 data in the vectorized code paths and need to // drain remaining valid chars before we report failure. for (; inputLength > 0; pInputBuffer++, inputLength--) { uint thisChar = pInputBuffer[0]; if (thisChar <= 0x7F) { continue; } // Bump adjustment by +1 for U+0080..U+07FF; by +2 for U+0800..U+FFFF. // This optimistically assumes no surrogates, which we'll handle shortly. tempUtf8CodeUnitCountAdjustment += (thisChar + 0x0001_F800u) >> 16; if (!UnicodeUtility.IsSurrogateCodePoint(thisChar)) { continue; } // Found a surrogate char. Back out the adjustment we made above, then // try to consume the entire surrogate pair all at once. We won't bother // trying to interpret the surrogate pair as a scalar value; we'll only // validate that its bit pattern matches what's expected for a surrogate pair. tempUtf8CodeUnitCountAdjustment -= 2; if (inputLength == 1) { goto Error; // input buffer too small to read a surrogate pair } thisChar = Unsafe.ReadUnaligned <uint>(pInputBuffer); if (((thisChar - (BitConverter.IsLittleEndian ? 0xDC00_D800u : 0xD800_DC00u)) & 0xFC00_FC00u) != 0) { goto Error; // not a well-formed surrogate pair } tempScalarCountAdjustment--; // 2 UTF-16 code units -> 1 scalar tempUtf8CodeUnitCountAdjustment += 2; // 2 UTF-16 code units -> 4 UTF-8 code units pInputBuffer++; // consumed one extra char inputLength--; } Error: // Also used for normal return. utf8CodeUnitCountAdjustment = tempUtf8CodeUnitCountAdjustment; scalarCountAdjustment = tempScalarCountAdjustment; return(pInputBuffer); }
protected void Page_Load(object sender, EventArgs e) { lang = Request.QueryString["lang"]; width = ConvertUtility.ToInt32(Request.QueryString["w"]); price = ConfigurationSettings.AppSettings.Get("goldprice"); telCo = AppEnv.CheckFreeContentTelco(); linkStr = "<a href=\"../" + UrlProcess.GetSportHomeUrl(lang, "home", width.ToString()).Replace("~/", "") + "\" >BÓNG ĐÁ<a>"; linkStr_KD = "<a href=\"../" + UrlProcess.GetSportHomeUrl(lang, "home", width.ToString()).Replace("~/", "") + "\" >BONG DA<a>"; if (!IsPostBack) { if (width == 0) { width = (int)Constant.DefaultScreen.Standard; } ltrWidth.Text = "<meta content=\"width=" + width.ToString() + "; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" name=\"viewport\" />"; #region Free Content if (AppEnv.GetSetting("FreeContent") == "1") { HienThiNoiDung(true, false); return; } #endregion #region OLD gameid = ThethaoController.GetAll_Sport87DetailByGame87ID(ConvertUtility.ToInt32(Request.QueryString["id"])).Rows[0]["PK_Game87_ID"].ToString(); DataSet ds87detail = ThethaoController.GetAll_Sport87_DetailBy_PK_Game87ID(gameid); if (!ConvertUtility.ToBoolean(ds87detail.Tables[0].Rows[0]["IsFull"])) { pnlThongBao.Visible = true; if (lang == "1") { ltrTitle.Text = linkStr + " » " + Resources.Resource.wThongBao; //ltrThongBao.Text = Resources.Resource.wXacNhanDichVu.Replace("xxx", price); ltrThongBao.Text = ds87detail.Tables[1].Rows[0]["ContentValue"].ToString(); btnCo.Visible = false; btnKhong.Visible = false; } else { ltrTitle.Text = linkStr_KD + " » " + Resources.Resource.wThongBao_KD; //ltrThongBao.Text = Resources.Resource.wXacNhanDichVu_KD.Replace("xxx", price); ltrThongBao.Text = UnicodeUtility.UnicodeToKoDau(ds87detail.Tables[1].Rows[0]["ContentValue"].ToString()); btnCo.Visible = false; btnKhong.Visible = false; } } else { if (WapController.W4A_Subscriber_IsActive(ConvertUtility.ToString(Session["msisdn"]), 2)) { HienThiNoiDung(true, false); return; } // Nếu có transactionid_old >> thuê bao mobifone đã thực hiện thanh toán if (Session["transactionid_old"] != null) { messageReturn = ConvertUtility.ToString(Session["debit_status"]); if (ConvertUtility.ToString(Session["debit_status"]) == "0") {// Thanh toán thành công >> trả nội dung HienThiNoiDung(true, true); } else {// Thanh toán không thành công >> thông báo lỗi HienThiNoiDung(false, true); } Session["transactionid_old"] = null; } else { //gameid = ThethaoController.GetAll_Sport87DetailByGame87ID(ConvertUtility.ToInt32(Request.QueryString["id"])).Rows[0]["PK_Game87_ID"].ToString(); if (telCo == Constant.T_Mobifone) { string content = Session["cpid"].ToString() + "&" + Constant.thethao + "9" + Request.QueryString["id"] + "&" + price + "&" + Session["transactionid"].ToString(); Response.Redirect(ConfigurationSettings.AppSettings.Get("vms3g") + "?link=" + Server.UrlEncode(EAS.EncryptData(content, ConfigurationSettings.AppSettings.Get("vmskey")))); } // if (telCo == "Undefined") { pnlSMS.Visible = true; if (lang == "1") { ltrHuongdan.Text = linkStr + " » " + Resources.Resource.wHuongDan; //Xiên if (Request.QueryString["id"] == "2") { ltrSMS.Text = "Soạn tin <b>" + ConfigurationSettings.AppSettings.Get("xiencode") + "</b> gửi <b>" + ConfigurationSettings.AppSettings.Get("xiencommandcode") + "</b> để nhận chuỗi kèo xiên sáng nhất" + Resources.Resource.wChon3G; } //Trận cầu vàng if (Request.QueryString["id"] == "4") { ltrSMS.Text = "Soạn tin <b>" + ConfigurationSettings.AppSettings.Get("goldcode") + "</b> gửi <b>" + ConfigurationSettings.AppSettings.Get("goldcommandcode") + "</b> để nhận thông tin về trận cầu ngon ăn nhất" + Resources.Resource.wChon3G; } //Tài Xỉu sáng nhất if (Request.QueryString["id"] == "5") { ltrSMS.Text = "Soạn tin <b>" + ConfigurationSettings.AppSettings.Get("tvtxcode") + "</b> gửi <b>" + ConfigurationSettings.AppSettings.Get("tvtxcommandcode") + "</b> để nhận thông tin Tài Xỉu sáng nhất" + Resources.Resource.wChon3G; } //Trên dưới sáng nhất if (Request.QueryString["id"] == "6") { ltrSMS.Text = "Soạn tin <b>" + ConfigurationSettings.AppSettings.Get("tvtdcode") + "</b> gửi <b>" + ConfigurationSettings.AppSettings.Get("tvtdcommandcode") + "</b> để nhận thông tin Trên Dưới sáng nhất" + Resources.Resource.wChon3G; } //Sáng nhất giải if (",1,3,7,8,9,10,11,12,".LastIndexOf("," + Request.QueryString["id"] + ",") >= 0) { ltrSMS.Text = "Soạn tin <b>" + ConfigurationSettings.AppSettings.Get("sangcode") + " <ma tran></b> gửi <b>" + ConfigurationSettings.AppSettings.Get("sangcommandcode") + "</b> để nhận thông tin Kèo sáng nhất giải" + Resources.Resource.wChon3G; } } else { ltrHuongdan.Text = linkStr_KD + " » " + Resources.Resource.wHuongDan_KD; if (Request.QueryString["id"] == "2") { ltrSMS.Text = "Soan tin <b>" + ConfigurationSettings.AppSettings.Get("xiencode") + "</b> gui <b>" + ConfigurationSettings.AppSettings.Get("xiencommandcode") + "</b> de nhan chuoi keo xien sang nhat" + Resources.Resource.wChon3G; } if (Request.QueryString["id"] == "4") { ltrSMS.Text = "Soan tin <b>" + ConfigurationSettings.AppSettings.Get("goldcode") + "</b> gui <b>" + ConfigurationSettings.AppSettings.Get("goldcommandcode") + "</b> de nhan thong tin ve tran cau ngon an nhat" + Resources.Resource.wChon3G_KD; } if (Request.QueryString["id"] == "5") { ltrSMS.Text = "Soan tin <b>" + ConfigurationSettings.AppSettings.Get("tvtxcode") + "</b> gui <b>" + ConfigurationSettings.AppSettings.Get("tvtxcommandcode") + "</b> de nhan thong tin Tai Xiu sang nhat" + Resources.Resource.wChon3G_KD; } if (Request.QueryString["id"] == "6") { ltrSMS.Text = "Soan tin <b>" + ConfigurationSettings.AppSettings.Get("tvtdcode") + "</b> gui <b>" + ConfigurationSettings.AppSettings.Get("tvtdcommandcode") + "</b> de nhan thong tin Tren Duoi sang nhat" + Resources.Resource.wChon3G_KD; } if (",1,3,7,8,9,10,11,12,".LastIndexOf("," + Request.QueryString["id"] + ",") >= 0) { ltrSMS.Text = "Soan tin <b>" + ConfigurationSettings.AppSettings.Get("sangcode") + " <ma tran></b> gui <b>" + ConfigurationSettings.AppSettings.Get("sangcommandcode") + "</b> de nhan thong tin Keo sang nhat giai" + Resources.Resource.wChon3G_KD; } } } else { pnlThongBao.Visible = false; switch (Session["telco"].ToString()) { case "Vietnamobile": var charging = new Library.VNMCharging.VNMChargingGW(); messageReturn = charging.NavigatePaymentVnm(Session["msisdn"].ToString(), "GAMEDOWN", "GAME_DOWN", price, "D", "GAME87", Request.QueryString["id"]); if (messageReturn == AppEnv.GetSetting("NotEnoughMoney")) //Not Enough Money { messageReturn = AppEnv.VnmChargingOptimizeNotEnoughMoney(Session["msisdn"].ToString(), "GAMEDOWN", "GAME_DOWN", price, "D", "GAME87", Request.QueryString["id"], out logPrice); price = logPrice; } if (messageReturn == AppEnv.GetSetting("SystemOverload")) //System Over Load { messageReturn = AppEnv.VnmChargingSystemOverload(Session["msisdn"].ToString(), "GAMEDOWN", "GAME_DOWN", price, "D", "GAME87", Request.QueryString["id"]); } if (!string.IsNullOrEmpty(messageReturn) && messageReturn == "1") { // Thanh toán thành công >> trả nội dung HienThiNoiDung(true, true); } else { // Thanh toán không thành công >> thông báo lỗi HienThiNoiDung(false, true); } break; } } } } #endregion } }
public override unsafe int FindFirstCharacterToEncodeUtf8(ReadOnlySpan <byte> utf8Text) { fixed(byte *ptr = utf8Text) { int idx = 0; #if NETCOREAPP if (Sse2.IsSupported) { sbyte *startingAddress = (sbyte *)ptr; while (utf8Text.Length - 16 >= idx) { Debug.Assert(startingAddress >= ptr && startingAddress <= (ptr + utf8Text.Length - 16)); // Load the next 16 bytes. Vector128 <sbyte> sourceValue = Sse2.LoadVector128(startingAddress); // Check for ASCII text. Any byte that's not in the ASCII range will already be negative when // casted to signed byte. int index = Sse2.MoveMask(sourceValue); if (index != 0) { // At least one of the following 16 bytes is non-ASCII. int processNextSixteen = idx + 16; Debug.Assert(processNextSixteen <= utf8Text.Length); while (idx < processNextSixteen) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (!_allowedCharacters.IsUnicodeScalarAllowed(ptr[idx])) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } startingAddress = (sbyte *)ptr + idx; } else { // Check if any of the 16 bytes need to be escaped. Vector128 <sbyte> mask = Sse2Helper.CreateEscapingMask_UnsafeRelaxedJavaScriptEncoder(sourceValue); index = Sse2.MoveMask(mask); // If index == 0, that means none of the 16 bytes needed to be escaped. // TrailingZeroCount is relatively expensive, avoid it if possible. if (index != 0) { // Found at least one byte that needs to be escaped, figure out the index of // the first one found that needed to be escaped within the 16 bytes. Debug.Assert(index > 0 && index <= 65_535); int tzc = BitOperations.TrailingZeroCount(index); Debug.Assert(tzc >= 0 && tzc <= 16); idx += tzc; goto Return; } idx += 16; startingAddress += 16; } } // Process the remaining bytes. Debug.Assert(utf8Text.Length - idx < 16); } #endif while (idx < utf8Text.Length) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (!_allowedCharacters.IsUnicodeScalarAllowed(ptr[idx])) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } Debug.Assert(idx == utf8Text.Length); idx = -1; // All bytes are allowed. Return: return(idx); } }
public static string BuildNewCuHon(List <NewsInfo> list) { #if !DEBUG var oData = CacheController.GetListNews(list[0].pk_Id); if (oData != null) { return(oData.ToString()); } #endif var sb = new StringBuilder(); for (int i = 0; i < list.Count; i++) { NewsInfo entity = list[i]; sb.Append("<div class=\"box_tincuhon\">"); sb.AppendFormat("<img src=\"{0}\" width=\"120\" alt=\"{1}\" title=\"\"/>", UntilityFunction.GetPathImgThumb(entity.s_Image), entity.s_Title); sb.AppendFormat("<a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a>", entity.pk_Id, UnicodeUtility.UrlRewriting(entity.s_Title), entity.s_Title); sb.AppendFormat("<span>{0} | {1}</span>", entity.d_DateCreated.ToString("hh:mm"), entity.d_DateCreated.ToString("dd/MM/yyyy")); sb.AppendFormat("<div style=\"text-align:justify\">{0}</div>", entity.s_Description); sb.Append("</div>"); sb.Append("<div class=\"clear\"></div>"); } string s = sb.ToString(); #if !DEBUG CacheController.GetListNews(list[0].pk_Id, s); #endif return(s); }
protected void rptlastest_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemIndex < 0) { return; } if (e.Item.ItemIndex < pagesize - 1) { Literal litBlank = (Literal)e.Item.FindControl("litBlank"); litBlank.Text = "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"f5f5f5\"><tr><td align=\"left\" valign=\"top\"><img alt=\"\" src=\"/imagesnew/blank.gif\" width=\"5\" height=\"9\" /></td></tr></table>"; } DataRowView curData = (DataRowView)e.Item.DataItem; Image imgAvatar = (Image)e.Item.FindControl("imgAvatar"); HyperLink lnkAvatar = (HyperLink)e.Item.FindControl("lnkAvatar"); HyperLink lnkTenAnh = (HyperLink)e.Item.FindControl("lnkTenAnh"); Literal ltrTheloai = (Literal)e.Item.FindControl("ltrTheloai"); HyperLink lnkTai = (HyperLink)e.Item.FindControl("lnkTai"); string sGioiThieu; if (lang == 1) { lnkTenAnh.Text = curData["AppNameUnicode"].ToString(); ltrTheloai.Text = Resources.Resource.wTheLoai + curData["Web_Name"].ToString(); sGioiThieu = curData["DescriptionUnicode"].ToString(); if (sGioiThieu.Length > 120) { sGioiThieu = sGioiThieu.Substring(0, sGioiThieu.LastIndexOf(" ", 110)) + "..."; } lnkTai.Text = Resources.Resource.wTai; } else { lnkTenAnh.Text = curData["AppName"].ToString(); ltrTheloai.Text = Resources.Resource.wTheLoai_KD + UnicodeUtility.UnicodeToKoDau(curData["Web_Name"].ToString()); sGioiThieu = curData["Description"].ToString(); if (sGioiThieu.Length > 120) { sGioiThieu = sGioiThieu.Substring(0, sGioiThieu.LastIndexOf(" ", 110)) + "..."; } lnkTai.Text = Resources.Resource.wTai_KD; } if (MobileUtils.CheckValidModel(curData["ModelSupport"].ToString(), _info)) { lnkTai.NavigateUrl = UrlProcess.GetAppDownloadUrlNew(lang.ToString(), width, curData["W_AppItemID"].ToString(), hotro.ToString()); } else { lnkTai.NavigateUrl = ""; if (lang == 1) { lnkTai.Text = Resources.Resource.wKhongHoTro; } else { lnkTai.Text = Resources.Resource.wKhongHoTro_KD; } } lnkAvatar.NavigateUrl = lnkTenAnh.NavigateUrl = UrlProcess.GetAppDetailUrlNew(lang.ToString(), "detail", width, curData["W_AppItemID"].ToString(), hotro.ToString()); WapXzone_VNM.CreateAvatar.MOReceiver ws = new WapXzone_VNM.CreateAvatar.MOReceiver(); ws.GenerateAvatarThumnail(curData["Avatar"].ToString(), 36, 48); imgAvatar.ImageUrl = preurl + MultimediaUtility.GetAvatarThumnail(curData["Avatar"].ToString(), 36, 48).Replace("~", ""); }
public static string BuildNewCuHonPhai(List <NewsInfo> list) { #if !DEBUG var oData = CacheController.GetListNews(list[0].pk_Id); if (oData != null) { return(oData.ToString()); } #endif var sb = new StringBuilder(); for (int i = 0; i < list.Count; i++) { NewsInfo entity = list[i]; if (i % 2 != 0) { sb.AppendFormat("<li><a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a></li>", entity.pk_Id, UnicodeUtility.UrlRewriting(entity.s_Title), entity.s_Title); } } string s = sb.ToString(); #if !DEBUG CacheController.GetListNews(list[0].pk_Id, s); #endif return(s); }
public virtual unsafe int FindFirstCharacterToEncodeUtf8(ReadOnlySpan <byte> utf8Text) { if (!_isAsciiCacheInitialized) { InitializeAsciiCache(); } // Loop through the input text, terminating when we see ill-formed UTF-8 or when we decode a scalar value // that must be encoded. If we see either of these things then we'll return its index in the original // input sequence. If we consume the entire text without seeing either of these, return -1 to indicate // that the text can be copied as-is without escaping. fixed(byte *ptr = utf8Text) { int idx = 0; #if NETCOREAPP if ((Sse2.IsSupported || AdvSimd.Arm64.IsSupported) && utf8Text.Length - 16 >= idx) { // Hoist these outside the loop, as the JIT won't do it. Vector128 <sbyte> bitMaskLookupAsciiNeedsEscaping = _bitMaskLookupAsciiNeedsEscaping; Vector128 <sbyte> bitPosLookup = Ssse3Helper.s_bitPosLookup; Vector128 <sbyte> nibbleMaskSByte = Ssse3Helper.s_nibbleMaskSByte; Vector128 <sbyte> nullMaskSByte = Ssse3Helper.s_nullMaskSByte; sbyte *startingAddress = (sbyte *)ptr; do { Debug.Assert(startingAddress >= ptr && startingAddress <= (ptr + utf8Text.Length - 16)); // Load the next 16 bytes. Vector128 <sbyte> sourceValue; bool containsNonAsciiBytes; // Check for ASCII text. Any byte that's not in the ASCII range will already be negative when // casted to signed byte. if (Sse2.IsSupported) { sourceValue = Sse2.LoadVector128(startingAddress); containsNonAsciiBytes = Sse2Helper.ContainsNonAsciiByte(sourceValue); } else if (AdvSimd.Arm64.IsSupported) { sourceValue = AdvSimd.LoadVector128(startingAddress); containsNonAsciiBytes = AdvSimdHelper.ContainsNonAsciiByte(sourceValue); } else { throw new PlatformNotSupportedException(); } if (!containsNonAsciiBytes) { // All of the following 16 bytes is ASCII. // TODO AdvSimd: optimization maybe achievable using VectorTableLookup and/or VectorTableLookupExtension if (Ssse3.IsSupported) { Vector128 <sbyte> mask = Ssse3Helper.CreateEscapingMask(sourceValue, bitMaskLookupAsciiNeedsEscaping, bitPosLookup, nibbleMaskSByte, nullMaskSByte); int index = Sse2Helper.GetIndexOfFirstNonAsciiByte(mask.AsByte()); if (index < 16) { idx += index; goto Return; } } else { byte *p = (byte *)startingAddress; if (DoesAsciiNeedEncoding(p[0])) { goto Return; } if (DoesAsciiNeedEncoding(p[1])) { goto Return1; } if (DoesAsciiNeedEncoding(p[2])) { goto Return2; } if (DoesAsciiNeedEncoding(p[3])) { goto Return3; } if (DoesAsciiNeedEncoding(p[4])) { goto Return4; } if (DoesAsciiNeedEncoding(p[5])) { goto Return5; } if (DoesAsciiNeedEncoding(p[6])) { goto Return6; } if (DoesAsciiNeedEncoding(p[7])) { goto Return7; } if (DoesAsciiNeedEncoding(p[8])) { goto Return8; } if (DoesAsciiNeedEncoding(p[9])) { goto Return9; } if (DoesAsciiNeedEncoding(p[10])) { goto Return10; } if (DoesAsciiNeedEncoding(p[11])) { goto Return11; } if (DoesAsciiNeedEncoding(p[12])) { goto Return12; } if (DoesAsciiNeedEncoding(p[13])) { goto Return13; } if (DoesAsciiNeedEncoding(p[14])) { goto Return14; } if (DoesAsciiNeedEncoding(p[15])) { goto Return15; } } idx += 16; } else { // At least one of the following 16 bytes is non-ASCII. int processNextSixteen = idx + 16; Debug.Assert(processNextSixteen <= utf8Text.Length); while (idx < processNextSixteen) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx])) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } } startingAddress = (sbyte *)ptr + idx; }while (utf8Text.Length - 16 >= idx); // Process the remaining bytes. Debug.Assert(utf8Text.Length - idx < 16); } #endif while (idx < utf8Text.Length) { Debug.Assert((ptr + idx) <= (ptr + utf8Text.Length)); if (UnicodeUtility.IsAsciiCodePoint(ptr[idx])) { if (DoesAsciiNeedEncoding(ptr[idx])) { goto Return; } idx++; } else { OperationStatus opStatus = UnicodeHelpers.DecodeScalarValueFromUtf8(utf8Text.Slice(idx), out uint nextScalarValue, out int utf8BytesConsumedForScalar); Debug.Assert(nextScalarValue <= int.MaxValue); if (opStatus != OperationStatus.Done || WillEncode((int)nextScalarValue)) { goto Return; } Debug.Assert(opStatus == OperationStatus.Done); idx += utf8BytesConsumedForScalar; } } Debug.Assert(idx == utf8Text.Length); idx = -1; // All bytes are allowed. goto Return; #if NETCOREAPP Return15: return(idx + 15); Return14: return(idx + 14); Return13: return(idx + 13); Return12: return(idx + 12); Return11: return(idx + 11); Return10: return(idx + 10); Return9: return(idx + 9); Return8: return(idx + 8); Return7: return(idx + 7); Return6: return(idx + 6); Return5: return(idx + 5); Return4: return(idx + 4); Return3: return(idx + 3); Return2: return(idx + 2); Return1: return(idx + 1); #endif Return: return(idx); } }
public static string BuildContentOtherItem(List <NewsInfo> oList, int numColum, int iCurent) { //var oData = CacheController.GetListNewsOtherColumn(oList[0].fk_CategoryId, numColum, iCurent); #if !DEBUG var oData = CacheController.GetListNewsOtherColumn(oList[0].fk_CategoryId, iCurent); if (oData != null) { return(oData.ToString()); } #endif StringBuilder[] sb = new StringBuilder[numColum]; int i = 0; for (i = 0; i < sb.Length; i++) { sb[i] = new StringBuilder(); } foreach (NewsInfo o in oList) { if (o.pk_Id != iCurent) { sb[i % numColum].AppendFormat("<li><a href=\"/Tin-Tuc/{0}/{1}.html\">{2}</a></li>", o.pk_Id, UnicodeUtility.UrlRewriting(o.s_Title), o.s_Title); i++; } } string s = ""; for (i = 0; i < numColum; i++) { if (i == numColum - 1) { s += "<ul class=\"tinkhac_phai\">" + sb[i].ToString() + "</ul>"; } else { s += "<ul class=\"tinkhac_trai\">" + sb[i].ToString() + "</ul>"; } } s = "<h2>Các bản tin khác:</h2>" + s; //CacheController.GetListNewsOtherColumn(oList[0].fk_CategoryId, numColum, iCurent, s); #if !DEBUG CacheController.GetListNewsOtherColumn(oList[0].fk_CategoryId, iCurent, s); #endif return(s); }
// Returns &inputBuffer[inputLength] if the input buffer is valid. /// <summary> /// Given an input buffer <paramref name="pInputBuffer"/> of byte length <paramref name="inputLength"/>, /// returns a pointer to where the first invalid data appears in <paramref name="pInputBuffer"/>. /// </summary> /// <remarks> /// Returns a pointer to the end of <paramref name="pInputBuffer"/> if the buffer is well-formed. /// </remarks> public static byte *GetPointerToFirstInvalidByte(byte *pInputBuffer, int inputLength, out int utf16CodeUnitCountAdjustment, out int scalarCountAdjustment) { Debug.Assert(inputLength >= 0, "Input length must not be negative."); Debug.Assert(pInputBuffer != null || inputLength == 0, "Input length must be zero if input buffer pointer is null."); // First, try to drain off as many ASCII bytes as we can from the beginning. { nuint numAsciiBytesCounted = ASCIIUtility.GetIndexOfFirstNonAsciiByte(pInputBuffer, (uint)inputLength); pInputBuffer += numAsciiBytesCounted; // Quick check - did we just end up consuming the entire input buffer? // If so, short-circuit the remainder of the method. inputLength -= (int)numAsciiBytesCounted; if (inputLength == 0) { utf16CodeUnitCountAdjustment = 0; scalarCountAdjustment = 0; return(pInputBuffer); } } #if DEBUG // Keep these around for final validation at the end of the method. byte *pOriginalInputBuffer = pInputBuffer; int originalInputLength = inputLength; #endif // Enregistered locals that we'll eventually out to our caller. int tempUtf16CodeUnitCountAdjustment = 0; int tempScalarCountAdjustment = 0; if (inputLength < sizeof(uint)) { goto ProcessInputOfLessThanDWordSize; } byte *pFinalPosWhereCanReadDWordFromInputBuffer = pInputBuffer + (uint)inputLength - sizeof(uint); // Begin the main loop. #if DEBUG byte *pLastBufferPosProcessed = null; // used for invariant checking in debug builds #endif while (pInputBuffer <= pFinalPosWhereCanReadDWordFromInputBuffer) { // Read 32 bits at a time. This is enough to hold any possible UTF8-encoded scalar. uint thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); AfterReadDWord: #if DEBUG Debug.Assert(pLastBufferPosProcessed < pInputBuffer, "Algorithm should've made forward progress since last read."); pLastBufferPosProcessed = pInputBuffer; #endif // First, check for the common case of all-ASCII bytes. if (ASCIIUtility.AllBytesInUInt32AreAscii(thisDWord)) { // We read an all-ASCII sequence. pInputBuffer += sizeof(uint); // If we saw a sequence of all ASCII, there's a good chance a significant amount of following data is also ASCII. // Below is basically unrolled loops with poor man's vectorization. // Below check is "can I read at least five DWORDs from the input stream?" // n.b. Since we incremented pInputBuffer above the below subtraction may result in a negative value, // hence using nint instead of nuint. if ((nint)(void *)Unsafe.ByteOffset(ref *pInputBuffer, ref *pFinalPosWhereCanReadDWordFromInputBuffer) >= 4 * sizeof(uint)) { // We want reads in the inner loop to be aligned. So let's perform a quick // ASCII check of the next 32 bits (4 bytes) now, and if that succeeds bump // the read pointer up to the next aligned address. thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); if (!ASCIIUtility.AllBytesInUInt32AreAscii(thisDWord)) { goto AfterReadDWordSkipAllBytesAsciiCheck; } pInputBuffer = (byte *)((nuint)(pInputBuffer + 4) & ~(nuint)3); // At this point, the input buffer offset points to an aligned DWORD. We also know that there's // enough room to read at least four DWORDs from the buffer. (Heed the comment a few lines above: // the original 'if' check confirmed that there were 5 DWORDs before the alignment check, and // the alignment check consumes at most a single DWORD.) byte *pInputBufferFinalPosAtWhichCanSafelyLoop = pFinalPosWhereCanReadDWordFromInputBuffer - 3 * sizeof(uint); // can safely read 4 DWORDs here uint mask; do { if (Sse2.IsSupported && Bmi1.IsSupported) { // pInputBuffer is 32-bit aligned but not necessary 128-bit aligned, so we're // going to perform an unaligned load. We don't necessarily care about aligning // this because we pessimistically assume we'll encounter non-ASCII data at some // point in the not-too-distant future (otherwise we would've stayed entirely // within the all-ASCII vectorized code at the entry to this method). mask = (uint)Sse2.MoveMask(Sse2.LoadVector128((byte *)pInputBuffer)); if (mask != 0) { goto Sse2LoopTerminatedEarlyDueToNonAsciiData; } } else { if (!ASCIIUtility.AllBytesInUInt32AreAscii(((uint *)pInputBuffer)[0] | ((uint *)pInputBuffer)[1])) { goto LoopTerminatedEarlyDueToNonAsciiDataInFirstPair; } if (!ASCIIUtility.AllBytesInUInt32AreAscii(((uint *)pInputBuffer)[2] | ((uint *)pInputBuffer)[3])) { goto LoopTerminatedEarlyDueToNonAsciiDataInSecondPair; } } pInputBuffer += 4 * sizeof(uint); // consumed 4 DWORDs } while (pInputBuffer <= pInputBufferFinalPosAtWhichCanSafelyLoop); continue; // need to perform a bounds check because we might be running out of data Sse2LoopTerminatedEarlyDueToNonAsciiData: Debug.Assert(BitConverter.IsLittleEndian); Debug.Assert(Sse2.IsSupported); Debug.Assert(Bmi1.IsSupported); // The 'mask' value will have a 0 bit for each ASCII byte we saw and a 1 bit // for each non-ASCII byte we saw. We can count the number of ASCII bytes, // bump our input counter by that amount, and resume processing from the // "the first byte is no longer ASCII" portion of the main loop. Debug.Assert(mask != 0); pInputBuffer += Bmi1.TrailingZeroCount(mask); if (pInputBuffer > pFinalPosWhereCanReadDWordFromInputBuffer) { goto ProcessRemainingBytesSlow; } thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); // no longer guaranteed to be aligned goto BeforeProcessTwoByteSequence; LoopTerminatedEarlyDueToNonAsciiDataInSecondPair: pInputBuffer += 2 * sizeof(uint); // consumed 2 DWORDs LoopTerminatedEarlyDueToNonAsciiDataInFirstPair: // We know that there's *at least* two DWORDs of data remaining in the buffer. // We also know that one of them (or both of them) contains non-ASCII data somewhere. // Let's perform a quick check here to bypass the logic at the beginning of the main loop. thisDWord = *(uint *)pInputBuffer; // still aligned here if (ASCIIUtility.AllBytesInUInt32AreAscii(thisDWord)) { pInputBuffer += sizeof(uint); // consumed 1 more DWORD thisDWord = *(uint *)pInputBuffer; // still aligned here } goto AfterReadDWordSkipAllBytesAsciiCheck; } continue; // not enough data remaining to unroll loop - go back to beginning with bounds checks } AfterReadDWordSkipAllBytesAsciiCheck: Debug.Assert(!ASCIIUtility.AllBytesInUInt32AreAscii(thisDWord)); // this should have been handled earlier // Next, try stripping off ASCII bytes one at a time. // We only handle up to three ASCII bytes here since we handled the four ASCII byte case above. { uint numLeadingAsciiBytes = ASCIIUtility.CountNumberOfLeadingAsciiBytesFromUInt32WithSomeNonAsciiData(thisDWord); pInputBuffer += numLeadingAsciiBytes; if (pFinalPosWhereCanReadDWordFromInputBuffer < pInputBuffer) { goto ProcessRemainingBytesSlow; // Input buffer doesn't contain enough data to read a DWORD } else { // The input buffer at the current offset contains a non-ASCII byte. // Read an entire DWORD and fall through to multi-byte consumption logic. thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); } } BeforeProcessTwoByteSequence: // At this point, we suspect we're working with a multi-byte code unit sequence, // but we haven't yet validated it for well-formedness. // The masks and comparands are derived from the Unicode Standard, Table 3-6. // Additionally, we need to check for valid byte sequences per Table 3-7. // Check the 2-byte case. thisDWord -= (BitConverter.IsLittleEndian) ? 0x0000_80C0u : 0xC080_0000u; if ((thisDWord & (BitConverter.IsLittleEndian ? 0x0000_C0E0u : 0xE0C0_0000u)) == 0) { // Per Table 3-7, valid sequences are: // [ C2..DF ] [ 80..BF ] // // Due to our modification of 'thisDWord' above, this becomes: // [ 02..1F ] [ 00..3F ] // // We've already checked that the leading byte was originally in the range [ C0..DF ] // and that the trailing byte was originally in the range [ 80..BF ], so now we only need // to check that the modified leading byte is >= [ 02 ]. if ((BitConverter.IsLittleEndian && (byte)thisDWord < 0x02u) || (!BitConverter.IsLittleEndian && thisDWord < 0x0200_0000u)) { goto Error; // overlong form - leading byte was [ C0 ] or [ C1 ] } ProcessTwoByteSequenceSkipOverlongFormCheck: // Optimization: If this is a two-byte-per-character language like Cyrillic or Hebrew, // there's a good chance that if we see one two-byte run then there's another two-byte // run immediately after. Let's check that now. // On little-endian platforms, we can check for the two-byte UTF8 mask *and* validate that // the value isn't overlong using a single comparison. On big-endian platforms, we'll need // to validate the mask and validate that the sequence isn't overlong as two separate comparisons. if ((BitConverter.IsLittleEndian && UInt32EndsWithValidUtf8TwoByteSequenceLittleEndian(thisDWord)) || (!BitConverter.IsLittleEndian && (UInt32EndsWithUtf8TwoByteMask(thisDWord) && !UInt32EndsWithOverlongUtf8TwoByteSequence(thisDWord)))) { // We have two runs of two bytes each. pInputBuffer += 4; tempUtf16CodeUnitCountAdjustment -= 2; // 4 UTF-8 code units -> 2 UTF-16 code units (and 2 scalars) if (pInputBuffer <= pFinalPosWhereCanReadDWordFromInputBuffer) { // Optimization: If we read a long run of two-byte sequences, the next sequence is probably // also two bytes. Check for that first before going back to the beginning of the loop. thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); if (BitConverter.IsLittleEndian) { if (UInt32BeginsWithValidUtf8TwoByteSequenceLittleEndian(thisDWord)) { // The next sequence is a valid two-byte sequence. goto ProcessTwoByteSequenceSkipOverlongFormCheck; } } else { if (UInt32BeginsWithUtf8TwoByteMask(thisDWord)) { if (UInt32BeginsWithOverlongUtf8TwoByteSequence(thisDWord)) { goto Error; // The next sequence purports to be a 2-byte sequence but is overlong. } goto ProcessTwoByteSequenceSkipOverlongFormCheck; } } // If we reached this point, the next sequence is something other than a valid // two-byte sequence, so go back to the beginning of the loop. goto AfterReadDWord; } else { goto ProcessRemainingBytesSlow; // Running out of data - go down slow path } } // The buffer contains a 2-byte sequence followed by 2 bytes that aren't a 2-byte sequence. // Unlikely that a 3-byte sequence would follow a 2-byte sequence, so perhaps remaining // bytes are ASCII? tempUtf16CodeUnitCountAdjustment--; // 2-byte sequence + (some number of ASCII bytes) -> 1 UTF-16 code units (and 1 scalar) [+ trailing] if (UInt32ThirdByteIsAscii(thisDWord)) { if (UInt32FourthByteIsAscii(thisDWord)) { pInputBuffer += 4; } else { pInputBuffer += 3; // A two-byte sequence followed by an ASCII byte followed by a non-ASCII byte. // Read in the next DWORD and jump directly to the start of the multi-byte processing block. if (pInputBuffer <= pFinalPosWhereCanReadDWordFromInputBuffer) { thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); goto BeforeProcessTwoByteSequence; } } } else { pInputBuffer += 2; } continue; } // Check the 3-byte case. // We need to restore the C0 leading byte we stripped out earlier, then we can strip out the expected E0 byte. thisDWord -= (BitConverter.IsLittleEndian) ? (0x0080_00E0u - 0x0000_00C0u) : (0xE000_8000u - 0xC000_0000u); if ((thisDWord & (BitConverter.IsLittleEndian ? 0x00C0_C0F0u : 0xF0C0_C000u)) == 0) { ProcessThreeByteSequenceWithCheck: // We assume the caller has confirmed that the bit pattern is representative of a three-byte // sequence, but it may still be overlong or surrogate. We need to check for these possibilities. // // Per Table 3-7, valid sequences are: // [ E0 ] [ A0..BF ] [ 80..BF ] // [ E1..EC ] [ 80..BF ] [ 80..BF ] // [ ED ] [ 80..9F ] [ 80..BF ] // [ EE..EF ] [ 80..BF ] [ 80..BF ] // // Big-endian examples of using the above validation table: // E0A0 = 1110 0000 1010 0000 => invalid (overlong ) patterns are 1110 0000 100# #### // ED9F = 1110 1101 1001 1111 => invalid (surrogate) patterns are 1110 1101 101# #### // If using the bitmask ......................................... 0000 1111 0010 0000 (=0F20), // Then invalid (overlong) patterns match the comparand ......... 0000 0000 0000 0000 (=0000), // And invalid (surrogate) patterns match the comparand ......... 0000 1101 0010 0000 (=0D20). // // It's ok if the caller has manipulated 'thisDWord' (e.g., by subtracting 0xE0 or 0x80) // as long as they haven't touched the bits we're about to use in our mask checking below. if (BitConverter.IsLittleEndian) { // The "overlong or surrogate" check can be implemented using a single jump, but there's // some overhead to moving the bits into the correct locations in order to perform the // correct comparison, and in practice the processor's branch prediction capability is // good enough that we shouldn't bother. So we'll use two jumps instead. // Can't extract this check into its own helper method because JITter produces suboptimal // assembly, even with aggressive inlining. // Code below becomes 5 instructions: test, jz, add, test, jz if (((thisDWord & 0x0000_200Fu) == 0) || (((thisDWord -= 0x0000_200Du) & 0x0000_200Fu) == 0)) { goto Error; // overlong or surrogate } } else { if (((thisDWord & 0x0F20_0000u) == 0) || (((thisDWord -= 0x0D20_0000u) & 0x0F20_0000u) == 0)) { goto Error; // overlong or surrogate } } ProcessSingleThreeByteSequenceSkipOverlongAndSurrogateChecks: // Occasionally one-off ASCII characters like spaces, periods, or newlines will make their way // in to the text. If this happens strip it off now before seeing if the next character // consists of three code units. // Branchless: consume a 3-byte UTF-8 sequence and optionally an extra ASCII byte hanging off the end nint asciiAdjustment; if (BitConverter.IsLittleEndian) { asciiAdjustment = (int)thisDWord >> 31; // smear most significant bit across entire value } else { asciiAdjustment = (nint)(sbyte)thisDWord >> 7; // smear most significant bit of least significant byte across entire value } // asciiAdjustment = 0 if fourth byte is ASCII; -1 otherwise // Please *DO NOT* reorder the below two lines. It provides extra defense in depth in case this method // is ever changed such that pInputBuffer becomes a 'ref byte' instead of a simple 'byte*'. It's valid // to add 4 before backing up since we already checked previously that the input buffer contains at // least a DWORD's worth of data, so we're not going to run past the end of the buffer where the GC can // no longer track the reference. However, we can't back up before adding 4, since we might back up to // before the start of the buffer, and the GC isn't guaranteed to be able to track this. pInputBuffer += 4; // optimistically, assume consumed a 3-byte UTF-8 sequence plus an extra ASCII byte pInputBuffer += asciiAdjustment; // back up if we didn't actually consume an ASCII byte tempUtf16CodeUnitCountAdjustment -= 2; // 3 (or 4) UTF-8 bytes -> 1 (or 2) UTF-16 code unit (and 1 [or 2] scalar) SuccessfullyProcessedThreeByteSequence: if (IntPtr.Size >= 8 && BitConverter.IsLittleEndian) { // x64 little-endian optimization: A three-byte character could indicate CJK text, // which makes it likely that the character following this one is also CJK. // We'll try to process several three-byte sequences at a time. // The check below is really "can we read 9 bytes from the input buffer?" since 'pFinalPos...' is already offset // n.b. The subtraction below could result in a negative value (since we advanced pInputBuffer above), so // use nint instead of nuint. if ((nint)(pFinalPosWhereCanReadDWordFromInputBuffer - pInputBuffer) >= 5) { ulong thisQWord = Unsafe.ReadUnaligned <ulong>(pInputBuffer); // Stage the next 32 bits into 'thisDWord' so that it's ready for us in case we need to jump backward // to a previous location in the loop. This offers defense against reading main memory again (which may // have been modified and could lead to a race condition). thisDWord = (uint)thisQWord; // Is this three 3-byte sequences in a row? // thisQWord = [ 10yyyyyy 1110zzzz | 10xxxxxx 10yyyyyy 1110zzzz | 10xxxxxx 10yyyyyy 1110zzzz ] [ 10xxxxxx ] // ---- CHAR 3 ---- --------- CHAR 2 --------- --------- CHAR 1 --------- -CHAR 3- if ((thisQWord & 0xC0F0_C0C0_F0C0_C0F0ul) == 0x80E0_8080_E080_80E0ul && IsUtf8ContinuationByte(in pInputBuffer[8])) { // Saw a proper bitmask for three incoming 3-byte sequences, perform the // overlong and surrogate sequence checking now. // Check the first character. // If the first character is overlong or a surrogate, fail immediately. if ((((uint)thisQWord & 0x200Fu) == 0) || ((((uint)thisQWord - 0x200Du) & 0x200Fu) == 0)) { goto Error; } // Check the second character. // At this point, we now know the first three bytes represent a well-formed sequence. // If there's an error beyond here, we'll jump back to the "process three known good bytes" // logic. thisQWord >>= 24; if ((((uint)thisQWord & 0x200Fu) == 0) || ((((uint)thisQWord - 0x200Du) & 0x200Fu) == 0)) { goto ProcessSingleThreeByteSequenceSkipOverlongAndSurrogateChecks; } // Check the third character (we already checked that it's followed by a continuation byte). thisQWord >>= 24; if ((((uint)thisQWord & 0x200Fu) == 0) || ((((uint)thisQWord - 0x200Du) & 0x200Fu) == 0)) { goto ProcessSingleThreeByteSequenceSkipOverlongAndSurrogateChecks; } pInputBuffer += 9; tempUtf16CodeUnitCountAdjustment -= 6; // 9 UTF-8 bytes -> 3 UTF-16 code units (and 3 scalars) goto SuccessfullyProcessedThreeByteSequence; } // Is this two 3-byte sequences in a row? // thisQWord = [ ######## ######## | 10xxxxxx 10yyyyyy 1110zzzz | 10xxxxxx 10yyyyyy 1110zzzz ] // --------- CHAR 2 --------- --------- CHAR 1 --------- if ((thisQWord & 0xC0C0_F0C0_C0F0ul) == 0x8080_E080_80E0ul) { // Saw a proper bitmask for two incoming 3-byte sequences, perform the // overlong and surrogate sequence checking now. // Check the first character. // If the first character is overlong or a surrogate, fail immediately. if ((((uint)thisQWord & 0x200Fu) == 0) || ((((uint)thisQWord - 0x200Du) & 0x200Fu) == 0)) { goto Error; } // Check the second character. // At this point, we now know the first three bytes represent a well-formed sequence. // If there's an error beyond here, we'll jump back to the "process three known good bytes" // logic. thisQWord >>= 24; if ((((uint)thisQWord & 0x200Fu) == 0) || ((((uint)thisQWord - 0x200Du) & 0x200Fu) == 0)) { goto ProcessSingleThreeByteSequenceSkipOverlongAndSurrogateChecks; } pInputBuffer += 6; tempUtf16CodeUnitCountAdjustment -= 4; // 6 UTF-8 bytes -> 2 UTF-16 code units (and 2 scalars) // The next byte in the sequence didn't have a 3-byte marker, so it's probably // an ASCII character. Jump back to the beginning of loop processing. continue; } if (UInt32BeginsWithUtf8ThreeByteMask(thisDWord)) { // A single three-byte sequence. goto ProcessThreeByteSequenceWithCheck; } else { // Not a three-byte sequence; perhaps ASCII? goto AfterReadDWord; } } } if (pInputBuffer <= pFinalPosWhereCanReadDWordFromInputBuffer) { thisDWord = Unsafe.ReadUnaligned <uint>(pInputBuffer); // Optimization: A three-byte character could indicate CJK text, which makes it likely // that the character following this one is also CJK. We'll check for a three-byte sequence // marker now and jump directly to three-byte sequence processing if we see one, skipping // all of the logic at the beginning of the loop. if (UInt32BeginsWithUtf8ThreeByteMask(thisDWord)) { goto ProcessThreeByteSequenceWithCheck; // Found another [not yet validated] three-byte sequence; process } else { goto AfterReadDWord; // Probably ASCII punctuation or whitespace; go back to start of loop } } else { goto ProcessRemainingBytesSlow; // Running out of data } } // Assume the 4-byte case, but we need to validate. if (BitConverter.IsLittleEndian) { thisDWord &= 0xC0C0_FFFFu; // After the above modifications earlier in this method, we expect 'thisDWord' // to have the structure [ 10000000 00000000 00uuzzzz 00010uuu ]. We'll now // perform two checks to confirm this. The first will verify the // [ 10000000 00000000 00###### ######## ] structure by taking advantage of two's // complement representation to perform a single *signed* integer check. if ((int)thisDWord > unchecked ((int)0x8000_3FFF)) { goto Error; // didn't have three trailing bytes } // Now we want to confirm that 0x01 <= uuuuu (otherwise this is an overlong encoding) // and that uuuuu <= 0x10 (otherwise this is an out-of-range encoding). thisDWord = BitOperations.RotateRight(thisDWord, 8); // Now, thisDWord = [ 00010uuu 10000000 00000000 00uuzzzz ]. // The check is now a simple add / cmp / jcc combo. if (!UnicodeUtility.IsInRangeInclusive(thisDWord, 0x1080_0010u, 0x1480_000Fu)) { goto Error; // overlong or out-of-range } } else { thisDWord -= 0x80u; // After the above modifications earlier in this method, we expect 'thisDWord' // to have the structure [ 00010uuu 00uuzzzz 00yyyyyy 00xxxxxx ]. We'll now // perform two checks to confirm this. The first will verify the // [ ######## 00###### 00###### 00###### ] structure. if ((thisDWord & 0x00C0_C0C0u) != 0) { goto Error; // didn't have three trailing bytes } // Now we want to confirm that 0x01 <= uuuuu (otherwise this is an overlong encoding) // and that uuuuu <= 0x10 (otherwise this is an out-of-range encoding). // This is a simple range check. (We don't care about the low two bytes.) if (!UnicodeUtility.IsInRangeInclusive(thisDWord, 0x1010_0000u, 0x140F_FFFFu)) { goto Error; // overlong or out-of-range } } // Validation of 4-byte case complete. pInputBuffer += 4; tempUtf16CodeUnitCountAdjustment -= 2; // 4 UTF-8 bytes -> 2 UTF-16 code units tempScalarCountAdjustment--; // 2 UTF-16 code units -> 1 scalar continue; // go back to beginning of loop for processing } goto ProcessRemainingBytesSlow; ProcessInputOfLessThanDWordSize: Debug.Assert(inputLength < 4); nuint inputBufferRemainingBytes = (uint)inputLength; goto ProcessSmallBufferCommon; ProcessRemainingBytesSlow: inputBufferRemainingBytes = (nuint)(void *)Unsafe.ByteOffset(ref *pInputBuffer, ref *pFinalPosWhereCanReadDWordFromInputBuffer) + 4; ProcessSmallBufferCommon: Debug.Assert(inputBufferRemainingBytes < 4); while (inputBufferRemainingBytes > 0) { uint firstByte = pInputBuffer[0]; if ((byte)firstByte < 0x80u) { // 1-byte (ASCII) case pInputBuffer++; inputBufferRemainingBytes--; continue; } else if (inputBufferRemainingBytes >= 2) { uint secondByte = pInputBuffer[1]; // typed as 32-bit since we perform arithmetic (not just comparisons) on this value if ((byte)firstByte < 0xE0u) { // 2-byte case if ((byte)firstByte >= 0xC2u && IsLowByteUtf8ContinuationByte(secondByte)) { pInputBuffer += 2; tempUtf16CodeUnitCountAdjustment--; // 2 UTF-8 bytes -> 1 UTF-16 code unit (and 1 scalar) inputBufferRemainingBytes -= 2; continue; } } else if (inputBufferRemainingBytes >= 3) { if ((byte)firstByte < 0xF0u) { if ((byte)firstByte == 0xE0u) { if (!UnicodeUtility.IsInRangeInclusive(secondByte, 0xA0u, 0xBFu)) { goto Error; // overlong encoding } } else if ((byte)firstByte == 0xEDu) { if (!UnicodeUtility.IsInRangeInclusive(secondByte, 0x80u, 0x9Fu)) { goto Error; // would be a UTF-16 surrogate code point } } else { if (!IsLowByteUtf8ContinuationByte(secondByte)) { goto Error; // first trailing byte doesn't have proper continuation marker } } if (IsUtf8ContinuationByte(in pInputBuffer[2])) { pInputBuffer += 3; tempUtf16CodeUnitCountAdjustment -= 2; // 3 UTF-8 bytes -> 2 UTF-16 code units (and 2 scalars) inputBufferRemainingBytes -= 3; continue; } } } } // Error - no match. goto Error; } // If we reached this point, we're out of data, and we saw no bad UTF8 sequence. #if DEBUG // Quick check that for the success case we're going to fulfill our contract of returning &inputBuffer[inputLength]. Debug.Assert(pOriginalInputBuffer + originalInputLength == pInputBuffer, "About to return an unexpected value."); #endif Error: // Report back to our caller how far we got before seeing invalid data. // (Also used for normal termination when falling out of the loop above.) utf16CodeUnitCountAdjustment = tempUtf16CodeUnitCountAdjustment; scalarCountAdjustment = tempScalarCountAdjustment; return(pInputBuffer); }
protected void Page_Load(object sender, EventArgs e) { lang = Request.QueryString["lang"]; if (string.IsNullOrEmpty(lang)) { Response.Redirect("/Music/NhacHot.aspx?w=320&lang=1"); } Session["LastPage"] = Request.RawUrl; if (!IsPostBack) { width = ConvertUtility.ToInt32(Request.QueryString["w"]); if (width == 0) { width = (int)Constant.DefaultScreen.Standard; } ltrWidth.Text = "<meta content=\"width=" + width + "; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" name=\"viewport\" />"; // var advertisement = new Advertisement { Channel = "Home", Position = "HomeCenter", Param = 0, Lang = lang, Width = width.ToString() }; litAds.Text = advertisement.GetAds(); var advertisement1 = new Advertisement { Channel = "Home", Position = "UnderLinks", Param = 0, Lang = lang, Width = width.ToString() }; litAds1.Text = advertisement1.GetAds(); #region TU DONG DK SUB NHACCHUONG if (!Page.IsPostBack) { if (Session["msisdn"] == null) { int is3g; string msisdn = MobileUtils.GetMSISDN(out is3g); if (!string.IsNullOrEmpty(msisdn) && MobileUtils.CheckOperator(msisdn, "vietnammobile")) { Session["telco"] = Constant.T_Vietnamobile; Session["msisdn"] = msisdn; } else { Session["msisdn"] = null; Session["telco"] = Constant.T_Undefined; } } //string url = UrlProcess.GetMusicHomeUrl("1", "320"); if (Session["msisdn"] != null) { string value = AppEnv.RegisterService(AppEnv.GetSetting("S2ShortCode"), "0", Session["msisdn"].ToString(), "DK", "DK NC");//ANDY Service S2_94x string[] res = value.Split('|'); if (res.Length > 0) { if (res[0] == "1")//DK THANH CONG { pnlThongBao.Visible = true; } } } } #endregion } if (string.IsNullOrEmpty(Request.QueryString["display"])) { display = "home"; } else { display = Request.QueryString["display"]; } //string telCo = "Vietnamobile"; //string id = Request.QueryString["id"]; Literal title = new Literal(); Literal ltrEnd = new Literal(); Literal ltrEnd1 = new Literal(); try { //string wapHomeURL = "http://wap.vietnamobile.com.vn"; DataTable dtMusic = RTController.GetAllWap_RingTone_ByPackageID(ConvertUtility.ToInt32(AppEnv.GetSetting("packageId"))); title.Text = "<style type=\"text/css\">body {font-family:Verdana, Arial, Helvetica; font-size:12px;} .mainmenu {display:block;width: 100%;background-color: #de60cb;color:#fff;text-align:center;line-height:25px;} .mainmenu a{color:#fff;} a:link, a:visited {text-decoration:none;}</style>"; if (lang == "1") { title.Text += "<div style=\"background-color:#EA6A00;color:#FFFFFF;display:block;line-height:25px;width:100%;margin-top:5px;padding-left:5px;font-weight:bold;\">" + "Chào mừng bạn đến với dịch vụ nhạc chuông <b style=\"color:blue\">(Miễn Phí)</b> của Vietnamobile" + "</div>"; } else { title.Text += "<div style=\"background-color:#EA6A00;color:#FFFFFF;display:block;line-height:25px;width:100%;margin-top:5px;padding-left:5px;font-weight:bold;\">" + "Chao mung ban den voi dich vu nhac chuong <b style=\"color:blue\">(Mien Phi)</b> cua Vietnamobile" + "</div>"; } plList.Controls.Add(title); Literal ltr = new Literal(); ltr.Text = "<br />"; plList.Controls.Add(ltr); foreach (DataRow row in dtMusic.Rows) { string ringtonepath = row["Path"].ToString(); if (!string.IsNullOrEmpty(ringtonepath)) { HyperLink lnkfile = new HyperLink(); ltr = new Literal(); ltr.Text = "<img style=\"padding-left:10px\" class=\"thumblist\" alt=\"thumb\" src=\"../img/b-ring.gif\">"; if (lang == "1") { lnkfile.Text = row["SongName"].ToString(); } else { lnkfile.Text = UnicodeUtility.UnicodeToKoDau(row["SongName"].ToString()); } string ext = ringtonepath.Split('.')[ringtonepath.Split('.').Length - 1]; lnkfile.NavigateUrl = "http://media.xzone.vn/" + ringtonepath.Replace("~/", ""); lnkfile.Attributes.Add("style", "color:#006CBF;padding-left:15px;padding-top:3px;padding-bottom:3px;display:block"); lnkfile.Attributes.Add("class", "bold"); plList.Controls.Add(ltr); plList.Controls.Add(lnkfile); ltr = new Literal(); ltr.Text = "<div class=\"clearfix\"></div>"; plList.Controls.Add(ltr); } } ltrEnd1.Text = "</div><div style=\"height: 7px; margin: 5px 0 0px 0; width: 100%;\"></div>"; ltrEnd.Text += "<div style=\"background-color: #EA6A00; color: #FFFFFF; display: block; line-height: 25px; text-align: center; width: 100%;\">"; plList.Controls.Add(ltrEnd); plList.Controls.Add(ltrEnd1); } catch (Exception ex) { Response.Write(ex.ToString()); } }