using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Diagnostics;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.ServiceProcess;
using System.Security.Principal;
using System.Threading;
using System.Globalization;

using SystemCommon;


namespace 顧客分析君
{
    public class C04システム共通処理
    {
        ////////////////////////////////////////////////////////////////////////
        // メンバ変数
        ////////////////////////////////////////////////////////////////////////
        #region メンバ変数

        private int mProcessID;
        private TraceSource mTraceSource;

        #endregion

        ////////////////////////////////////////////////////////////////////////
        // 非公開 共通メソッド
        ////////////////////////////////////////////////////////////////////////
        #region 非公開 共通メソッド

		//private void GetException(Exception ex, ref string strBody)
		//{
		//    strBody += "【Exception】\r\n";
		//    strBody += "ex.Data\r\n";
		//    strBody += ex.Data + "\r\n\r\n";
		//    strBody += "ex.HelpLink\r\n";
		//    strBody += ex.HelpLink + "\r\n\r\n";
		//    strBody += "ex.Message\r\n";
		//    strBody += ex.Message + "\r\n\r\n";1
		//    strBody += "ex.Source\r\n";
		//    strBody += ex.Source + "\r\n\r\n";
		//    strBody += "ex.StackTrace\r\n";
		//    strBody += ex.StackTrace + "\r\n\r\n";
		//    strBody += "ex.TargetSite\r\n";
		//    strBody += ex.TargetSite + "\r\n\r\n";

		//}

		//private void GetAssembly(ref string strBody)
		//{
		//    strBody += "\r\n【Assembly】\r\n";
		//    strBody += "CurrentDirectory：" + Environment.CurrentDirectory + "\r\n";
		//    strBody += "HasShutdownStarted：" + Environment.HasShutdownStarted + "\r\n";
		//    strBody += "NewLine：" + Environment.NewLine.ToString() + "\r\n";
		//    strBody += "OSVersion：" + Environment.OSVersion + "\r\n";
		//    strBody += "ProcessorCount：" + Environment.ProcessorCount + "\r\n";
		//    strBody += "StackTrace：" + "\r\n" + Environment.StackTrace + "\r\n";
		//    strBody += "SystemDirectory：" + Environment.SystemDirectory + "\r\n";
		//    strBody += "UserInteractive：" + Environment.UserInteractive + "\r\n";
		//    strBody += "Version：" + Environment.Version + "\r\n";

		//    strBody += "CommonAppDataPath：" + Application.CommonAppDataPath + "\r\n";
		//    strBody += "CompanyName：" + Application.CompanyName + "\r\n";
		//    strBody += "CurrentCulture：" + Application.CurrentCulture + "\r\n";
		//    strBody += "CurrentInputLanguage.LayoutName：" + Application.CurrentInputLanguage.LayoutName + "\r\n";
		//    strBody += "ExecutablePath：" + Application.ExecutablePath + "\r\n";
		//    strBody += "LocalUserAppDataPath：" + Application.LocalUserAppDataPath + "\r\n";
		//    strBody += "MessageLoop：" + Application.MessageLoop + "\r\n";
		//    strBody += "OpenForms.Count：" + Application.OpenForms.Count + "\r\n";
		//    strBody += "ProductName：" + Application.ProductName + "\r\n";
		//    strBody += "ProductVersion：" + Application.ProductVersion + "\r\n";
		//    strBody += "RenderWithVisualStyles：" + Application.RenderWithVisualStyles + "\r\n";
		//    strBody += "SafeTopLevelCaptionFormat：" + Application.SafeTopLevelCaptionFormat + "\r\n";
		//    strBody += "StartupPath：" + Application.StartupPath + "\r\n";
		//    strBody += "UserAppDataPath：" + Application.UserAppDataPath + "\r\n";
		//}

		//private void GetUser(ref string strBody)
		//{
		//    strBody += "\r\n【User】\r\n";
		//    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
		//    WindowsPrincipal princ = (WindowsPrincipal)Thread.CurrentPrincipal;
		//    strBody += "ユーザー名：" + princ.Identity.Name + "\r\n";
		//    strBody += "Administrators権限の有無：" + princ.IsInRole(WindowsBuiltInRole.User) + "\r\n";
		//    strBody += "Users権限の有無：" + princ.IsInRole(WindowsBuiltInRole.User) + "\r\n";

