protected override IFreeformEntity_MsgTgt CreateFreeformTarget(IMonitorEntity parent, IMonitorEntity_MsgTgt request)
        {
            using (ILogMethod method = Log.LogMethod("MonTgtParser_PC_RelaxedLimitEffectiveNotificationMsg_H2G", "CreateMonitorTarget"))
            {
                try
                {
                    MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg monTgt = request as MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg;
                    if (monTgt == null)
                    {
                        return(null);
                    }

                    FFTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg ffTgt = new FFTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg()
                    {
                        IsDayTimeBasisChanged = monTgt.IsDayTimeBasisChanged,
                        DayNewTargetTime      = monTgt.DayNewTargetTime,
                        DayOldTargetTime      = monTgt.DayOldTargetTime,

                        IsWeekTimeBasisChanged = monTgt.IsWeekTimeBasisChanged,
                        WeekNewTargetTime      = monTgt.WeekNewTargetTime,
                        WeekOldTargetTime      = monTgt.WeekOldTargetTime,

                        IsMonthTimeBasisChanged = monTgt.IsMonthTimeBasisChanged,
                        MonthNewTargetTime      = monTgt.MonthNewTargetTime,
                        MonthOldTargetTime      = monTgt.MonthOldTargetTime,

                        IsDayLossBasisChanged = monTgt.IsDayLossBasisChanged,
                        DayNewTargetLoss      = monTgt.DayNewTargetLoss,
                        DayOldTargetLoss      = monTgt.DayOldTargetLoss,

                        IsWeekLossBasisChanged = monTgt.IsWeekLossBasisChanged,
                        WeekNewTargetLoss      = monTgt.WeekNewTargetLoss,
                        WeekOldTargetLoss      = monTgt.WeekOldTargetLoss,

                        IsMonthLossBasisChanged = monTgt.IsMonthLossBasisChanged,
                        MonthNewTargetLoss      = monTgt.MonthNewTargetLoss,
                        MonthOldTargetLoss      = monTgt.MonthOldTargetLoss,

                        IsDayWagerBasisChanged = monTgt.IsDayWagerBasisChanged,
                        DayNewTargetWager      = monTgt.DayNewTargetWager,
                        DayOldTargetWager      = monTgt.DayOldTargetWager,

                        IsWeekWagerBasisChanged = monTgt.IsWeekWagerBasisChanged,
                        WeekNewTargetWager      = monTgt.WeekNewTargetWager,
                        WeekOldTargetWager      = monTgt.WeekOldTargetWager,

                        IsMonthWagerBasisChanged = monTgt.IsMonthWagerBasisChanged,
                        MonthNewTargetWager      = monTgt.MonthNewTargetWager,
                        MonthOldTargetWager      = monTgt.MonthOldTargetWager,
                    };
                    return(ffTgt);
                }
                catch (Exception ex)
                {
                    method.Exception(ex);
                    return(null);
                }
            }
        }
        /// <summary>
        /// To create Relaxed Limit Monitor message from response string
        /// </summary>
        /// <param name="strResponse"></param>
        /// <returns></returns>
        public MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg GetRelaxedLimitFreeFormMessage(string strResponse)
        {
            try
            {
                MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg monTgtRelaxedLimit = new MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg();

                if (HandlerHelper.Current.IsExtendedPlayer)
                {
                    monTgtRelaxedLimit.IsDayTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(49, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetTime = new TimeSpan(0, Convert.ToInt32(strResponse.Substring(50, 2)), Convert.ToInt32(strResponse.Substring(52, 2)));
                    monTgtRelaxedLimit.DayOldTargetTime = new TimeSpan(0, Convert.ToInt32(strResponse.Substring(54, 2)), 0, Convert.ToInt32(strResponse.Substring(56, 2)));

                    monTgtRelaxedLimit.IsWeekTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(58, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetTime = Convert.ToByte(strResponse.Substring(59, 2));
                    monTgtRelaxedLimit.WeekOldTargetTime = Convert.ToByte(strResponse.Substring(61, 2));

                    monTgtRelaxedLimit.IsMonthTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(63, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetTime = Convert.ToByte(strResponse.Substring(64, 2));
                    monTgtRelaxedLimit.MonthOldTargetTime = Convert.ToByte(strResponse.Substring(66, 2));

                    monTgtRelaxedLimit.IsDayLossBasisChanged = Convert.ToBoolean(strResponse.Substring(68, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetLoss = Convert.ToInt32(strResponse.Substring(69, 9));
                    monTgtRelaxedLimit.DayOldTargetLoss = Convert.ToInt32(strResponse.Substring(78, 9));

                    monTgtRelaxedLimit.IsWeekLossBasisChanged = Convert.ToBoolean(strResponse.Substring(87, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetLoss = Convert.ToInt32(strResponse.Substring(88, 9));
                    monTgtRelaxedLimit.WeekOldTargetLoss = Convert.ToInt32(strResponse.Substring(97, 9));

                    monTgtRelaxedLimit.IsMonthLossBasisChanged = Convert.ToBoolean(strResponse.Substring(106, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetLoss = Convert.ToInt32(strResponse.Substring(107, 9));
                    monTgtRelaxedLimit.MonthOldTargetLoss = Convert.ToInt32(strResponse.Substring(116, 9));

                    monTgtRelaxedLimit.IsDayWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(125, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetWager = Convert.ToInt32(strResponse.Substring(126, 9));
                    monTgtRelaxedLimit.DayOldTargetWager = Convert.ToInt32(strResponse.Substring(135, 9));

                    monTgtRelaxedLimit.IsWeekWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(144, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetWager = Convert.ToInt32(strResponse.Substring(145, 9));
                    monTgtRelaxedLimit.WeekOldTargetWager = Convert.ToInt32(strResponse.Substring(154, 9));

                    monTgtRelaxedLimit.IsMonthWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(163, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetWager = Convert.ToInt32(strResponse.Substring(164, 9));
                    monTgtRelaxedLimit.MonthOldTargetWager = Convert.ToInt32(strResponse.Substring(182, 9));

                    monTgtRelaxedLimit.IsConsecutiveDaysBasis = Convert.ToBoolean(strResponse.Substring(183, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.NewTargetConsecutiveDays = Convert.ToByte(strResponse.Substring(185, 2));
                    monTgtRelaxedLimit.OldTargetConsecutiveDays = Convert.ToByte(strResponse.Substring(188, 2));
                }
                else
                {
                    monTgtRelaxedLimit.IsDayTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(48, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetTime = new TimeSpan(0, Convert.ToInt32(strResponse.Substring(49, 2)), Convert.ToInt32(strResponse.Substring(51, 4)));
                    monTgtRelaxedLimit.DayOldTargetTime = new TimeSpan(0, Convert.ToInt32(strResponse.Substring(53, 2)), Convert.ToInt32(strResponse.Substring(55, 2)));

                    monTgtRelaxedLimit.IsWeekTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(57, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetTime = Convert.ToByte(strResponse.Substring(58, 2));
                    monTgtRelaxedLimit.WeekOldTargetTime = Convert.ToByte(strResponse.Substring(60, 2));

                    monTgtRelaxedLimit.IsMonthTimeBasisChanged = Convert.ToBoolean(strResponse.Substring(62, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetTime = Convert.ToByte(strResponse.Substring(63, 2));
                    monTgtRelaxedLimit.MonthOldTargetTime = Convert.ToByte(strResponse.Substring(65, 2));

                    monTgtRelaxedLimit.IsDayLossBasisChanged = Convert.ToBoolean(strResponse.Substring(67, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetLoss = Convert.ToInt32(strResponse.Substring(68, 9));
                    monTgtRelaxedLimit.DayOldTargetLoss = Convert.ToInt32(strResponse.Substring(77, 9));

                    monTgtRelaxedLimit.IsWeekLossBasisChanged = Convert.ToBoolean(strResponse.Substring(86, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetLoss = Convert.ToInt32(strResponse.Substring(87, 9));
                    monTgtRelaxedLimit.WeekOldTargetLoss = Convert.ToInt32(strResponse.Substring(96, 9));

                    monTgtRelaxedLimit.IsMonthLossBasisChanged = Convert.ToBoolean(strResponse.Substring(105, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetLoss = Convert.ToInt32(strResponse.Substring(106, 9));
                    monTgtRelaxedLimit.MonthOldTargetLoss = Convert.ToInt32(strResponse.Substring(115, 9));

                    monTgtRelaxedLimit.IsDayWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(124, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.DayNewTargetWager = Convert.ToInt32(strResponse.Substring(125, 9));
                    monTgtRelaxedLimit.DayOldTargetWager = Convert.ToInt32(strResponse.Substring(134, 9));

                    monTgtRelaxedLimit.IsWeekWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(143, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.WeekNewTargetWager = Convert.ToInt32(strResponse.Substring(144, 9));
                    monTgtRelaxedLimit.WeekOldTargetWager = Convert.ToInt32(strResponse.Substring(153, 9));

                    monTgtRelaxedLimit.IsMonthWagerBasisChanged = Convert.ToBoolean(strResponse.Substring(162, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.MonthNewTargetWager = Convert.ToInt32(strResponse.Substring(163, 9));
                    monTgtRelaxedLimit.MonthOldTargetWager = Convert.ToInt32(strResponse.Substring(172, 9));

                    monTgtRelaxedLimit.IsConsecutiveDaysBasis = Convert.ToBoolean(strResponse.Substring(181, 1) == "Y" ? 1 : 0);
                    monTgtRelaxedLimit.NewTargetConsecutiveDays = Convert.ToByte(strResponse.Substring(182, 2));
                    monTgtRelaxedLimit.OldTargetConsecutiveDays = Convert.ToByte(strResponse.Substring(184, 2));
                }
                return monTgtRelaxedLimit;
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
                return new MonTgt_H2G_PC_RelaxedLimitEffectiveNotificationMsg();
            }
        }