C#,windows应用,自动更新、文件更新

该博客介绍了文件或目录更新示例,会依据配置文件中的MD5值与本地文件对比,有变动就更新。包含更新指定文件和目录的内容,还提及MD5.txt文件生成工具getMD5.exe,有示例demo、源码及开源地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件或目录更新示例:

会根据配置文件中的MD5值,和本地文件进行对比,若有变动则更新。


1、更新指定文件:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);

 2、更新指定目录:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);

 MD5.txt文件生成工具: getMD5.exe


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SciTools
{
	/// 文件或目录更新示例:
	/// 1、更新指定文件:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);
	/// 2、更新指定目录:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);
	/// MD5.txt文件生成工具: https://scimence.gitee.io/update/tools/getMD5.exe
	
    /// <summary>
    /// SciTools.UpdateTool.AutoUpdate();            // 应用自动检测更新;
    /// 
    /// 更新原理:
    /// 根据ToolUrl_MD5获取当前应用线上的md5信息,
    /// 通过Update.exe判断当前应用的MD5值与线上的md5信息是否相同,
    /// 若不同,则结束当前进程,从ToolUrl_MD5中解析当前应用网络路径,下载并启动。Update.exe自删除。
    /// 
    /// 依赖工具类:
    /// SciTools.WebTool.cs;                https://gitee.com/scimence/sciTools/raw/master/CS/WebTool.cs
    /// SciTools.EncoderTool_Alphabet.cs;   https://gitee.com/scimence/sciTools/raw/master/CS/EncoderTool_Alphabet.cs 
    /// </summary>
    public class UpdateTool
    {
        // 当前命名空间名称
        private static string NAMESPACE = GetNamespace(Assembly.GetEntryAssembly());
        //private static string NAMESPACE = "ChannelDemoTool";

        /// <summary>
        /// 获取Assembly所在的命名空间名称
        /// </summary>
        private static string GetNamespace(Assembly asssembly)
        {
            string Namespace = "";
            Type[] types = asssembly.GetTypes();
            if (types != null && types.Length > 0)
            {
                Namespace = types[0].Namespace;
            }
            return Namespace;
        }

        /// <summary>
        /// 获取当前运行路径
        /// </summary>
        public static string curDir()
        {
            return AppDomain.CurrentDomain.BaseDirectory;
        }

        /// <summary>
        /// 检测目录是否存在,若不存在则创建
        /// </summary>
        public static void checkDir(string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
        }

        /// <summary>
        /// 保存Byte数组为文件
        /// </summary>
        public static void SaveFile(Byte[] array, string path, bool repalce = false)
        {
            if (repalce && System.IO.File.Exists(path)) System.IO.File.Delete(path);    // 若目标文件存在,则替换
            if (!System.IO.File.Exists(path))
            {
                // 创建输出流
                System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create);

                //将byte数组写入文件中
                fs.Write(array, 0, array.Length);
                fs.Close();
            }
        }

        /// <summary>
        /// 为arg添加引号
        /// </summary>
        private static string AddQuotation(string arg)
        {
            if (arg.EndsWith("\\") && !arg.EndsWith("\\\\")) arg += "\\";
            arg = "\"" + arg + "\"";

            return arg;
        }

        /// <summary>
        /// 获取Resource资源
        /// </summary>
        private static byte[] getResource(string name)
        {
            string Namespace = Assembly.GetEntryAssembly().GetTypes()[0].Namespace;
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager(Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
            byte[] bytes = (byte[])rm.GetObject(name);

            return bytes;
        }


        /// <summary>
        /// 获取Updata.exe文件内容
        /// </summary>
        private static byte[] getUpdataData()
        {
            //string file = @"C:\Users\wangzhongyuan\Documents\visual studio 2012\Projects\GifTool\GifTool\Resources\Update.data";
            //string data = Encoder.getFileData(file);

            byte[] bytes = EncoderTool_Alphabet.ToBytes(data);
            return bytes;
        }

        // "%~dp0Update.exe" "[CONFIG]https://git.oschina.net/joymeng/channelDemo/raw/master/MD5.txt" "E:\tmp2\Update_Files\\" "渠道计费包\0000001\\"
        /// <summary>
        /// 调用Update.exe,更新以perfix为前缀的配置文件
		/// 
		/// RESTART标识更新后,是否打开文件
		/// 若本地perfix目录下的其他文件需要保留,则KEEPOTHER=true
        /// </summary>
        public static void updateFiles(string url, string perfix, bool RESTART = false, bool KEEPOTHER = false)
        {
            string update_EXE = curDir() + "Update.exe";

            //byte[] bytes = getResource("Update");
            byte[] bytes = getUpdataData();

            if (!File.Exists(update_EXE)) SaveFile(bytes, update_EXE, false);
            else if (!updateIsRunning()) SaveFile(bytes, update_EXE, true);   // 更新Update.exe

            string path = curDir();
            url = AddQuotation("[CONFIG]" + url);
            path = AddQuotation(path);
            perfix = AddQuotation(perfix);
            update_EXE = AddQuotation(update_EXE);

            // 调用更新插件执行软件更新逻辑
            String arg = url + " " + path + " " + perfix;
            if (RESTART) arg += " " + "RESTART";
			if (KEEPOTHER) arg += " " + "false";
            System.Diagnostics.Process.Start(update_EXE, arg);

            autoDeletUpdateExe();   // 更新后删除update.exe
        }

        private static Timer timer = null;
        private static void autoDeletUpdateExe(object sender = null, EventArgs e = null)
        {
            string update_EXE = curDir() + "Update.exe";
            if (!File.Exists(update_EXE)) return;

            if (!updateIsRunning())
            {
                File.Delete(update_EXE);

                if (timer != null)
                {
                    timer.Stop();
                    timer = null;
                }
            }
            else
            {
                if (timer == null)
                {
                    timer = new Timer();
                    timer.Interval = 700;
                    timer.Tick += new System.EventHandler(autoDeletUpdateExe);
                    timer.Start();
                }
            }
        }

        /// <summary>
        /// 应用自更新,也可更新MD5.txt中配置的任意文件
        /// </summary>
        /// <param name="ToolUrl_MD5">工具MD5信息文件的url地址</param>
        /// <param name="perfix_EXE">当前待更新的应用名称</param>
        public static void AutoUpdate(string ToolUrl_MD5 = "", string perfix_EXE = "")
        {
            if (ToolUrl_MD5.Equals("")) ToolUrl_MD5 = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/MD5.txt";
            if (perfix_EXE.Equals("")) perfix_EXE = NAMESPACE /*+ ".exe"*/;

            updateFiles(ToolUrl_MD5, perfix_EXE, true);
        }

        /// <summary>
        /// 获取指定网址中的配置信息
        /// </summary>
        /// <param name="configUrl">配置信息对应网址</param>
        /// <param name="key">配置节点名</param>
        public static String GetWebConfig(string key = "", string configUrl = "")
        {
            if (configUrl.Equals("")) configUrl = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/config.txt";
            if (key.Equals("")) return "";

            return WebTool.getWebData(configUrl, key);
        }

        /// <summary>
        /// 打开本地路径
        /// </summary>
        public static void openChannelDir(string channelDir)
        {
            string localDir = curDir() + channelDir.Replace("/", "\\");
            checkDir(localDir);

            if (Directory.Exists(localDir))
            {
                System.Diagnostics.Process.Start("explorer.exe", "/e, " + localDir);
            }
        }

        // 判断当前是有更新任务正在执行
        public static bool updateIsRunning()
        {
            // 获取Update.exe后台进程
            System.Diagnostics.Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("Update");

            // 无更新进程Update.exe,表示更新完成
            return (processes1 != null && processes1.Length != 0);
        }

        // Update.exe文件
        private static string data = "enfkjaaaadaaaaaaaeaaaaaappppaaaaliaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaobplkaoaaleajmncbliabemmncbfegigjhdcahahcgpghhcgbgncagdgbgogogphecagcgfcahchfgocagjgocaeeepfdcagngpgegfcoananakceaaaaaaaaaaaaaafaefaaaaemabadaajojfjofjaaaaaaaaaaaaaaaaoaaaacabalabalaaaaemaaaaaaaiaaaaaaaaaaaaaogkaaaaaacaaaaaaaiaaaaaaaaaeaaaaacaaaaaaaacaaaaaeaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaamaaaaaaaacaaaaaaaaaaaaacaaeaifaaaabaaaaabaaaaaaaaabaaaaabaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaamagjaaaaelaaaaaaaaiaaaaakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaamaaaaaaiigiaaaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaicaaaaaeiaaaaaaaaaaaaaaaaaaaaaacohegfhiheaaaaaabeekaaaaaacaaaaaaaemaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaagacohchdhcgdaaaaaakaafaaaaaaiaaaaaaaagaaaaaaeoaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeacohcgfgmgpgdaaaaamaaaaaaaakaaaaaaaacaaaaaafeaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaeiaaaaaaacaaafaajidnaaaapackaaaaabaaaaaaceaaaaagoadmaaaaliaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabddaaeaaebaaaaaaabaaaabbaahoafaaaaaebepoabbgpoabamaicnbmhoaeaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaafaaaaaehoafaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaacnaaaaaaacaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcnbcaaacciadaaaaagalahbpcacibeaaaaagakaaagamclaaaickaaaaaabddaacaadoaaaaaaadaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcncdaaaccibdaaaaakhdbeaaaaakalahgpbfaaaaakakahgpbgaaaaakaaahgpbhaaaaakaaaaagamclaaaickaaaabddaafaamiaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldikmaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaacbhgkfpcibiaaaaakbgpoabamaicnalaacaaaaaaaiagoakaaclafaabggkakaaagalclhjaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaachoahaaaaaebpbpgkadfjnejgfpcibiaaaaakbgpoabamaicncgaaachoagaaaaaebpbpgkadbhgkfifjnejgfphoahaaaaaeadnejgfkcaaaaaaaiagogaakaaclbkaaachoagaaaaaebpbpgkadfjnejgfphoahaaaaaeadnejgfkakaaagalclaaahckbddaafaaklaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldiipaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnahaabhgkakaaclafaabggkakaaagalclfmaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaaccapopppphpgkfphoahaaaaaeadnejgflakaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnbhaaagcaaaaaaaeagkhoahaaaaaeadbhgkfjnejgflgaakaaagalclaaahckaabddaaeaaboaaaaaaafaaaabbaabggkakacadciaeaaaaagacbpcagkadfjciafaaaaaggaakagalclaaahckaaaabddaadaankaaaaaaagaaaabbaabggkakbggkalbggkambggkanbggkbdaebggkbdafaccaaaaaaaiagofpanadcaaaaaaaiagofpbdaeaccaaaaaaaeagkfpaladcaaaaaaaeagkfpamaccappppppdpgkfpadcappppppdpgkfpfibdafahaifpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaaiagogbajgbbbaegbbdafaaclfnahaigacibiaaaaakbgpoabbdahbbahcnebaabbafcaaaaaaaeagkfpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaamagogbajgbbbaegbbdafaaclbcaabbafcaaaaaaaeagkgbajgbbbaegbbdafaaaaclalaabbafajgbbbaegbbdafaabbafakagbdagclaabbagckaaaabddaadaabdaaaaaaafaaaabbaabggkakacadfpacggaefpgaakagalclaaahckaabddaadaabdaaaaaaafaaaabbaabggkakacaefpadaeggfpgaakagalclaaahckaabddaacaabaaaaaaaafaaaabbaabggkakacadgbaegbakagalclaaahckbddaadaabbaaaaaaafaaaabbaabggkakadacaegggagbakagalclaaahcknkaaacacemadaeafciaiaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciajaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciakaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafcialaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffckaaaaaabddaafaamdaaaaaaahaaaabbaabeakbgalbgambeanbgbdaebgbdafbgbdagcibdaaaaakacgpbjaaaaakbdahbbahiogjalahbofibpeaflbhfibpbafkamaiinbnaaaaabanbgbdaebgbdafclcnaabbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgbbahbbafjbgobbaegkciaeaaaaaggajpbbafbhfibdafaabbafahpoaebdajbbajcnmibbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgcaiaaaaaaagkbbaegkciaeaaaaaggajpajaibifjahgkbjgkciaeaaaaagjpajaibhfjahgkbpbngkciafaaaaagjpajakagbdaiclaabbaickaabddaaeaaiaaaaaaaajaaaabbaabgciabaaaaagakbggkalbgambganbgamclfiaaacaibofkgkciafaaaaaghoagaaaaaebnjgfpalblciabaaaaagahcibcaaaaagcibkaaaaakgpblaaaaakbifjanagblciabaaaaagahcibcaaaaagcibkaaaaakajbgdcadajclabbgaagpbmaaaaakcibkaaaaakakaaaibhfiamaibjpoacbgpoabbdafbbafcnjlagbdaeclaabbaeckbddaacaaddaaaaaaakaaaabbaabgciabaaaaagakclbkaaacbpbagkfncibdaaaaagagcibkaaaaakakacbpbagkflbaaaaaacbggkpoacamaicnnnagalclaaahckaabddaacaaidaaaaaaalaaaabbaabgciabaaaaagakacamaibpapgkdacjaibpakgkdcfnaibpakgkfjgjefagaaaaaaacaaaaaaalaaaaaabeaaaaaabnaaaaaacgaaaaaadaaaaaaacldibhciabaaaaagakcldjbmciabaaaaagakcldabnciabaaaaagakclchbociabaaaaagakclbobpajciabaaaaagakclbebpakciabaaaaagakclakapaacibnaaaaakakclaaagalclaaahckaabddaahaagiaiaaaaamaaaabbaabgciabaaaaagakbgalclekaahoagaaaaaeahcdaaaaaaaaaaaaaaeaahbhfigmciboaaaaakcdaaaaaaaaaaaapadpfjcibpaaaaakjphoahaaaaaeahcdaaaaaaaaaaaaaaeaahgmciboaaaaakcibpaaaaakjpaaahbhfialahbpbopoacbgpoabbdanbbancnkibeambganbggkbdaebggkbdafbggkbdagbggkbdahbggkbdaibggkbdajbggkbdakbggkbdalaccibaaaaaagamcaabcdefghgkbdaicaijklmnopgobdajcaponmlkjigobdakcahgfedcbagkbdalbgandiehahaaaaaabbaibdaebbajbdafbbakbdagbbalbdahbcaibbajbbakbbalaiajjgbngkcahikegknhgociamaaaaagaabcalbbaibbajbbakaiajbhfijgbpamgkcafglhmhoigociamaaaaagaabcakbbalbbaibbajaiajbifijgbpbbgkcanlhacacegkciamaaaaagaabcajbbakbbalbbaiaiajbjfijgbpbggkcaoomolnmbgociamaaaaagaabcaibbajbbakbbalaiajbkfijgbngkcakpaphmpfgociamaaaaagaabcalbbaibbajbbakaiajblfijgbpamgkcackmgihehgkciamaaaaagaabcakbbalbbaibbajaiajbmfijgbpbbgkcabdegdakigociamaaaaagaabcajbbakbbalbbaiaiajbnfijgbpbggkcaabjfegpngociamaaaaagaabcaibbajbbakbbalaiajbofijgbngkcanijiiagjgkciamaaaaagaabcalbbaibbajbbakaiajbpajfijgbpamgkcakppheeilgociamaaaaagaabcakbbalbbaibbajaiajbpakfijgbpbbgkcalbflppppgociamaaaaagaabcajbbakbbalbbaiaiajbpalfijgbpbggkcalonhfmijgociamaaaaagaabcaibbajbbakbbalaiajbpamfijgbngkcaccbbjaglgkciamaaaaagaabcalbbaibbajbbakaiajbpanfijgbpamgkcajdhbjipngociamaaaaagaabcakbbalbbaibbajaiajbpaofijgbpbbgkcaioedhjkggociamaaaaagaabcajbbakbbalbbaiaiajbpapfijgbpbggkcacbaileejgkciamaaaaagaabcaibbajbbakbbalaiajbhfijgblgkcagccfbopggocianaaaaagaabcalbbaibbajbbakaiajbmfijgbpajgkcaealdeamagocianaaaaagaabcakbbalbbaibbajaiajbpalfijgbpaogkcafbfkfocggkcianaaaaagaabcajbbakbbalbbaiaiajjgbpbegkcakkmhlgojgocianaaaaagaabcaibbajbbakbbalaiajblfijgblgkcafnbacpnggocianaaaaagaabcalbbaibbajbbakaiajbpakfijgbpajgkcafdbeeeacgkcianaaaaagaabcakbbalbbaibbajaiajbpapfijgbpaogkcaibogkbnigocianaaaaagaabcajbbakbbalbbaiaiajbkfijgbpbegkcamiplndohgocianaaaaagaabcaibbajbbakbbalaiajbpajfijgblgkcaogmnobcbgkcianaaaaagaabcalbbaibbajbbakaiajbpaofijgbpajgkcangahdhmdgocianaaaaagaabcakbbalbbaibbajaiajbjfijgbpaogkcaihannfpegocianaaaaagaabcajbbakbbalbbaiaiajbofijgbpbegkcaonbefkefgkcianaaaaagaabcaibbajbbakbbalaiajbpanfijgblgkcaafojodkjgocianaaaaagaabcalbbaibbajbbakaiajbifijgbpajgkcapikdoppmgocianaaaaagaabcakbbalbbaibbajaiajbnfijgbpaogkcanjacgpghgkcianaaaaagaabcajbbakbbalbbaiaiajbpamfijgbpbegkcaikemckingocianaaaaagaabcaibbajbbakbbalaiajblfijgbkgkcaecdjpkppgociaoaaaaagaabcalbbaibbajbbakaiajbofijgbpalgkcaibpghbihgociaoaaaaagaabcakbbalbbaibbajaiajbpalfijgbpbagkcaccgbjngngkciaoaaaaagaabcajbbakbbalbbaiaiajbpaofijgbpbhgkcaamdiofpngociaoaaaaagaabcaibbajbbakbbalaiajbhfijgbkgkcaeeoklokegociaoaaaaagaabcalbbaibbajbbakaiajbkfijgbpalgkcakjmpnoelgkciaoaaaaagaabcakbbalbbaibbajaiajbnfijgbpbagkcagaelllpggociaoaaaaagaabcajbbakbbalbbaiaiajbpakfijgbpbhgkcahalmlplogociaoaaaaagaabcaibbajbbakbbalaiajbpanfijgbkgkcamghojlcigkciaoaaaaagaabcalbbaibbajbbakaiajjgbpalgkcapkchkbokgociaoaaaaagaabcakbbalbbaibbajaiajbjfijgbpbagkcaifdaopnegociaoaaaaagaabcajbbakbbalbbaiaiajbmfijgbpbhgkcaafbniiaegkciaoaaaaagaabcaibbajbbakbbalaiajbpajfijgbkgkcadjnanenjgociaoaaaaagaabcalbbaibbajbbakaiajbpamfijgbpalgkcaofjjnloggociaoaaaaagaabcakbbalbbaibbajaiajbpapfijgbpbagkcapihmkcbpgkciaoaaaaagaabcajbbakbbalbbaiaiajbifijgbpbhgkcagffgkmmegociaoaaaaagaabcaibbajbbakbbalaiajjgbmgkcaeecccjpegociapaaaaagaabcalbbaibbajbbakaiajbnfijgbpakgkcajhppckedgkciapaaaaagaabcakbbalbbaibbajaiajbpaofijgbpapgkcakhcdjeklgociapaaaaagaabcajbbakbbalbbaiaiajblfijgbpbfgkcadjkajdpmgociapaaaaagaabcaibbajbbakbbalaiajbpamfijgbmgkcamdfjflgfgkciapaaaaagaabcalbbaibbajbbakaiajbjfijgbpakgkcajcmmamipgociapaaaaagaabcakbbalbbaibbajaiajbpakfijgbpapgkcahnpeopppgociapaaaaagaabcajbbakbbalbbaiaiajbhfijgbpbfgkcanbfnieifgociapaaaaagaabcaibbajbbakbbalaiajbofijgbmgkcaephokigpgkciapaaaaagaabcalbbaibbajbbakaiajbpapfijgbpakgkcaoaogcmpogociapaaaaagaabcakbbalbbaibbajaiajbmfijgbpapgkcabeedabkdgociapaaaaagaabcajbbakbbalbbaiaiajbpanfijgbpbfgkcakbbbaieogkciapaaaaagaabcaibbajbbakbbalaiajbkfijgbmgkcaichofdphgociapaaaaagaabcalbbaibbajbbakaiajbpalfijgbpakgkcadfpcdklngociapaaaaagaabcakbbalbbaibbajaiajbifijgbpapgkcallncnhckgkciapaaaaagaabcajbbakbbalbbaiaiajbpajfijgbpbfgkcajbndigolgociapaaaaagaabbaibbaeciahaaaaagbdaibbajbbafciahaaaaagbdajbbakbbagciahaaaaagbdakbbalbbahciahaaaaagbdalaaajbpbafianajaiiogjpoaebdanbbandkkkpippppadbpcapoabbgpoabbdanbbancnclaabbaicibbaaaaagbbajcibbaaaaagbbakcibbaaaaagbbalcibbaaaaagcicaaaaaakgpcbaaaaakakaaclblaabbajcibbaaaaagbbakcibbaaaaagcibkaaaaakgpcbaaaaakakaaagbdamclaabbamckkghcabaaaahaiaaeaaaaaebeiaafaaaaaebpbpinbnaaaaabiaagaaaaaebpbpinbnaaaaabiaahaaaaaeckboacciccaaaaakckaaaabddaaeaafcaaaaaaanaaaabbaaacgpblaaaaakbiflinbpaaaaabakacgpcdaaaaakalbgamclbkaaahaijdahaibhfijdcibiaaaaaganagaibiflajjmaaaibifiamaiahiogjpoaebdafbbafcnnkciceaaaaakaggpcfaaaaakbdaeclaabbaeckaaaabddaadaabdaaaaaaaoaaaabbaaacbpgbfjbpbafkadbpgbfjfincakclaaagckboacciccaaaaakckaabddaaeaaebaaaaaaabaaaabbaahoajaaaaaebepoabbgpoabamaicnbmhoaiaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaajaaaaaehoajaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaabaabaaaaaaaapaaaabbaabgcibkaaaaagakagcibnaaaaagaackbddaacaadgaaaaaabaaaaabbaaaccibcaaaaakcmbgacgpcbaaaaakbhcibkaaaaaggpcgaaaaakbgpoabclabbhaaalahcnbaaaaccichaaaaakakagcibnaaaaagaaaackaaaabldaacaadmaaaaaabbaaaabbaaacciciaaaaakakaaaganbgbdaeclboajbbaejkalaaaaahgpcjaaaaakaaaanoafamaaaanoaaaaaabbaebhfibdaebbaeajiogjpoaebdafbbafcnnfckabbaaaaaaaaabgaaalcbaaafccaaaaabbddaacaacpaaaaaabcaaaabbaacickaaaaakalbcabacciclaaaaakalbcabcicmaaaaakakclaacickaaaaakalbcabcicmaaaaakagpoaeamaicnomckaabddaacaacpaaaaaabdaaaabbaaaccibcaaaaakbgpoabamaicnaiaccichaaaaakbaaaacciciaaaaakakagcmaiagiogjbgpoacclabbgaaalclaaahckeghcoaaaaahaiaaiaaaaaebeiaajaaaaaeckboacciccaaaaakckaaaaaabddaaeaaebaaaaaaabaaaabbaahoalaaaaaebepoabbgpoabamaicnbmhoakaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaalaaaaaehoalaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaagpaaaaaabeaaaabbaahdcnaaaaakakaccmalaciogjbgpoacbgpoabclabbhaaanajcnejaaaaacbdaebgbdafcldcbbaebbafjkalaaahbpamciccaaaaaggpcoaaaaakbgpoabanajcnaibhiaamaaaaaeclaiagahgpcpaaaaakaaaabbafbhfibdafbbafbbaeiogjpoaeanajcnmcaaaggpdaaaaaakamclaaaickaabddaafaaclabaaaabfaaaabbaaaccicdaaaaagbaaabpapciccaaaaagakbpapciccaaaaagalbpapciccaaaaagambpapciccaaaaaganaciogjbgpoacbgpoabbdaebbaecnboacbgjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakakaciogjbhpoacbgpoabbdaebbaecnboacbhjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakalaciogjbipoacbgpoabbdaebbaecnboacbijkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakamaciogjbjpoacbgpoabbdaebbaecnboacbjjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakanagbmciccaaaaaggpdeaaaaakbgpoabbdaebbaecncpaaagbmciccaaaaaggpblaaaaakgpbmaaaaakakagahaiajbpbiciccaaaaaggpcoaaaaakbgpoabciciaaaaagaaaaclajagahaicicfaaaaagaackaabldaadaahoabaaaabgaaaabbaaadhcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaacaaacbpapciccaaaaaggpcoaaaaakanajdkchabaaaaaaadbpapciccaaaaaggpcoaaaaakbgpoabanajcnbocidfaaaaakgpdgaaaaakbpbjciccaaaaagaccidhaaaaakcidiaaaaakbaabadcibcaaaaakbgpoabanajcnelaaadciacaaaaagakagaegpcoaaaaakanajcndaaaadcibpaaaaagbgpoabanajcnbiaaadcibmaaaaagaacdaaaaaaaaaahakheaciboaaaaagaaaaadcidjaaaaakaaaaclafnnkiaaaaaaaaclahadcicgaaaaagaahddkaaaaakaladbpbkciccaaaaaggpcgaaaaakbgpoabanajcnenaaahacgpdlaaaaakamaibpblciccaaaaaggpdmaaaaakcmapaibpbmciccaaaaaggpdmaaaaakclabbhaaanajcnbfaibpblciccaaaaagbpbmciccaaaaaggpdnaaaaakamaiadcichaaaaagcgaaclajahacadgpdoaaaaakaahoamaaaaaebgpoabanajcnbiaacdaaaaaaaaaaeajpeaciboaaaaagaaadcidpaaaaakcgaaaaaanoafcgaaaanoaaaaaackaaaaebbmaaaaaaaaaaaadhaaaaaadpabaaaahgabaaaaafaaaaaaabaaaaabbddaabaabkaaaaaabaaaaabbaaaccieaaaaaakakagciebaaaaakalahcnahagciecaaaaakcgckaaaabddaadaackaaaaaabhaaaabbaaadbgciceaaaaakhdedaaaaakakagacgpeeaaaaakaaaggpefaaaaakaaaggpegaaaaakaaadalclaaahckaaaabldaaeaakmadaaaabiaaaabbaaadhcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaacacbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiffadaaaaadbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnbicidfaaaaakgpdgaaaaakbpbjciccaaaaagcibkaaaaakbaabbpapciccaaaaagakaebpbnciccaaaaaggpdmaaaaakbgpoabbdapbbapcncpaaaebpbnciccaaaaaggpehaaaaakalaeahbpbnciccaaaaaggpblaaaaakfigpbmaaaaakakaebgahgpeiaaaaakbaacaaaccicmaaaaagamaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiliacaaaaaibpbociccaaaaagbhcicnaaaaaggpdcaaaaakanaibpbpciccaaaaagbgcicnaaaaaggpdcaaaaakbdaebbaebpbmciccaaaaagbpblciccaaaaaggpdnaaaaakbhinbgaaaaabbdbabbbabgbpakjnbbbagpbbaaaaakbdafhdcnaaaaakbdagaabbafbdbbbgbdbcdigjabaaaabbbbbbbcjkbdahaabbahgpdcaaaaakbhinbgaaaaabbdbabbbabgbpcjjnbbbagpejaaaaakbdaibbaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdicbabaaaaaebpajciccaaaaaggpdmaaaaakbgpoabbdapbbapcnbgaebpajciccaaaaagbpcaciccaaaaaggpdnaaaaakbaacaebpapciccaaaaaggpcoaaaaakcnakbbaiaegpdeaaaaakclabbhaabdapbbapcnafdimpaaaaaabpapciccaaaaagbdajbbaibpcbciccaaaaaggpdmaaaaakbgpoabbdapbbapcnciaabbaibpcbciccaaaaaggpekaaaaakalbbaiahbhfigpbmaaaaakbdajbbaibgahgpeiaaaaakbdaiaaadbbaibpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakagbpapciccaaaaaggpcoaaaaakbdapbbapcnceadbbaiaeaggpdnaaaaakbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakajbbaicibkaaaaakbbakbbajcicfaaaaagaaafcmalbbagbbakgpelaaaaakclabbhaabdapbbapcnakbbagbbakgpcpaaaaakaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapdkigpoppppafbgpoabbdapbbapdkmbaaaaaaaaadaebpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalagbpapciccaaaaaggpcoaaaaakbdapbbapcnbmadagbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalbbalcicjaaaaagbdambbambhinbgaaaaabbdbabbbabgbpdljnbbbagpbbaaaaakbdanaabbanbdbbbgbdbccldkbbbbbbbcjkbdaoaaaabbagbbaogpelaaaaakbdapbbapcnbcaabbaocibmaaaaagaabbaocidjaaaaakaaaaaanoafcgaaaanoaaaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapcnliaabgciemaaaaakaackabbaaaaaaaaagdadcfiiadafabaaaaabbddaadaapaaaaaaabjaaaabbaabpapciccaaaaaghdenaaaaakakacciebaaaaakbgpoabbdahbbahdkmdaaaaaaaaaccieoaaaaakalaaahbdaibgbdajcldcbbaibbajjkamagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaaaicibkaaaaakgpfaaaaaakcgbbajbhfibdajbbajbbaiiogjpoaebdahbbahcnmaaccifbaaaaakanaaajbdaibgbdajclfdbbaibbajjkbdaeaabbaecicjaaaaagbdafbbafbpapciccaaaaaggpcoaaaaakbdahbbahcnchagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaabbafcibkaaaaakgpfaaaaaakcgaabbajbhfibdajbbajbbaiiogjpoaebdahbbahcnjpaaaggpfcaaaaakbdagclaabbagckfohcdcabaahaiaakaaaaaebeiaalaaaaaebgiaamaaaaaeckbddaaeaaebaaaaaaabaaaabbaahoaoaaaaaebepoabbgpoabamaicnbmhoanaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaaoaaaaaehoaoaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabldaacaacoaaaaaabkaaaabbaaaahddkaaaaakakagciceaaaaakgpfdaaaaakaaagacgpdlaaaaakalahamnoalcgaabjciclaaaaagamnoaaaaaickaaaaabbaaaaaaaaaabaabpcaaaalccaaaaabbldaaeaafjaaaaaablaaaabbaaaaadbkciclaaaaagcibkaaaaakakblciclaaaaagaecnadadclagbjciclaaaaagaacibkaaaaakalacaggpehaaaaakaggpblaaaaakfiamacahaigpfeaaaaakanacaiajaifjgpeiaaaaakbdaenoahcgaaacbdaenoaaaabbaeckaaaaaaabbaaaaaaaaaabaaeneoaaahccaaaaabeghcabaoaahaiaanaaaaaebeiaaoaaaaaeckboacciccaaaaakckckacciccaaaaakaaaaaackaaaaaabddaacaadpaaaaaabmaaaabbaahoapaaaaaebecifiaaaaakbgpoabamaicnccaahcdkapaahanaahaaaaaccifjaaaaakgpfkaaaaakhdflaaaaakakagiaapaaaaaeaahoapaaaaaealclaaahckaabddaabaaalaaaaaabnaaaabbaahobaaaaaaeakclaaagckccaaaciabaaaaaaeckbddaabaaalaaaaaaboaaaabbaahobbaaaaaeakclaaagckfghddfaaaaagcifnaaaaakheaiaaaaaciabbaaaaaeckboaccifoaaaaakckaaaaaaleaaaaaamomkoploabaaaaaajbaaaaaagmfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofcgfhdgphfhcgdgffcgfgbgegfhccmcagnhdgdgphcgmgjgccmcafggfhchdgjgpgodndecodacodacodacmcaedhfgmhehfhcgfdngogfhfhehcgbgmcmcafahfgcgmgjgdelgfhjfegpglgfgodngcdhdhgbdfgddfdgdbdjdddegfdadidjcdfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofchfgohegjgngffcgfhdgphfhcgdgffdgfheacaaaaaaaaaaaaaaaaaaaaaafaebeefaebeefaleaaaaaaecfdekecabaaabaaaaaaaaaaamaaaaaahgdecodacodddadddbdjaaaaaaaaafaagmaaaaaabialaaaacdhoaaaaiealaaaabialaaaacdfdhehcgjgoghhdaaaaaaaajmbgaaaaheapaaaacdfffdaabacgaaaabaaaaaaacdehffejeeaaaaaacacgaaaanaaeaaaacdecgmgpgcaaaaaaaaaaaaaaacaaaaabfhbnkcajajabaaaaaapkcfddaabgaaaaabaaaaaadgaaaaaaaiaaaaaabbaaaaaadgaaaaaaffaaaaaafoaaaaaaaiaaaaaabgaaaaaaboaaaaaaacaaaaaaadaaaaaaaeaaaaaaabaaaaaaabaaaaaaacaaaaaaabaaaaaaaaaaakaaabaaaaaaaaaaagaaiaaahjaaakaajmaaihaaagaabbadaaadagaaecadcnadagaalmaekcaeagaaohaenfaeagaapoaenfaeagaablafnfaeagaadkafnfaeagaafdafnfaeagaagmafnfaeagaaihafnfaeagaakcafnfaeagaankafllafagaaooafllafagaapmafnfaeagaabfagnfaeagaaefagdcagelaafjagaaaaagaaiiaggiagagaakiaggiagagaamgaghjaaagaamlaghjaaagaaocagniagagaapkagooagagaaadahniagagaabaahniagagaaddahhjaaagaaeoahhjaaagaahjahhjaaagaajjahhjaaagaamgahniagakaaohahdcagagaaahaihjaaagaabbaihjaaagaafhaidmaiagaahbaihjaaagaajeaihjaaakaaoaainfaiagaacoajniagagaadiajniagagaafgajniagagaagdajniagagaajaajhjaaagaakbajooagakaapdajnlajagaaakakdcagagaachakgiagagaafcakhjaaagaafhakhjaaagaahlaknfaeakaakhakjbakakaamaakjbakakaanfakihaaaaaaaaaaabaaaaaaaaaaabaaabaaabaabaaabfaabjaaafaaabaaabaaabaabaaacaaabjaaafaaaiaabhaaabaabaaaclaabjaaafaaaiaabkaaiaabbaaadhaabjaaafaaakaaccaaaaaabaaadpaabjaaafaaanaaclaaaaaabaaaelaaffaaafaaapaadaaaaaabbaaaghaaffaaajaabbaadeaafbialeaaakaafbiamdaaakaafbiandaaakaabbaaocaabmaabbaapbaabpaabbaacbabcnaabbaaclabcnaabbaanlabbmaabbaaokabbpaabbaadmacbmaabbaaelacbpaabbaaggachiaabbaalpacbmaabbaamoacbpaabbaacbadkeaabbaaeoadkiaabbaajcadmgaafacaaaaaaaaajbaaababcdaaabaakacaaaaaaaaajgaaamabciaaacaanmcaaaaaaaaajgaabeabciaaadaacicbaaaaaaaajbaadfabdbaaaeaapmcbaaaaaaaajbaadmabdbaaagaaleccaaaaaaaajbaaedabdbaaaiaaoaccaaaaaaaajbaaeoabdbaaakaamicdaaaaaaaajbaafkabdhaaamaaoicdaaaaaaaajbaagaabdhaaapaaaiceaaaaaaaajbaaggabdhaabcaaceceaaaaaaaajbaagmabdhaabfaaebceaaaaaaaajbaahcabdoaabiaahiceaaaaaaaajbaahjabdoaabpaakpceaaaaaaaajbaaiaabdoaacgaaogceaaaaaaaajbaaihabdoaacnaacacfaaaaaaaajbaaioabekaadeaapacfaaaaaaaajbaakbabfaaadfaahmcgaaaaaaaajbaaklabfaaadgaalmcgaaaaaaaajbaalbabfaaadhaaemchaaaaaaaajgaalhabffaadiaaokcpaaaaaaaaigbilpabflaadkaamacpaaaaaaaajbbijcahgfaadkaapecpaaaaaaaajgaamfabciaadkaafedaaaaaaaaajbaaneabfpaadlaahddaaaaaaaaaigbilpabflaadnaahmdaaaaaaaaajbaapkabcdaadnaammdaaaaaaaaajgaaafacgfaadoaaoidaaaaaaaaajgaaakacgjaadoaacmdbaaaaaaaajgaabjacgjaadpaaiedbaaaaaaaajgaacfacgoaaeaaamadbaaaaaaaajgaaclachdaaebaaandcaaaaaaaaigbilpabflaaecaapldbaaaaaaaajbbijcahgfaaecaabidcaaaaaaaajbaaflaccdaaecaagidcaaaaaaaajbaagoachlaaedaaoedcaaaaaaaajbaahkacicaaeeaabmdeaaaaaaaajgaahpaciiaaefaamedfaaaaaaaajbaaikacgjaaeiaaomdfaaaaaaaajgaajjacipaaejaacedgaaaaaaaajgaakcacjfaaelaaomdjaaaaaaaajgaaldacciaaepaaoidkaaaaaaaajbbijcahgfaafaaaaadlaaaaaaaajbaanoaccdaafaaafadlaaaaaaaajgaaojacciaafbaajmdlaaaaaaaajgaapeacjnaafcaacgdmaaaaaaaaigbilpabflaaffaabedmaaaaaaaajbbijcahgfaaffaacodmaaaaaaaaidbilpabflaaffaadmdmaaaaaaaajdaifoadkmaaffaaiidmaaaaaaaajdaihcadlbaaffaajpdmaaaaaaaajdaihoadlgaaffaakidmaaaaaaaajgaikcadmkaafgaanfdmaaaaaaaaigbilpabflaafgaalpdmaaaaaaaajbbijcahgfaafgaaaaaaabaalgadaaaaabaalpadaaaaabaalpadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaankadaaaaacaannadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaapdadaaaaabaamiadaaaaabaapmadaaaaabaaaaaeaaaaabaapdadaaaaacaaaeaeaaaaabaaakaeaaaaabaaapaeaaaaacaabcaeaaaaabaabfaeaaaaabaaboaeaaaaabaacgaeaaaaabaadcaeaaaaabaacgaeaaaaabaadpaeaaaaabaaeiaeaaaaabaaeiaeaaaaabaaenaebabaacaalpadbabaadaafbaeaaaaabaalpadaaaaabaaakaeaaaaacaalpadaaaaabaaffaebabaacaafpaebabaadaaghaebabaaeaagoaeaaaaabaahlaeaaaaabaaiaaeaaaaabaaenaeaaaaabaaakaeaaaaacaaijaeaaaaadaajcaeaaaaabaajmaecjaalpabngaadbaalpabngaadjaalpabngaaebaalpabngaaejaalpabngaafbaalpabngaafjaalpabngaagbaalpabngaagjaalpabngaahbaalpabnlaahjaalpabngaaibaalpabngaaijaalpabngaajbaalpaboaaakbaalpabogaakjaalpabflaaljaancagolaambaaohaghdaamjaakcadababnbaalpabagabnjaablahanabnjaacfahflaanjaaclahflaaobaadlahbjabmjaaefahdeabljaafeahipaaljaaflahelabljaaggahepabojaahaahanabpbaahoahgjabobaaicahgpabljaafeahheabljaaikahanabajaalpabflaaljaajoahioabmjaakkahababmjaaldahjdabljaalnahkmabababmlahciaaajabopahlgabajabacaiflaabjabbkainbabbjabccainhabbjabdcainoabamaalpabflaaljaafoaikmabamaagfaipkabamaagjaiaaaccjablpabflaaljaaieaianabljaaieaiblacljaaijaikmabdbabjoaiclacdbablaaianabababmcaiciaaljaafeahdbacmbaamoaigjaadjablpabflaadjabokaidiacljaapjaikmabljaaacajdnacdjabakajedacajabbhajejacababbnajciaaebabohaghdaaebabegajfjacfbablpabgaacfjabgoajngaafjabcfahflaafjabclahflaaljaaheajgpacljaaggahheacljaahmajblacljaaieajgpacamaapjaihkacgbabjmajiaacgjablpabngaaebabkpajkeacgjabflahelabgjabliajkkacebablpajkeacajaahaahanabdjabmoajmdacljaaheajnbachbablpabedachjablpabflaaibablpabflaaajaaecakcaadijabgjakcgadijabieakcpadbjaalpabdfadkbablpabekadlbabocakljadbbaalpabflaaaiaaaeaaanaaaiaaaiaabcaaaiaaamaabhaaaoaabjabaaaaaoaabnabaaaaaoaadbabaaaaaoaadfabaaaaacaadjabneaacjaaodacfbadcoaablaabgaecoaacdaadeaecoaaclaadkaecoaaidaalbaecoaaedaadeaecoaahlaakiaecoaabdaaakaecoaaddaaakaecoaadlaaeiaecoaaalaamcadcoaafdaadeaecoaaflaagiaecoaaglaajcaecoaahdaajpaeejaaodacfbadodaaklacnpacodaaldacbgacodaallacbgacadabklacfkadadabllacbgaciaaeilabbgacpcaapkaabbabboabceabcjabdkabakaafeabfnabgdabhmabjjabkeabkiablbabloabocabokabagaccbacfaacgiacifaclbacmjacnhacdnadefadleadahaaabaaaiaaadaaaaaabbadlmaaaaaaikadmbaaaaaakoadmpaaacaadbaaadaaacaadcaaafaaabaaddaaafaaacaadeaaahaapdabaeiaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahjaaaaaaaaaaaaaaaaaaabaaaaaaopakaaaaaaaaaaaaaadmengpgehfgmgfdoaaffhagegbhegfcogfhigfaaahpnooaaffhagegbhegfaapocibncjbobpcmbcbcbcaaakcmcjbnbpcncnaocjcjcgaaakcmcjcbcmblchaabbbpbmanbpcococdcicbcnaaambpcncjcpcmbnbpcnaaffhagegbhegfcofahcgphagfhchegjgfhdaafdgfhehegjgoghhdaagnhdgdgphcgmgjgcaafdhjhdhegfgnaaepgcgkgfgdheaafdhjhdhegfgncoedgpgogggjghhfhcgbhegjgpgoaaebhahagmgjgdgbhegjgpgofdgfhehegjgoghhdecgbhdgfaapladaoanbjaoajbjpkbjplbdaopoaaplbdaopoanbjaoajbjpkbjbbajampnaapladaoanbjaoajbjpkbjbbajampnaaancocmcdcicbpnblcoblcnokojolaaancocmcdcicbpnblcoblcnokojolpkaapnbpbncjbobpdcokojojaappcdcgbpahpnooaacacdcgbpaocjancocmcdcicbaachbjcgajciplcdcocnaachbjcgolakcjdbbpcmaaagancccdcacoaaamancccdcacoaaamcjcoblcobpagbpcacoaapkboboapcicncdcbcibpboaachbooobjppaachbooobjabaachbooobjacaachbooobjadaachbooobjppppaachbooobjababaachbooobjacacaachbooobjadadaapmcjcidabpcmcoaocjbbcjcmbopkcmcmblddaabbcjcmboaocjacbpdcaaaocjacbpdcaacocjccbpdcaapocibncmddckcoaacogdhegphcaapnbpbncjbobppkcgckccblbmbpcoaaaocjplddcobpaaancocmcdcicbpnblcoblcnokojomaaancocmcdcicbpnblcoblcnokojompkaapnbpbncjbobpdcokojokaacobpcncoaacfcdcgcgakcmcjbnbpcncnpodcbpaacfcdcgcgakcmcjbnbpcncnaabobpcgblddaaakcmcjbnbpcncnadcnamcpcicicdcicbaaancocmcdcicbpnblcoblcnokojonaaancocmcdcicbpnblcoblcnokojonpkaapnbpbncjbobpdcokojolaaampoanaopkamaoaapkciblcgddcnbppkcmcbcnaaahblcdciaacpckboblcobpppcdcgbpaabnccbpbncfpncdcmbpbncocjcmddaaanbldabpppcdcgbpaacpckboblcobpadcicibpcmppcdcgbpcnaacbbpcopkcgcgppcdcgbpcnaaancocmcdcicbpnblcoblcnokojooaaancocmcdcicbpnblcoblcnokojoopkaapnbpbncjbobpdcokojomaacbbpcobbbpbmpnblcoblaacbbpcoaicjbobppnblcoblaafdhjhdhegfgncofcgfhdgphfhcgdgfhdaafcgfhdgphfhcgdgfengbgogbghgfhcaacmbpcncjcpcmbnbpahblciaafdhjhdhegfgncoehgmgpgcgbgmgjhkgbhegjgpgoaaedhfgmhehfhcgfejgogggpaacmbpcncjcpcmbnbppmcpcgcocpcmbpaacbbpcobjambpcncjcpcmbnbpahblciblcbbpcmaacbbpcobjpmcpcgcocpcmbpaacnbpcobjpmcpcgcocpcmbpaapmcpcgcocpcmbpaagegfgggbhfgmheejgohdhegbgogdgfaaghgfhefpeegfgggbhfgmheaaeegfgggbhfgmheaacdcibobpdcokojomaacacdcgbpakblcoccaacgbablcgcpbpaacdancccdcacoplcdcocnaacgbcaacgbdaadcaaddaadeaablaabmaabnaaboaacnaablbnaacnahbpcncnblcbbpaabobpbnaaccbpdcaacncoddckbpaaboblcoblaablokaablolaacdcibobpdcokojonaabpdcbpppcdcgbpaackcmcjbnbpcncnaiblchbpaaahcdcgcgcdcnbpbncjcibocnaacdcibobpdcokojooaablcmcbcnaacpcmcgaachboooaabncjcicacdcbapcmcgaabocdcmakblcoccaackbpcmcacddcaabobpcgbpcoajcmcoccbpcmcnaackblcoccaacdcibobpdcokojopaacicjbobpaiblchbpaacacdciblcgaicjbobpaadablcgcpbpaafdhjhdhegfgncofchfgohegjgngfcofggfhchdgjgpgogjgoghaafegbhcghgfheeghcgbgngfhhgphcglebhehehcgjgchfhegfaafdhjhdhegfgncofcgfgggmgfgdhegjgpgoaaebhdhdgfgngcgmhjfegjhegmgfebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeegfhdgdhcgjhahegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgogggjghhfhcgbhegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgnhagbgohjebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfahcgpgehfgdheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgphahjhcgjghgiheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfehcgbgegfgngbhcglebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedhfgmhehfhcgfebhehehcgjgchfhegfaafdhjhdhegfgncofchfgohegjgngfcoejgohegfhcgphafdgfhchggjgdgfhdaaedgpgnfggjhdgjgcgmgfebhehehcgjgchfhegfaaehhfgjgeebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfggfhchdgjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeggjgmgffggfhchdgjgpgoebhehehcgjgchfhegfaafdhjhdhegfgncoeegjgbghgogphdhegjgdhdaaeegfgchfghghgbgcgmgfebhehehcgjgchfhegfaaeegfgchfghghgjgoghengpgegfhdaafdhjhdhegfgncofchfgohegjgngfcoedgpgnhagjgmgfhcfdgfhchggjgdgfhdaaedgpgnhagjgmgbhegjgpgofcgfgmgbhigbhegjgpgohdebhehehcgjgchfhegfaafchfgohegjgngfedgpgnhagbhegjgcgjgmgjhehjebhehehcgjgchfhegfaaedgigbhcaafdhehcgjgoghaafdhagmgjheaafdhjhdhegfgncoejepaaeggjgmgfaaefhigjhdhehdaafdhjhdhegfgncofegfhiheaaefgogdgpgegjgoghaafdhehcgfgbgnfcgfgbgegfhcaafegfhihefcgfgbgegfhcaafcgfgbgefegpefgogeaaedgmgphdgfaaeegjhdhagphdgfaaedgpgohggfhcheaafegpecgpgpgmgfgbgoaaehgfheechjhegfhdaaejgohedgdeaaedgpgogdgbheaaghgfhefpemgfgoghhegiaafdhfgchdhehcgjgoghaafegpfdhehcgjgoghaaengbhegiaafagphhaafegpejgohedgdeaafegpemgphhgfhcaacogdgdhegphcaaechjhegfaafegpedgigbhcebhchcgbhjaaghgfhefpfffeegdiaaehgfhefdhehcgjgoghaaefgogehdfhgjhegiaafagbhegiaaehgfheeggjgmgfeogbgngffhgjhegigphfheefhihegfgohdgjgpgoaafahcgpgdgfhdhdaaehgfhefahcgpgdgfhdhdgfhdechjeogbgngfaaelgjgmgmaaefhigdgfhahegjgpgoaaeegbhegffegjgngfaaghgfhefpeogphhaaebgegeengjgmgmgjhdgfgdgpgogehdaaghgfhefpfegjgdglhdaafdhjhdhegfgncoedgpgmgmgfgdhegjgpgohdcoehgfgogfhcgjgdaaemgjhdhegadbaaefhbhfgbgmhdaaebgegeaafegpebhchcgbhjaafdfeebfegihcgfgbgeebhehehcgjgchfhegfaafehcgjgnaafdhegbhchehdfhgjhegiaaebhahaeegpgngbgjgoaaghgfhefpedhfhchcgfgoheeegpgngbgjgoaaghgfhefpecgbhdgfeegjhcgfgdhegphchjaaehgfheeggjgmgfeogbgngfaaeegfgmgfhegfaafdhjhdhegfgncoeogfheaafhgfgcedgmgjgfgoheaaeegphhgogmgpgbgefdhehcgjgoghaaedgpgohegbgjgohdaafcgfhagmgbgdgfaaeegphhgogmgpgbgeeggjgmgfaafdhegbhcheaaehgfheeegjhcgfgdhegphchjeogbgngfaaeegjhcgfgdhegphchjaaeegjhcgfgdhegphchjejgogggpaaedhcgfgbhegfeegjhcgfgdhegphchjaafdhehcgfgbgnfhhcgjhegfhcaafegfhihefhhcgjhegfhcaafhhcgjhegfaaejgogegfhiepggaafehcgjgnefgogeaaemgbhdheejgogegfhiepggaaefgohggjhcgpgogngfgoheaaefhigjheaafdhehcgjgoghechfgjgmgegfhcaaehgfheeggjgmgfhdaaebhahagfgogeaaehgfheeegjhcgfgdhegphcgjgfhdaahdgfhefpefgogdgpgegjgoghaafdhjhdhegfgncoedgpgegfeegpgncoedgpgnhagjgmgfhcaaehgfgogfhcgbhegfgeedgpgegfebhehehcgjgchfhegfaaeegfgchfghghgfhceogpgoffhdgfhcedgpgegfebhehehcgjgchfhegfaaedgpgnhagjgmgfhcehgfgogfhcgbhegfgeebhehehcgjgchfhegfaafcgfgggfhcgfgogdgfefhbhfgbgmhdaafehjhagfaafchfgohegjgngffehjhagfeigbgogegmgfaaehgfhefehjhagfeghcgpgneigbgogegmgfaaebhdhdgfgngcgmhjaaghgfhefpebhdhdgfgngcgmhjaafdhjhdhegfgncoedgpgnhagpgogfgoheengpgegfgmaaefgegjhegphcechcgphhhdgbgcgmgfebhehehcgjgchfhegfaaefgegjhegphcechcgphhhdgbgcgmgffdhegbhegfaafdgfhehegjgoghhdecgbhdgfaafdhjgogdgihcgpgogjhkgfgeaaffhagegbhegfcofahcgphagfhchegjgfhdcofcgfhdgphfhcgdgfhdcohcgfhdgphfhcgdgfhdaaaaaaaaaaiannceaaghaagcaaceaaghaagcaaghaagdaaghaageaaceaaghaagoaaghaaggaagiaageaagiaageaaghaagcaaghaagiaaghaaggaagdaagbaaghaagfaaghaagkaaghaagiaaghaaggaagiaageaagiaagfaaceaaghaagcaaghaagdaaghaageaaghaagfaaghaaggaaghaaghaaghaagiaaghaagjaaghaagkaaghaaglaaghaagmaaghaagnaaghaagoaaghaagpaaghaahaaagiaagbaagiaagcaagiaagdaagiaageaagiaagfaagiaaggaagiaaghaagiaagiaagiaagjaagiaagkaagiaaglaaceaageaagbaaceaaghaagdaaceaaghaageaaceaaghaagfaaceaaghaaggaaceaaghaaghaaaaepgfaageaaghaagjaaghaagcaagiaagdaaghaagiaaghaaggaagfaagoaaghaahaaaghaagfaagiaaggaaghaagnaaghaaggaaggaahaaaggaaghaageaagfaaceaagdaagpaaghaaggaagiaagjaaghaaggaaaaabaaimmngdaaggaagiaagpaaghaagfaagiaagbaageaagbaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagbaageaagbaageaagcaaggaagnaaggaagnaaceaagiaagfaaghaahaaaghaahaaaghaagnaagiaageaaggaagnaaggaagnaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaceaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagdaagbaaceaaggaagnaaggaagnaaceaaggaagnaaggaagnaaggaagnaaggaagnaaceaaggaagnaagdaagdaaceaaggaagdaagfaaggaaggaageaaggaagfaagfaagcaaggaagdaaggaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaaggaagnaaggaagnaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaagdaagoaageaagpaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagcaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaaghaaggaaghaagoaagiaagbaagiaagfaagiaagkaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaageaagdaaggaagnaaggaagnaaceaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaaceaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaagpaaghaaggaagiaagjaaghaaggaaceaaghaaghaaghaagcaaghaagnaagiaageaaghaaggaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagdaagpaagiaagfaagiaagjaagiaagfaaceaaggaagnaaghaagpaaceaaggaagnaagiaagdaaggaagnaaghaagpaaceaagdaagoaageaagpaaceaagpaaghaagkaagnaagjaagoaagpaaggaagjaaglaaglaagcaagpaaggaagkaagkaaglaagjaagpaagjaagmaaggaagjaagfaagpaaghaagmaaglaagkaagbaagpaagiaagkaagmaaglaagpaagpaaggaagmaagoaagkaaggaaceaagpaaggaagmaagpaagjaaggaagpaaghaagkaagmaagmaagfaagpaaghaagkaaghaagmaagbaagpaaghaagkaaghaagjaagiaagpaagfaagmaagmaagmaaghaaceaagdaahaaaceaagdaagjaaceaageaagmaaaaibdhghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaaggaaghaagcaagiaageaagiaagkaagfaagkaaghaageaaghaahaaaghaagpaagdaahaaagiaagiaaghaagkaaghaagmaaghaagkaagiaageaagdaahaaagfaahaaaghaagpaaghaagnaaghaagkaaghaagpaaghaaggaaggaageaaghaaggaagiaagdaaghaagkaaghaagcaaghaagnaaceaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaaceaagfaagpaaghaagcaaghaagoaaghaaggaageaagcaaceaaceaagdaagjaaceaagdaagkaaaadhffaahaaageaagbaaheaagfaacoaafaaahcaagpaahaaagfaahcaaheaagjaagfaahdaacoaafcaagfaahdaagpaahfaahcaagdaagfaahdaaaaaaaabnolpgapgdldjjenjajfdkblildjmcpaaaailhhkfmfgbjdeoaijacagaiaeaiaaaaaaaeaeaaaaaaaecaaaaaaaacagaoadagbnaoaeaaabaoaiaeaaabaoaoadagbnakafaaacakakakagaaadakakakakalaaahabbaakakakakakakakafaaabbnakaoaeaaabaoakafaaacaoaoaiadcaaaabafaaacafadadadaaaaabaeaaababaoaeaaababanaeaaabacaoacagacagaaabbnaobnaoafaaababbnaoagaaadabaoaoaoafaaacaoaoaoahaaaeabaoaoaoacagaaadaoaoaoacadagbcanadagbcbbaeaaaabcanaeaaaabcbbafaaababbcbbaeaiaabcanaeaiaabcbbadagbccaaeaaaabccaaeaiaabccaababaecaababaoaecaababacafcaababbbenaecaababaiagcaabbnaobnadahahaeaoaoacbnadagahaeaoaoaoacaeaaaabcgfagcaacabaobcgfadcaaaaoahahaeaobcgjaoacaeaaabacakafahadakakacaeahacakakakahaiakakakakakakakacafcaabbnafaobaahakbnakaiaibnakaiaiaibnafbnakacadcaaaaiaecaabaoaiaiahagaoakaiaiaoacafahadaoaoacafahadaoaoakafaaacanananaeaaabakanahaaaeaoaoaoaoaobbahaoaoaibnakaiakakakakakakakakaoacaecaaabnadafcaabaobnafakahagbnafbnadaiafaoacadahabafadahabaoaecaabacaoaeahacaoacahaaabbnbciaifaobcahagbnbciaifbciaifbciaijbnbciaifaiacafaaaabbiainagcaabbbiainanadcaaaakahahadakbbiainacaiahadbnbciaifacacagbfbciajbabaoafcaababbdaaafcaaabnbdaaapahagbfbciajbabaoaobnaoacbnaoaiaeabaaaaaaafcaabaobnadajahagaoaoaoaoacbnadafaaaabciajjagaaadaoaoaoaoaecaabaoaoafcaacaoaoaoafcaacabaoaoagaaabbciaifaoaiahaeaobciajnaoacagaaabbciakfaoahcaadabaoacbcgfagahacbciakjaoaecaabaiaoafcaacaoaiaiafcaabacbdaaaeaaababaiboahbdaoaiaoaoaobnaobfbciajbabaoaoaoaoaoaoaobnaoaoacbnadbnaoaiafaaabbnaoaoagcaabbcialfaobbahakbcialfbnaoaobnaoaoaoaoacbnaoaiafcaababbcgfahahadbciajnaoaoafcaacaiaoaiahahafaoaoaiaiaoeaabaaddfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofegpgpgmhdcofdhehcgpgoghgmhjfehjhagfgefcgfhdgphfhcgdgfechfgjgmgegfhcahdecodacodacodaaaaaafaaacacbmbmaiaaabbciamfbbiamjafcaaabciamnahcaacabaobciamnahahadbcanbcanacaeahabbcbbagcaababbbianfaiabaaacaaaaaaaaaafjabaaelengjgdhcgphdgpgghecofggjhdhfgbgmfdhehfgegjgpcoefgegjhegphchdcofdgfhehegjgoghhdeegfhdgjghgogfhccofdgfhehegjgoghhdfdgjgoghgmgfeggjgmgfehgfgogfhcgbhegphcaidbdbcodacodacodaaaaaaeahabbccaaiaaabbcianjbcianjehabaabkcoeoeffeeghcgbgngfhhgphcglcmfggfhchdgjgpgodnhgdecodaabaafeaobeeghcgbgngfhhgphcgleegjhdhagmgbhjeogbgngfbacoeoeffecaeghcgbgngfhhgphcglcadealabaaagffhagegbhegfaaaabnabaabiogjgihoelllgogjlleogjglaoiloifofikkjoflhkfofiflhaaaaafabaaaaaaaaanabaaaifdgdgjgngfgogdgfaaaabpabaabkedgphahjhcgjghgihecamckjcafdgdgjgngfgogdgfcadcdadbdhaaaacjabaacededgdgdadedhdddccndhgcdagccndedidggecndjdbdddfcngddgdedfggggdddggegddjdiaaaaamabaaahdccodacodacodaaaaaaiabaaahabaaaaaaaaaiabaaaiaaaaaaaaaaboabaaabaafeacbgfhhcgbhaeogpgoefhigdgfhahegjgpgofegihcgphhhdabaaaaaaaajojfjofjaaaaaaaaacaaaaaabmabaaaakegiaaaakeekaaaafcfdeefdjnebjceadkgjfbeflchpfhdlegpiimlbabaaaaaagfdkfmehgjheeegjhcfmffhagegbhegffmffhagegbhegfdcfmffhagegbhegffmgpgcgkfmeegfgchfghfmffhagegbhegfcohagegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoigjaaaaaaaaaaaaaaaaaaaapogjaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaaaaafpedgphcefhigfengbgjgoaagnhdgdgphcgfgfcogegmgmaaaaaaaaaappcfaacaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaabaaaaaaacaaaaaiabiaaaaaadiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaafaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaagiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaajaaaaaaakaiaaaaabaadaaaaaaaaaaaaaaaaaaaalaidaaaaokabaaaaaaaaaaaaaaaaaaaabaaddeaaaaaafgaafdaafpaafgaaefaafcaafdaaejaaepaaeoaafpaaejaaeoaaegaaepaaaaaaaaaalnaeoppoaaaaabaaaaaaacaaaaaaaaaaaaaaacaaaaaaaaaadpaaaaaaaaaaaaaaaeaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeaaaaaaabaafgaagbaahcaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaaaaaceaaaeaaaaaafeaahcaagbaagoaahdaagmaagbaaheaagjaagpaagoaaaaaaaaaaaaaalaaehaacaaaaabaafdaaheaahcaagjaagoaaghaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaemacaaaaabaadaaadaaadaaadaaadaaadeaagcaadaaaaaaacmaaajaaabaaedaagpaagnaagnaagfaagoaaheaahdaaaaaaihgfpgeopegglagfifipkjfcoffnhhfbaaaaaaaadeaaajaaabaaedaagpaagnaahaaagbaagoaahjaaeoaagbaagnaagfaaaaaaaaaafdaagdaagjaagnaagfaagoaagdaagfaaaaaaaaaadiaaahaaabaaegaagjaagmaagfaaeeaagfaahdaagdaahcaagjaahaaaheaagjaagpaagoaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadaaaaiaaabaaegaagjaagmaagfaafgaagfaahcaahdaagjaagpaagoaaaaaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaalaaabaaejaagoaaheaagfaahcaagoaagbaagmaaeoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaafiaabkaaabaaemaagfaaghaagbaagmaaedaagpaahaaahjaahcaagjaaghaagiaaheaaaaaaedaagpaahaaahjaahcaagjaaghaagiaaheaacaaakjaacaaafdaagdaagjaagnaagfaagoaagdaagfaacaaadcaadaaadbaadhaaaaaaeaaaalaaabaaepaahcaagjaaghaagjaagoaagbaagmaaegaagjaagmaagfaagoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaadaaaahaaabaafaaahcaagpaageaahfaagdaaheaaeoaagbaagnaagfaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadeaaaiaaabaafaaahcaagpaageaahfaagdaaheaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaaiaaabaaebaahdaahdaagfaagnaagcaagmaahjaacaaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaaoplllpdmdphigngmcahggfhchdgjgpgodnccdbcodacccagfgogdgpgegjgoghdnccfffeegcndicccahdhegbgogegbgmgpgogfdncchjgfhdccdpdoanakdmgbhdhdgfgngcgmhjcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdbcccagngbgogjgggfhdhefggfhchdgjgpgodnccdbcodaccdoanakcacadmgbhdhdgfgngcgmhjejgegfgohegjhehjcahggfhchdgjgpgodnccdbcodacodacodacccagogbgngfdnccenhjebhahagmgjgdgbhegjgpgocogbhahacccpdoanakcacadmhehchfhdheejgogggpcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdcccdoanakcacacacadmhdgfgdhfhcgjhehjdoanakcacacacacacadmhcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhdcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgddccdoanakcacacacacacacacadmhcgfhbhfgfhdhegfgeefhigfgdhfhegjgpgoemgfhggfgmcagmgfhggfgmdnccgbhdejgohggpglgfhccccahfgjebgdgdgfhdhddnccgggbgmhdgfcccpdoanakcacacacacacadmcphcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhddoanakcacacacadmcphdgfgdhfhcgjhehjdoanakcacadmcphehchfhdheejgogggpdoanakdmcpgbhdhdgfgngcgmhjdoanakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaamaaaaaabadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
		
    }


}

示例demo
示例源码

开源地址:https://gitee.com/scimence/UpdateDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值