		//}

		//private void ChkDirectory(ref string strBody)
		//{
		//    strBody += "\r\n【Directory】\r\n";
		//    strBody += Properties.Settings.Default.DataPath + "：" + Directory.Exists(Properties.Settings.Default.DataPath) + "\r\n";
		//    strBody += Properties.Settings.Default.DataPath + "KB2010.ldf：" + File.Exists(Properties.Settings.Default.DataPath
		//        + "\\KB2010.ldf") + "\r\n";
		//    strBody += Properties.Settings.Default.DataPath + "KB2010.mdf：" + File.Exists(Properties.Settings.Default.DataPath
		//        + "\\KB2010.mdf") + "\r\n";

		//    strBody += Properties.Settings.Default.DataPath + "KB2010.ldf：" + File.Exists(Properties.Settings.Default.DataPath
		//        + "\\KB2010.ldf") + "\r\n";
		//    strBody += Properties.Settings.Default.DataPath + "KB2010.mdf：" + File.Exists(Properties.Settings.Default.DataPath
		//        + "\\KB2010.mdf") + "\r\n";

		//    FileInfo fi = new FileInfo(Properties.Settings.Default.DataPath + "\\KB2010.ldf");
		//    strBody += Properties.Settings.Default.DataPath + "KB2010.ldf ファイルサイズ：" + fi.Length.ToString() + "\r\n";

		//    fi = new FileInfo(Properties.Settings.Default.DataPath + "\\KB2010.mdf");
		//    strBody += Properties.Settings.Default.DataPath + "KB2010.mdf ファイルサイズ：" + fi.Length.ToString() + "\r\n";

		//    strBody += "C:\\Program Files\\Microsoft SQL Server" + "：" + Directory.Exists("C:\\Program Files\\Microsoft SQL Server")
		//        + "\r\n";

		//    for (int iCnt = 1; iCnt < 10; iCnt++)
		//        strBody += "C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "："
		//            + Directory.Exists("C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString()) + "\r\n";

		//    for (int iCnt = 1; iCnt < 10; iCnt++)
		//        strBody += "C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "\\MSSQL\\Data" + "："
		//            + Directory.Exists("C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "\\MSSQL\\Data") + "\r\n";
		//}

//        private void SendGMail(string strTo, string strFrom, string strSubject, string strBody)
//        {
//            //一般SMTP
//            //MailMessage msg = new MailMessage(strFrom, strTo, strSubject, strBody);
//            //SmtpClient sc = new SmtpClient(mstrSMTPサーバーアドレス, miSMTPサーバーポート番号);
//            //sc.Credentials = new System.Net.NetworkCredential(mstrSMTPサーバーユーザーアカウント, mstrSMTPサーバーユーザーパスワード);
//            //sc.EnableSsl = false;

//            //GMail
//            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
//            smtp.Host = "smtp.gmail.com";
//            smtp.Port = 587;
//            smtp.Credentials = new System.Net.NetworkCredential("nextsystems.err@gmail.com", "4rfv5tgB6yhN");   //GMail認証
//            smtp.EnableSsl = true;  //SSL
//            System.Net.Mail.MailMessage oMsg = new System.Net.Mail.MailMessage(strFrom, strTo, strSubject, strBody);

//#if RELEASE
//            //sc.Send(msg);
//            smtp.Send(oMsg);
//#endif
//        }

        #endregion

        ////////////////////////////////////////////////////////////////////////
        // 共通メソッド 
        ////////////////////////////////////////////////////////////////////////
        #region 公開 共通メソッド

        //コンストラクタ
        public C04システム共通処理()
        {
            mProcessID = Process.GetCurrentProcess().Id;
            mTraceSource = new TraceSource(System.Windows.Forms.Application.ProductName);
        }

		//public bool Chk多重起動()
		//{
		//    if (System.Diagnostics.Process.GetProcessesByName(
		//        System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)
		//    {
		//        MessageBox.Show(Properties.Resources.MSG_W_既に起動しています, Properties.Resources.MSG_TTL_起動エラー, MessageBoxButtons.OK,
		//            MessageBoxIcon.Warning);
		//        return false;
		//    }

		//    return true;
		//}

		//public bool IsExistシステムファイル()
		//{
		//    if (File.Exists(System.Environment.CurrentDirectory + "\\" + Application.ProductName + ".exe.config") == false)
		//    {
		//        MessageBox.Show(System.Environment.CurrentDirectory + "\\" + Application.ProductName + ".exe.config",
		//            Properties.Resources.MSG_TTL_起動エラー, MessageBoxButtons.OK, MessageBoxIcon.Warning);
		//        return false;
		//    }

		//    return true;
		//}

		//public bool SetDataPath()
		//{
		//    bool bMSSQLData = false;
		//    for (int iCnt = 1; iCnt < 10; iCnt++)
		//    {
		//        //if (Directory.Exists("C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "\\MSSQL\\Data") == true)  // VISATAはDATAフォルダに参照権限が無い
		//        if (Directory.Exists("C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "\\MSSQL") == true)
		//        {
		//            Properties.Settings.Default.DataPath = "C:\\Program Files\\Microsoft SQL Server\\MSSQL." + iCnt.ToString() + "\\MSSQL\\Data";
		//            bMSSQLData = true;
		//            break;
		//        }
		//    }

		//    return bMSSQLData;
		//}

        public bool ChkSQLServerExpressの最大DBサイズを超えているか()
        {
            // 前回表示時に、「非表示」が選択されている場合は、拡張ＭＳＧを表示しない。
            顧客分析君.D01業務共通TableAdapters.D01属性ta d01属性ta;
            d01属性ta = new 顧客分析君.D01業務共通TableAdapters.D01属性ta();
            if (d01属性ta.Scalar値(57) == "0")
                return false;

            FileInfo fi = new FileInfo(Properties.Settings.Default.DataPath + "\\KB2010.mdf");
            if (fi.Length > C_GB.GB_3)
            {
                _105拡張MSGBOX _105拡張MSGBOX = null;
                _105拡張MSGBOX = new _105拡張MSGBOX();
                _105拡張MSGBOX.mstrメッセージタイトル = "警告";
				_105拡張MSGBOX.mstrメッセージ詳細 = string.Format(Properties.Resources.MSG_W_DBサイズが3GBを超えています
					, ((float)fi.Length / (float)C_GB.GB_1).ToString("0.00"));
                _105拡張MSGBOX.ShowDialog();

                return true;
            }
            else
                return false;
        }

        public bool DB初期化()
        {
            _100初期化 _100初期化 = null;
            _100初期化 = new _100初期化();
			_100初期化.strDataPath = Properties.Settings.Default.DataPath;
            _100初期化.ShowDialog();
            return _100初期化.mb初期化;
        }

		//public static void ファイル書き込み(string strファイルパス, string strデータ)
		//{
		//    bool b書き込み成功 = false;

		//    do
		//    {
		//        try
		//        {
		//            File.AppendAllText(strファイルパス, strデータ);

		//            b書き込み成功 = true;
		//        }
		//        catch
		//        {
		//            b書き込み成功 = false;
		//        }
		//    }
		//    while (b書き込み成功 == false);
		//}

		//public void ErrorLog(string strクラス名, string strメソッド名, Exception ex)
		//{
		//    DateTime now;

		//    now = DateTime.Now;

		//    mTraceSource.TraceEvent(TraceEventType.Error, mProcessID, now.ToString("yyyy/MM/dd HH:mm:ss")
		//        + " : " + strクラス名 + " : " + strメソッド名);

		//    if (ex != null)
		//    {
		//        mTraceSource.TraceEvent(TraceEventType.Error, mProcessID, now.ToString("yyyy/MM/dd HH:mm:ss")
		//            + " : " + ex.Message);
		//        //mTraceSource.TraceEvent(TraceEventType.Error, mProcessID, now.ToString("yyyy/MM/dd HH:mm:ss")
		//        //    + " : " + ex.StackTrace);
		//    }
		//    mTraceSource.Flush();

		//    Program.システム共通処理.ErrMail(strクラス名, strメソッド名, ex);

		//    MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "システムエラー", MessageBoxButtons.OK,
		//        MessageBoxIcon.Error);
		//}

		//public bool IsExistDB()
		//{
		//    bool bExist = true;
		//    String strSQL;
		//    SqlConnection scnMASTER = new SqlConnection(Properties.Settings.Default.MASTER);

		//    try
		//    {
		//        strSQL = " if exists(select * from sys.databases where name = 'KB2010') " +
		//                 "  SELECT 1                                                    " +
		//                 " else                                                         " +
		//                 "  SELECT 0                                                    ";

		//        scnMASTER.Open();

		//        SqlCommand cmd = new SqlCommand(strSQL, scnMASTER);
		//        SqlDataReader rdr = cmd.ExecuteReader();
		//        rdr.Read();
		//        if (rdr[0].ToString() == "1")
		//            bExist = true;
		//        else
		//            bExist = false;


		//    }
		//    catch (System.Exception ex)
		//    {
		//        C04システム共通.ErrorLog("C02業務共通処理", "IsExistDB", ex);
		//        bExist = false;
		//    }
		//    finally
		//    {
		//        if (scnMASTER.State == ConnectionState.Open)
		//            scnMASTER.Close();
		//    }

		//    return bExist;
		//}

		//public bool IsExistSP()
		//{
		//    bool bExist = true;
		//    String strSQL;
		//    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

		//    try
		//    {
		//        strSQL = " if exists(SELECT * FROM dbo.sysobjects WHERE [ID] = OBJECT_ID('SP_CREATE_TABLE')) " +
		//                 "  SELECT 1                                                    " +
		//                 " else                                                         " +
		//                 "  SELECT 0                                                    ";

		//        //MessageBox.Show("1:" + Properties.Settings.Default.KB);
		//        scnKB.Open();

		//        //MessageBox.Show("2:" + strSQL);

		//        SqlCommand cmd = new SqlCommand(strSQL, scnKB);
		//        SqlDataReader rdr = cmd.ExecuteReader();
		//        rdr.Read();
		//        if (rdr[0].ToString() == "1")
		//            bExist = true;
		//        else
		//            bExist = false;


		//    }
		//    catch (System.Exception ex)
		//    {
		//        C04システム共通.ErrorLog("C02業務共通処理", "IsExistSP", ex);
		//        bExist = false;
		//    }
		//    finally
		//    {
		//        if (scnKB.State == ConnectionState.Open)
		//            scnKB.Close();
		//    }

		//    return bExist;
		//}

        //public bool Is製品版()
        //{
        //    bool bExist = true;
        //    String strSQL;
        //    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

        //    try
        //    {
        //        strSQL = " SELECT COUNT(属性No) AS cnt " +
        //                 " FROM   M04属性 " +
        //                 " WHERE  (属性No = 13) AND (値 = '製品版') ";

        //        //MessageBox.Show("1:" + Properties.Settings.Default.KB);
        //        scnKB.Open();

        //        //MessageBox.Show("2:" + strSQL);

        //        SqlCommand cmd = new SqlCommand(strSQL, scnKB);
        //        SqlDataReader rdr = cmd.ExecuteReader();
        //        rdr.Read();
        //        if (rdr[0].ToString() == "0")
        //            bExist = false;
        //        else
        //            bExist = true;
        //    }
        //    catch (System.Exception ex)
        //    {
        //        C04システム共通.ErrorLog("C02業務共通処理", "Is製品版", ex);
        //        bExist = false;
        //    }
        //    finally
        //    {
        //        if (scnKB.State == ConnectionState.Open)
        //            scnKB.Close();
        //    }

        //    return bExist;
        //}



        //public bool DropTable()
        //{
        //    bool bStatus = true;
        //    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

        //    try
        //    {
        //        scnKB.Open();
        //        SqlCommand scmd;
        //        scmd = new SqlCommand("EXEC	DROP_TABLE", scnKB);
        //        scmd.ExecuteNonQuery();
        //    }
        //    catch (System.Exception ex)
        //    {
        //        C04システム共通.ErrorLog(this, MethodBase.GetCurrentMethod().Name, ex);
        //        bStatus = false;
        //    }
        //    finally
        //    {
        //        if (scnKB.State == ConnectionState.Open)
        //            scnKB.Close();
        //    }

        //    return bStatus;
        //}

        //public bool CreateTable()
        //{
        //    bool bStatus = true;
        //    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

        //    try
        //    {
        //        scnKB.Open();
        //        SqlCommand scmd;
        //        scmd = new SqlCommand("EXEC	CREATE_TABLE", scnKB);
        //        scmd.ExecuteNonQuery();
        //    }
        //    catch (System.Exception ex)
        //    {
        //        C04システム共通.ErrorLog(this, MethodBase.GetCurrentMethod().Name, ex);
        //        bStatus = false;
        //    }
        //    finally
        //    {
        //        if (scnKB.State == ConnectionState.Open)
        //            scnKB.Close();
        //    }

        //    return bStatus;
        //}

        //public bool CreatePrimaryKey()
        //{
        //    bool bStatus = true;
        //    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

        //    try
        //    {
        //        scnKB.Open();
        //        SqlCommand scmd;
        //        scmd = new SqlCommand("EXEC	CREATE_PRIMARY_KEY", scnKB);
        //        scmd.ExecuteNonQuery();
        //    }
        //    catch (System.Exception ex)
        //    {
        //        C04システム共通.ErrorLog(this, MethodBase.GetCurrentMethod().Name, ex);
        //        bStatus = false;
        //    }
        //    finally
        //    {
        //        if (scnKB.State == ConnectionState.Open)
        //            scnKB.Close();
        //    }

        //    return bStatus;
        //}

        //public bool Insert初期値()
        //{
        //    bool bStatus = true;
        //    SqlConnection scnKB = new SqlConnection(Properties.Settings.Default.KB);

        //    try
        //    {
        //        scnKB.Open();
        //        SqlCommand scmd;
        //        scmd = new SqlCommand("EXEC	INSERT_初期値", scnKB);
        //        scmd.ExecuteNonQuery();
        //    }
        //    catch (System.Exception ex)
        //    {
        //        C04システム共通.ErrorLog(this, MethodBase.GetCurrentMethod().Name, ex);
        //        bStatus = false;
        //    }
        //    finally
        //    {
        //        if (scnKB.State == ConnectionState.Open)
        //            scnKB.Close();
        //    }

        //    return bStatus;
        //}

		//public bool ExecuteNonQuery(string strSql, string strCncstr)
		//{
		//    bool bStatus = true;
		//    SqlConnection scn = new SqlConnection(Properties.Settings.Default.KB);

		//    try
		//    {
		//        scn.Open();
		//        SqlCommand scmd;
		//        scmd = new SqlCommand(strSql, scn);
		//        scmd.ExecuteNonQuery();
		//    }
		//    catch (System.Exception ex)
		//    {
		//        C04システム共通.ErrorLog("C02業務共通処理", "ExecuteNonQuery", ex);
		//        bStatus = false;
		//    }
		//    finally
		//    {
		//        if (scn.State == ConnectionState.Open)
		//            scn.Close();
		//    }

		//    return bStatus;
		//}

		//public void SQLServer起動()
		//{
		//    ServiceController controller = new ServiceController();
		//    controller.MachineName = Properties.Settings.Default.SQLSERVER_MACHIN_NAME;
		//    controller.ServiceName = Properties.Settings.Default.SQLSERVER_SERVICE_NAME;
		//    controller.Start();
		//    controller.WaitForStatus(ServiceControllerStatus.Running);
		//}

		//public void SQLServer再起動()
		//{
		//    ServiceController controller = new ServiceController();
		//    //controller.MachineName = ".";
		//    controller.MachineName = Properties.Settings.Default.SQLSERVER_MACHIN_NAME;
		//    //#if RELEASE
		//    //                controller.ServiceName = "MSSQL$SQLEXPRESS";
		//    //#else
		//    //                controller.ServiceName = "MSSQLSERVER";
		//    //#endif
		//    controller.ServiceName = Properties.Settings.Default.SQLSERVER_SERVICE_NAME;
		//    controller.Stop();
		//    controller.WaitForStatus(ServiceControllerStatus.Stopped);
		//    controller.Start();
		//    controller.WaitForStatus(ServiceControllerStatus.Running);
		//}

		//public bool ChkSQLServer(ref string strBody)
		//{
		//    try
		//    {
		//        strBody += "\r\n【SQL Server】\r\n";
		//        ServiceController controller = new ServiceController();
		//        //controller.MachineName = ".";
		//        controller.MachineName = Properties.Settings.Default.SQLSERVER_MACHIN_NAME;
		//        //#if RELEASE
		//        //                controller.ServiceName = "MSSQL$SQLEXPRESS";
		//        //#else
		//        //                controller.ServiceName = "MSSQLSERVER";
		//        //#endif
		//        controller.ServiceName = Properties.Settings.Default.SQLSERVER_SERVICE_NAME;
		//        strBody += "Status：" + controller.Status + "\r\n";

		//        if (controller.Status.ToString() == "Running")
		//        {
		//            SqlConnection scnMASTER = new SqlConnection(Properties.Settings.Default.MASTER);
		//            scnMASTER.Open();

		//            String strSQL = " SELECT @@VERSION ";
		//            SqlCommand cmd = new SqlCommand(strSQL, scnMASTER);
		//            SqlDataReader rdr = cmd.ExecuteReader();
		//            rdr.Read();
		//            if (rdr[0] != DBNull.Value)
		//                strBody += "VERSION：" + rdr[0].ToString() + "\r\n";
		//            else
		//                strBody += "VERSION：（不明）\r\n";

		//            rdr.Close();
		//            scnMASTER.Close();
		//            return true;
		//        }
		//        else
		//        {
		//            strBody += "VERSION：（不明）\r\n";
		//            return false;
		//        }
		//    }
		//    catch
		//    {
		//        strBody += "Status：（不明）\r\n";
		//        strBody += "VERSION：（不明）\r\n";
		//        return false;
		//    }
		//}

		////依頼者宛にメールを送信する
		//public void ErrMail(string strクラス名, string strメソッド名, Exception ex)
		//{
		//    try
		//    {
		//        string strSubject;
		//        string strBody;
		//        strSubject = "【" + Application.ProductName + "】システムエラー　User：" 
		//            + Environment.UserName;
		//        strBody  = strクラス名 + "：" + strメソッド名 + "\r\n\r\n";

		//        C04システム共通.GetException(ex, ref strBody);
		//        GetUser(ref strBody);
		//        ChkSQLServer(ref strBody);
		//        ChkDirectory(ref strBody);
		//        GetAssembly(ref strBody);

		//        SendGMail("nextsystems.err@gmail.com", "nextsystems.err@gmail.com", strSubject
		//            , strBody);
		//    }
		//    catch (Exception ex2)
		//    {
		//        DateTime now = DateTime.Now;

		//        mTraceSource.TraceEvent(TraceEventType.Error, mProcessID,
		//                                now.ToString("yyyy/MM/dd HH:mm:ss") 
		//                                + " : C02業務共通処理 : ErrMail \r\n\r\n" +
		//                                ex2.Message + "\r\n" + ex2.StackTrace);

		//        mTraceSource.Flush();
		//    }
		//}

        //public void Set言語(string str言語名)
        //{
        //    //CultureInfo culture = CultureInfo.GetCultureInfo(str言語名);
        //    //Thread.CurrentThread.CurrentUICulture = culture.Parent;

        //    Thread.CurrentThread.CurrentUICulture = new CultureInfo(str言語名, true);
        //}


        #endregion
    }
}
