Browse Source

first commit

felixyin 8 months ago
commit
3b58be9a02

+ 63 - 0
.gitattributes

@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs     diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following 
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln       merge=binary
+#*.csproj    merge=binary
+#*.vbproj    merge=binary
+#*.vcxproj   merge=binary
+#*.vcproj    merge=binary
+#*.dbproj    merge=binary
+#*.fsproj    merge=binary
+#*.lsproj    merge=binary
+#*.wixproj   merge=binary
+#*.modelproj merge=binary
+#*.sqlproj   merge=binary
+#*.wwaproj   merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg   binary
+#*.png   binary
+#*.gif   binary
+
+###############################################################################
+# diff behavior for common document formats
+# 
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the 
+# entries below.
+###############################################################################
+#*.doc   diff=astextplain
+#*.DOC   diff=astextplain
+#*.docx  diff=astextplain
+#*.DOCX  diff=astextplain
+#*.dot   diff=astextplain
+#*.DOT   diff=astextplain
+#*.pdf   diff=astextplain
+#*.PDF   diff=astextplain
+#*.rtf   diff=astextplain
+#*.RTF   diff=astextplain

+ 261 - 0
.gitignore

@@ -0,0 +1,261 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+#*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc

+ 11 - 0
README.md

@@ -0,0 +1,11 @@
+# shuichan_shell
+
+#### 介绍
+win10桌面封装
+
+## 软件架构
+.net 
+嵌入cef浏览器
+扫描枪扫码全局处理
+桌面图标处理
+

+ 55 - 0
exe.iss

@@ -0,0 +1,55 @@
+; Script generated by the Inno Setup Script Wizard.
+; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
+
+#define MyAppName "佰安客工厂管理系统"
+#define MyAppVersion "1.0.3"
+#define MyAppPublisher "青岛前途软件技术有限公司"  
+#define MyAppURL "http://www.qdqtrj.com"
+#define MyAppExeName "佰安客工厂管理系统.exe"
+                                                 
+[Setup]
+; NOTE: The value of AppId uniquely identifies this application.
+; Do not use the same AppId value in installers for other applications.
+; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
+AppId={{CCD763F3-E2F1-12B9-904A-82965027F36B}
+AppName={#MyAppName}
+AppVersion={#MyAppVersion}
+;AppVerName={#MyAppName} {#MyAppVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\BakFactoryManage
+DefaultGroupName=佰安客软件
+DisableProgramGroupPage=yes
+OutputDir=C:\workspace\shuichan_shell\setup
+OutputBaseFilename=佰安客工厂管理系统-安装文件
+SetupIconFile=C:\workspace\shuichan_shell\shell_ui\logo.ico
+;Password=bak.19
+;Encryption=yes
+Compression=lzma
+SolidCompression=yes
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+Name: "ChineseSimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
+
+[Tasks]
+Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
+Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
+
+[Files]
;Source: "C:\workspace\shuichan_shell\shell_ui\bin\x86\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+;Source: "C:\workspace\shuichan_shell\shell_ui\bin\x64\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "C:\workspace\shuichan_shell\shell_ui\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+
+[Icons]
+Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
+Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
+Name: "{group}\佰安客工厂管理系统"; Filename: "{app}\佰安客工厂管理系统.exe"; WorkingDir: "{app}"
+Name: "{group}\卸载"; Filename: "{app}\unins000.exe"; WorkingDir: "{app}"
+Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
+
+;[Run]
+;Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
+

BIN
setup/佰安客工厂管理系统-安装文件.exe


+ 6 - 0
shell_ui/App.config

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
+    </startup>
+</configuration>

+ 253 - 0
shell_ui/Class1.cs

@@ -0,0 +1,253 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace felixyin
+{
+    class UsbScanerHook
+    {
+        public delegate void ScanerDelegate(ScanerCodes codes);
+        public event ScanerDelegate ScanerEvent;
+        delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
+        private int hKeyboardHook = 0;
+        private ScanerCodes codes = new ScanerCodes();
+        private HookProc hookproc;
+        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
+        private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
+        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
+        private static extern bool UnhookWindowsHookEx(int idHook);
+        [DllImport("user32", EntryPoint = "GetKeyNameText")]
+        private static extern int GetKeyNameText(int IParam, StringBuilder lpBuffer, int nSize);
+        [DllImport("user32", EntryPoint = "GetKeyboardState")]
+        private static extern int GetKeyboardState(byte[] pbKeyState);
+        [DllImport("user32", EntryPoint = "ToAscii")]
+        private static extern bool ToAscii(int VirtualKey, int ScanCode, byte[] lpKeySate, ref uint lpChar, int uFlags);
+        [DllImport("kernel32.dll")]
+        public static extern IntPtr GetModuleHandle(string name);
+        public UsbScanerHook()
+        {
+        }
+        public bool Start()
+        {
+            if (hKeyboardHook == 0)
+            {
+                hookproc = new HookProc(KeyboardHookProc);
+                //GetModuleHandle 函数 替代 Marshal.GetHINSTANCE
+                //防止在 framework4.0中 注册钩子不成功
+                IntPtr modulePtr = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
+                //WH_KEYBOARD_LL=13
+                //全局钩子 WH_KEYBOARD_LL
+                //  hKeyboardHook = SetWindowsHookEx(13, hookproc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
+                hKeyboardHook = SetWindowsHookEx(13, hookproc, modulePtr, 0);
+            }
+            return (hKeyboardHook != 0);
+        }
+        public bool Stop()
+        {
+            if (hKeyboardHook != 0)
+            {
+                return UnhookWindowsHookEx(hKeyboardHook);
+            }
+            return true;
+        }
+        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
+        {
+            EventMsg msg = (EventMsg)Marshal.PtrToStructure(lParam, typeof(EventMsg));
+            codes.Add(msg);
+            if (ScanerEvent != null && msg.message == 13 && msg.paramH > 0 && !string.IsNullOrEmpty(codes.Result))
+            {
+                ScanerEvent(codes);
+            }
+            return 0;
+        }
+        public class ScanerCodes
+        {
+            private int ts = 50; // 指定输入间隔为300毫秒以内时为连续输入
+            private List<List<EventMsg>> _keys = new List<List<EventMsg>>();
+            private List<int> _keydown = new List<int>();   // 保存组合键状态
+            private List<string> _result = new List<string>();  // 返回结果集
+            private DateTime _last = DateTime.Now;
+            private byte[] _state = new byte[256];
+            private string _key = string.Empty;
+            private string _cur = string.Empty;
+            public EventMsg Event
+            {
+                get
+                {
+                    if (_keys.Count == 0)
+                    {
+                        return new EventMsg();
+                    }
+                    else
+                    {
+                        return _keys[_keys.Count - 1][_keys[_keys.Count - 1].Count - 1];
+                    }
+                }
+            }
+            public List<int> KeyDowns
+            {
+                get
+                {
+                    return _keydown;
+                }
+            }
+            public DateTime LastInput
+            {
+                get
+                {
+                    return _last;
+                }
+            }
+            public byte[] KeyboardState
+            {
+                get
+                {
+                    return _state;
+                }
+            }
+            public int KeyDownCount
+            {
+                get
+                {
+                    return _keydown.Count;
+                }
+            }
+            public string Result
+            {
+                get
+                {
+                    if (_result.Count > 0)
+                    {
+                        return _result[_result.Count - 1].Trim();
+                    }
+                    else
+                    {
+                        return null;
+                    }
+                }
+            }
+            public string CurrentKey
+            {
+                get
+                {
+                    return _key;
+                }
+            }
+            public string CurrentChar
+            {
+                get
+                {
+                    return _cur;
+                }
+            }
+            public bool isShift
+            {
+                get
+                {
+                    return _keydown.Contains(160);
+                }
+            }
+            public void Add(EventMsg msg)
+            {
+                #region 记录按键信息
+                // 首次按下按键
+                if (_keys.Count == 0)
+                {
+                    _keys.Add(new List<EventMsg>());
+                    _keys[0].Add(msg);
+                    _result.Add(string.Empty);
+                }
+                // 未释放其他按键时按下按键
+                else if (_keydown.Count > 0)
+                {
+                    _keys[_keys.Count - 1].Add(msg);
+                }
+                // 单位时间内按下按键
+                else if (((TimeSpan)(DateTime.Now - _last)).TotalMilliseconds < ts)
+                {
+                    _keys[_keys.Count - 1].Add(msg);
+                }
+                // 从新记录输入内容
+                else
+                {
+                    _keys.Add(new List<EventMsg>());
+                    _keys[_keys.Count - 1].Add(msg);
+                    _result.Add(string.Empty);
+                }
+                #endregion
+                _last = DateTime.Now;
+                #region 获取键盘状态
+                // 记录正在按下的按键
+                if (msg.paramH == 0 && !_keydown.Contains(msg.message))
+                {
+                    _keydown.Add(msg.message);
+                }
+                // 清除已松开的按键
+                if (msg.paramH > 0 && _keydown.Contains(msg.message))
+                {
+                    _keydown.Remove(msg.message);
+                }
+                #endregion
+                #region 计算按键信息
+                int v = msg.message & 0xff;
+                int c = msg.paramL & 0xff;
+                StringBuilder strKeyName = new StringBuilder(500);
+                if (GetKeyNameText(c * 65536, strKeyName, 255) > 0)
+                {
+                    _key = strKeyName.ToString().Trim(new char[] { ' ', '\0' });
+                    GetKeyboardState(_state);
+                    if (_key.Length == 1 && msg.paramH == 0)
+                    {
+                        // 根据键盘状态和shift缓存判断输出字符
+                        _cur = ShiftChar(_key, isShift, _state).ToString();
+                        _result[_result.Count - 1] += _cur;
+                    }
+                    else
+                    {
+                        _cur = string.Empty;
+                    }
+                }
+                #endregion
+            }
+            private char ShiftChar(string k, bool isShiftDown, byte[] state)
+            {
+                bool capslock = state[0x14] == 1;
+                bool numlock = state[0x90] == 1;
+                bool scrolllock = state[0x91] == 1;
+                bool shiftdown = state[0xa0] == 1;
+                char chr = (capslock ? k.ToUpper() : k.ToLower()).ToCharArray()[0];
+                if (isShiftDown)
+                {
+                    if (chr >= 'a' && chr <= 'z')
+                    {
+                        chr = (char)((int)chr - 32);
+                    }
+                    else if (chr >= 'A' && chr <= 'Z')
+                    {
+                        chr = (char)((int)chr + 32);
+                    }
+                    else
+                    {
+                        string s = "`1234567890-=[];',./";
+                        string u = "~!@#$%^&*()_+{}:\"<>?";
+                        if (s.IndexOf(chr) >= 0)
+                        {
+                            return (u.ToCharArray())[s.IndexOf(chr)];
+                        }
+                    }
+                }
+                return chr;
+            }
+        }
+        public struct EventMsg
+        {
+            public int message;
+            public int paramL;
+            public int paramH;
+            public int Time;
+            public int hwnd;
+        }
+    }
+}

+ 145 - 0
shell_ui/MainForm.Designer.cs

@@ -0,0 +1,145 @@
+using CefSharp;
+using felixyin.Properties;
+using System;
+using System.Drawing;
+
+namespace felixyin
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent(String url)
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+            this.webBrowser1 = new CefSharp.WinForms.ChromiumWebBrowser(url)
+            {
+                MenuHandler = new MenuHandler(),
+                DownloadHandler = new DownloadHander(),
+
+            };
+            this.webBrowser1.ContextMenu = null;
+            this.SuspendLayout();
+            // 
+            // webBrowser1
+            // 
+            this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.webBrowser1.Location = new System.Drawing.Point(0, 0);
+            this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
+            this.webBrowser1.Name = "webBrowser1";
+            this.webBrowser1.Size = new System.Drawing.Size(1184, 562);
+            this.webBrowser1.TabIndex = 0;
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.SystemColors.ControlLight;
+            this.ClientSize = new System.Drawing.Size(1184, 562);
+            this.Controls.Add(this.webBrowser1);
+            // this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.logo")));
+            // this.Icon = MainForm.GetIconFromEmbeddedResource("logo", new Size(16, 16));
+            this.Icon = new Icon(Resources.logo, new Size(64, 64));
+            this.MinimumSize = new System.Drawing.Size(1200, 572);
+            this.Name = "MainForm";
+            this.Opacity = 0.00D;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "佰安客工厂管理系统 - 水产";
+            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing_1);
+            this.ResumeLayout(false);
+
+        }
+        /* public static Icon GetIconFromEmbeddedResource(string name, Size size)
+         {
+             var asm = System.Reflection.Assembly.GetExecutingAssembly();
+             var rnames = asm.GetManifestResourceNames();
+             var tofind = "." + name + ".ico";
+             foreach (string rname in rnames)
+             {
+                 if (rname.EndsWith(tofind, StringComparison.CurrentCultureIgnoreCase))
+                 {
+                     using (var stream = asm.GetManifestResourceStream(rname))
+                     {
+                         return new Icon(stream, size);
+                     }
+                 }
+             }
+             throw new ArgumentException("Icon not found");
+         }*/
+
+        #endregion
+
+        public CefSharp.WinForms.ChromiumWebBrowser webBrowser1;
+    }
+
+    internal class DownloadHander : IDownloadHandler
+    {
+        public event EventHandler<DownloadItem> OnBeforeDownloadFired;
+
+        public event EventHandler<DownloadItem> OnDownloadUpdatedFired;
+
+        public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
+        {
+            OnBeforeDownloadFired?.Invoke(this, downloadItem);
+
+            if (!callback.IsDisposed)
+            {
+                using (callback)
+                {
+                    callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
+                }
+            }
+        }
+
+        public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
+        {
+            OnDownloadUpdatedFired?.Invoke(this, downloadItem);
+        }
+    }
+
+    internal class MenuHandler : IContextMenuHandler
+    {
+        public void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
+        {
+            model.Clear();
+        }
+
+        public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
+        {
+            return false;
+        }
+
+        public void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
+        {
+        }
+
+        public bool RunContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
+        {
+            return false;
+        }
+    }
+}
+

+ 275 - 0
shell_ui/MainForm.cs

@@ -0,0 +1,275 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Windows.Forms;
+using System.Data;
+using System.Text;
+using System.ComponentModel;
+using Microsoft.Win32;
+using Newtonsoft.Json;
+using System.Net;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
+using CefSharp;
+using System.Resources;
+using System.Drawing;
+using CefSharp.WinForms;
+using System.Reflection;
+
+namespace felixyin
+{
+    public class JsEvent
+    {
+        /*  private BackgroundWorker backgroundWorker1;
+        public JsEvent()
+        {
+               this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
+        }
+        */
+
+        public string MessageText { get; set; }
+
+        public void ShowTest()
+        {
+            MessageBox.Show("this in C#.\n\r" + MessageText);
+        }
+        public void ShowTestArg(string ss)
+        {
+            MessageBox.Show("收到JS带参数调用\n\r" + ss);
+        }
+        public void domReady()
+        {
+            Program.showMainForm();
+            //this.backgroundWorker1.RunWorkerAsync();
+        }
+
+        public void toggleDevTools()
+        {
+            Program.toggleDevTools();
+        }
+        /*
+        private void backgroundWorker1_RunWorkerCompleted(
+            object sender,
+            RunWorkerCompletedEventArgs e)
+        {
+            Program.showMainForm();
+        }
+        */
+
+    }
+
+    public partial class MainForm : Form
+    {
+
+        private UsbScanerHook listener = new UsbScanerHook();
+        private NotifyIcon nIcon;
+        private ContextMenu cm;
+
+
+        public MainForm()
+        {
+            Control.CheckForIllegalCrossThreadCalls = false;
+
+            
+
+            var settings = new CefSettings();
+
+            // Set BrowserSubProcessPath based on app bitness at runtime
+            settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
+                                                   Environment.Is64BitProcess ? "x64" : "x86",
+                                                   "CefSharp.BrowserSubprocess.exe");
+
+            // Make sure you set performDependencyCheck false
+            // var osVersion = Environment.OSVersion;
+                // Disable GPU in WPF and Offscreen examples until #1634 has been resolved6                 
+            // settings.CefCommandLineArgs.Add("disable-gpu", "1");
+
+            Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
+           // Cef.EnableHighDPISupport();
+
+            string url = "http://gongchang.qdbak.com/";
+            InitializeComponent(url);
+            // FIXME 生产环境,需要修改为4404
+            // this.webBrowser1.Load(url); // 已废弃
+
+            //this.webBrowser1.ContextMenu = new ContextMenu();
+
+            // js 调用 .net
+            CefSharpSettings.LegacyJavascriptBindingEnabled = true;
+            this.webBrowser1.RegisterJsObject("jsObj", new JsEvent(), new CefSharp.BindingOptions() { CamelCaseJavascriptNames = false }); //交互数据  
+
+
+            showNotifyIcon();
+            verifyStartSuccess(url);
+        }
+
+        private void verifyStartSuccess(string url)
+        {
+            bool isOk = ResponseOk(url);
+          
+            if (!isOk)
+            {
+                DialogResult result = MessageBox.Show("程序发生未知错误,请联系管理员!", "佰安客科技提示您", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                if (result == DialogResult.OK)
+                {
+                    System.Environment.Exit(0);
+                }
+            }
+            this.listener.ScanerEvent += Listener_ScanerEvent;
+            listener.Start();
+        }
+
+        private void showNotifyIcon()
+        {
+            this.nIcon = new NotifyIcon();
+            ResourceManager manager = new ResourceManager(typeof(felixyin.Properties.Resources));
+
+            Icon icon = (Icon)manager.GetObject("logo");
+            this.nIcon.Text = "佰安客工厂管理系统";//鼠标悬停系统托盘上显示  
+            this.nIcon.Icon = icon;//图标  
+            this.nIcon.Visible = true;//设置图标可见  
+
+
+            cm = new ContextMenu();
+            MenuItem guanYu = new MenuItem("关于");
+            guanYu.Click += new EventHandler(this.guanYu_Click);
+            cm.MenuItems.Add(guanYu);//添加托盘菜单项  
+
+            MenuItem addAutoStart = new MenuItem("设置随系统自动启动");
+            addAutoStart.Click += new EventHandler(this.addAutoStart_Click);
+            cm.MenuItems.Add(addAutoStart);
+
+            MenuItem delAutoStart = new MenuItem("取消随系统自动启动");
+            delAutoStart.Click += new EventHandler(this.delAutoStart_Click);
+            cm.MenuItems.Add(delAutoStart);
+
+            MenuItem clearCache = new MenuItem("强制刷新(无缓存)");
+            clearCache.Click += new EventHandler(this.delClearCache_Click);
+            cm.MenuItems.Add(clearCache);
+
+            MenuItem exit = new MenuItem("退出");
+            exit.Click += new EventHandler(this.exit_Click);
+            cm.MenuItems.Add(exit);
+
+            nIcon.ContextMenu = cm;//托盘菜单项在图标右键时显示  
+
+            this.nIcon.ShowBalloonTip(0x2710, "佰安客科技提示您", "程序正在初始化,大约需要10秒。右键点击图标可显示菜单,左键双击可显示或隐藏程序。", ToolTipIcon.Info);//托盘图标加载时提示  
+
+            nIcon.Click += new EventHandler(this.nIcon_Click);//委托点击事
+            nIcon.MouseDoubleClick += new MouseEventHandler(this.nIcon_MouseDoubleClick);
+        }
+
+        private void exit_Click(object sender, EventArgs e)
+        {
+            Application.Exit();
+        }
+
+        private void delAutoStart_Click(object sender, EventArgs e)
+        {
+            Program.AutoStart(false);
+            MessageBox.Show("取消随机自动启动会导致无法接收扫码枪信号!!!\n随系统自动启动已取消", "佰安客科技提示您");
+        }
+
+        private void addAutoStart_Click(object sender, EventArgs e)
+        {
+            Program.AutoStart(true);
+            MessageBox.Show("已开启随系统自动启动", "佰安客科技提示您");
+        }
+
+        private void delClearCache_Click(object sender, EventArgs e)
+        {
+            this.webBrowser1.Reload(true);
+            MessageBox.Show("强制刷新需要10秒以上的执行时间,请耐心等待!", "佰安客科技提示您");
+        }
+
+        private void guanYu_Click(object sender, EventArgs e)
+        {
+            System.Diagnostics.Process.Start("http://www.qdqtrj.com");
+        }
+
+        private void nIcon_Click(object sender, EventArgs e)
+        {
+            // System.Diagnostics.Process.Start("http://www.qdqtrj.com");
+
+        }
+
+        Boolean isShow = true;
+
+        private void nIcon_MouseDoubleClick(object sender, MouseEventArgs e)
+        {
+            // nIcon.Visible = false;
+            if (isShow)
+            {
+                this.Hide();
+                this.isShow = false;
+            }
+            else
+            {
+                this.isShow = true;
+                this.Show();
+                WindowState = FormWindowState.Maximized;
+                this.Focus();
+            }
+        }
+
+        private void Listener_ScanerEvent(UsbScanerHook.ScanerCodes codes)
+        {
+            // Console.WriteLine(codes.Result);
+            // .net 调用 js
+            this.webBrowser1.GetBrowser().MainFrame.EvaluateScriptAsync("scanningGunListener( '" + codes.Result + "')");//运行页面上js的testArg带参数的方法
+        }
+
+        /// <summary>   
+        /// Get方式获取url地址输出内容   
+        /// </summary> /// <param name="url">url</param>   
+        public static bool ResponseOk(String url)
+        {
+            try
+            {
+                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
+                webRequest.Method = "GET";
+                HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
+                webResponse.Close();
+                Console.WriteLine(webResponse.StatusCode);
+                return true;
+            }
+            catch
+            {
+                return false;
+            }
+
+        }
+
+        private Boolean isCls = false;
+
+        public void closeWin()
+        {
+            isCls = true;
+            this.Close();
+        }
+
+        private void Form1_FormClosing_1(object sender, FormClosingEventArgs e)
+        {
+            if (isCls)
+            {
+                e.Cancel = false;
+            }
+            else
+            {
+
+                // this.webBrowser1.Document.InvokeScript("beforeClose");
+                DialogResult result = MessageBox.Show("关闭后扫码枪无法与系统连接,您确定要关闭吗!!!", "佰安客科技提示您", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
+                if (result == DialogResult.OK)
+                {
+                    this.nIcon.Visible = false;
+                    e.Cancel = false;  //点击OK  
+                    this.listener.Stop();
+                }
+                else
+                {
+                    e.Cancel = true;
+                }
+            }
+        }
+    }
+}

+ 1253 - 0
shell_ui/MainForm.resx

@@ -0,0 +1,1253 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABILAAASCwAAAAAAAAAA
+        AABFJg//SisU/0orFP9MLRH/UDER/1MzFP9SNBT/UTUW/1E1Fv9UOBn/Ujcb/00yF/9bQCX/XUAk/1Y4
+        Hf9aPCD/Wz0i/1o8If9XOR7/WTsg/1k+I/9dQif/XUIn/1xCJv9gRSn/YUcr/19GJv9eRSL/XUUi/11F
+        JP9fSS3/YUsv/2lUNv9oWj7/c11M/4NsTv+IdE3/iHZV/4+CZf+Cc1H/dF86/2JPNv9DMCD/TkI3/15Q
+        TP9OPkD/NSQk/yoYF/80IB//Qjs4/5KYk/+Yjov/VkRC/z80Mf9iUlH/NyIh/y8cG/8uHRz/MiAf/zAf
+        G/8rGxX/Nych/1pKRP8wIBr/NiAb/zwhHf9AIh7/Oh4a/1pEP/+CeG7/b2VY/15COP9fQTz/RTEw/z8q
+        Kf9AKyr/PCcm/zsmJf87JiX/NiUj/zsnJv9AJSX/QCUl/zomJf87JiX/PSko/z0wLv9pXVv/WEtJ/1BF
+        Pv9fU0//dWZp/5WKiv+MhH//WUtD/0g4K/9PPi//QjAn/3FeWf+Yjoj/TUA6/z8tJ/9FMi3/QjAq/z8s
+        J/89Kyb/Oyko/z0rKv9aSEf/VEA//zsmJf89KCj/Oygm/z4sK/89KDD/PSkw/0AtMP9EMTT/RTI0/0Mx
+        L/9EMTP/Pyoz/11NUf9oW1z/PS8y/0w9P/9QPEH/RC84/00sD/9SMBT/VTMY/1k2FP9bOBL/XzsV/107
+        GP9bORz/Wjga/1k4Gv9QNRr/YEYr/2VLMP9bQB7/Wj4b/1o+G/9ZPBz/Wjwh/1o8If9aPCH/XUEn/2BF
+        Kv9gRCr/YUgn/2JKJv9iSib/Ykgq/2JHLP9eQyj/fWNI/3VfQ/9fSS3/Xkkr/087IP9QMyT/a00v/3di
+        Of95ZT3/e2E0/3pgLf92XzH/Vjsm/zMXE/8nFgj/KhgO/y8aF/8wHRz/NCMi/zUiIf93bWv/ZGJf/zwr
+        Kv9JNjX/ZGFd/5mQjv80JST/MyAg/y0bGv8uHBv/MiEd/0c2MP9HNzH/QTIs/y8fGv82IBz/PSEd/0Ij
+        IP8+Ih//SjQw/3htY/9tY1b/UDcs/z0iHP9SPj7/Qy4t/zomJf87JiX/PSgo/z4pKP84JiX/OSUk/z4k
+        JP9BJif/OyYl/z0oJ/9BLSz/Rzo4/15RT/9zZmT/dmpj/3hrZ/+MfIH/loyN/5CJhf9rXVb/cGFT/4V1
+        Zf9TQDf/aFVR/5+clP+Ig3v/XlBK/0o1MP9eRUD/WD87/0UuK/8+LCv/QC4t/15MS/9MODf/OiUk/z0n
+        Jv85JiP/Py4t/0cyOv88Jy7/Pist/0AtMP9DMDL/QTAt/0EuMf9BKzX/QTI1/0k8Pf9AMzT/STk7/0cz
+        OP9ELzj/XjYZ/184Gf9kPR3/ZkEd/2Q/Gf9kPxn/Yz4b/2E9Hf9hPBz/YDwc/1k6Hv9lRir/YUMm/1Q5
+        F/9XPhr/VjwY/1c7HP9bPSP/Wz0j/1o9Iv9cQiP/X0Yn/2FHKP9iSib/Yksl/2RNJ/9jSyn/Y0kq/2VL
+        L/9vVTn/emJG/2lQNv9bQin/X0Ys/1g6Jv9aOyD/b1kt/3dgL/+BXS//g2Iu/29YK/9BJBT/NhoV/zMg
+        EP80Ihb/MiAa/zIgHv8xHx7/NSMi/0EvLf82JSL/UUNA/4F3dP/Hwr7/bGRg/0c7OP9PQT3/Xk1L/0cz
+        Mf9URED/X1FL/1JCPP8zIhz/NyYe/zYiG/87Ix3/QCQe/0MoIv86Ix3/UTYu/5Z8cv9kU0f/NSMb/1Q8
+        O/9XPz3/QCgm/0QvLf88JyX/QSwq/zsqJ/87KCX/QCYk/0MpKP8/Kyr/Qiws/0AtK/9ANDD/c2dl/4J4
+        d/93b2r/d21o/4l8ef95bGj/YFRM/0w9M/9WRTr/XEo//0k2L/9TQDv/jIN9/6Gdlv+OjIT/QTMt/0wy
+        Lv9OMi7/SzIu/0IxLv9BLSv/Qiwq/0AqKf89KSj/Oyoo/zspJ/87KCf/SDE5/0ArMv88KSz/QC0w/0Iv
+        Mv9CMC//QS4x/0EtM/87KS7/Pi4y/0MyNv9ALzL/Qi4z/0QvOP9nPiX/ZT0g/2Q+HP9iPxz/Yj8e/2A9
+        G/9gPRv/YD0b/2A9G/9gPRv/Yj4f/2A7Hf9fOxz/Wj4f/1c+Hv9XPh7/Wj4h/1w9JP9cPST/Wz4i/1xE
+        H/9eRiL/YUol/2NLJ/9hSSX/ZEso/2RNJf9lTiX/Ykkp/21UNP+GbEz/b1Q7/19BLv9lSTD/X0Qp/1U6
+        If9fQyP/fmE3/35cLf9+Yi7/Xkcl/zQZD/8xGw7/MiAQ/zEiF/8qHxj/Lx8e/zAeHf8uHBz/MSAd/zUl
+        Hv8+Lij/U0U+/1ZKRP9TR0D/ua6o/7eup/9qXVf/ZlBL/2NVT/8wJB7/MR8a/0ArJf86KBz/OScc/zkn
+        HP9ELCL/Ri0j/1I5Lv9ONCr/Tzsw/2NbTv9wYln/TzIu/1Q5Nf9GLCf/Qi4o/0IvKf8+KiX/OSkj/z0q
+        Jf9CKST/RSsp/0IuLf9GMC//RjMx/2heVf+JgX7/gn2A/4uGhf+VjIb/eGpf/048MP9NOi//TDov/0o4
+        Lv9FMSz/RzMu/0QwK/9VOzf/n4uG/5SMhf85Lyn/Pism/0gwK/9ILyv/QjEr/0UvKv9JLSn/Qyoq/z4r
+        Kv80KCb/Oikn/z0nJ/8/Ji7/Pygv/zspK/9CLzL/QzAz/0EuMv9BLjH/QS4x/0EsM/9FMDj/RS84/0Es
+        Mv9EMDX/RC84/1gyH/9lQCj/Y0Ek/2I/Hf9hPhv/Xzwa/188Gv9eOxn/Xzwa/188Gv9cOBr/Xzsd/2A9
+        H/9ePiD/XD4f/10+H/9cPh//XD8f/1w/H/9dQiH/X0cj/2FJJf9hSSb/Ykom/2FKJf9jSyf/Zk8n/2dR
+        Kf9wVzf/fWRE/2lSLP9hRyj/XkMo/2NKKv9lTCz/XUQj/1E6F/9pUSv/f2I3/31iMv9TOh3/NhkV/z8m
+        If81IxP/MSIW/ykdF/8uHhz/MB4d/y8dHP8tHBn/Lh4Y/zMjHf9AMSv/VEhC/3FmYP9cUEr/RDkz/1tO
+        SP9iTUj/VEE8/z0sJv89JSH/PCId/zgmG/84Jxz/OScc/0MqIP9FLCP/W0E3/3RqXv+0tKb/jot9/1ZI
+        Pv9KLiv/QCYi/z0iHv82IRz/RzMu/005NP9RQTv/RjQv/0MqJv9JLy3/RzMy/0cxMP9KNzT/jIF5/5KK
+        h/+JhIb/h318/15OSf9XQjn/Tzwx/007MP9LOi7/Szgv/0k1MP9DLyr/RC8q/0YpJf9RMi//bk1K/454
+        c/9XRkD/Qigk/0YtKf9AMCr/RjAs/0wxLf9GLS3/Pisq/zcrKf84JyX/Pigo/zwkLP89Ji3/PCks/0At
+        MP9ALTD/Pywv/0EuMf9BLjH/Piox/0EsNP9CLTX/Qi4z/0UxNv9FMDn/NhUH/0QjEf9XNyH/YkEk/148
+        G/9bOBb/WTcV/1g2FP9aOBb/WjgW/1s3Gf9eOhz/YT0e/2E9H/9gPB7/Yz4h/2BAH/9bQRv/XkMe/2JH
+        Iv9hSCT/Y0om/2NKJv9jSif/Y0on/2hPLP9rVCz/bVYu/450VP9uVTP/aVQo/2hQLP9iSCn/Y0sm/2ZP
+        Kf9iSyX/UTwc/1I9Hf91XDf/d141/0UpE/83GBn/PiUj/z0rHP8zJBn/LiIb/zAgHv8xHx3/Lx0c/y4c
+        GP8uHRf/KBgS/3FjXf+lm5X/bGBa/2xgWv9PRD3/YVJN/0gzLv8wGxX/OSId/1U4NP9cPzr/OScc/zkm
+        G/86Jxz/QSke/0kwJv9uVEv/emxg/4V5bf9eRDr/Riki/0gtKf9RNjL/X0VA/15KRf9DLyr/Qi8q/0k5
+        M/9PPDf/SzMu/1A2M/9IMzL/RC8u/11LSf+ckYn/lo2L/4mChP+Nfn3/alRQ/080LP9LNCr/RTQq/0Uz
+        KP9FMin/Qy8q/0EtKP9ALCf/OSwm/z8tKP9CIyD/RS4q/2lYU/9NNDH/PSUh/z0sJv9CLSj/SjAs/0cv
+        L/87KSf/OCsp/zgnJf88JiX/PCQr/z0mLf88KSz/QC0w/0AtMP8+Ky7/QS4x/0AtMP88KC//Piky/0Es
+        NP9DLzX/RjI3/0QvOP8uFwz/LxII/zUSCf8+Hhj/Rike/1IzF/9PMRD/TS8S/04wEv9QMhT/VzMU/1s2
+        GP9eOhv/XDoe/1o5Hv9dOyL/YEIh/11EGv9fRhz/Y0kh/2VKJv9tTib/ck8k/3JRKP9yUiv/dVUs/3FU
+        Lv98YT7/e188/3RZNf94YTv/aE8v/2JHLP9hSSb/ZU0p/2NLJv9bQCf/UTQh/1Y7If9mSDP/QSAX/zcb
+        Ev80HhT/MCEV/zIkGP8yJBn/MyEX/zMhFv8zIBb/MSEW/y4gFf9IOzD/f3Rq/15UTv9vYVv/bVtV/0At
+        KP9qVlH/YU1I/zMcFf87IRj/PSQb/29WTP9dRTv/OSEX/z4mHP9BKB7/Qikf/0IpH/9EKyH/RSwi/0cs
+        Iv9DKR//RCsi/0owJ/9gSD//c2Nd/35taP9KOjT/RTMq/0g2K/9aRz3/Y09G/15JRP96Z2j/koSH/4uC
+        g/+CdHb/dmNm/4JpZv+Famb/UDQw/0EqJf9ALSf/PSkk/z0pJP9ALCf/Pysm/z8qJf9BKiX/QSgk/0Mp
+        Jf88JSL/NyIh/044N/8+KSf/OSYh/z4qJf9AKyf/QzAv/zknJv9CMTD/PCwn/0EwK/86Jyr/Oycs/zon
+        Kv8+Ky7/Pisu/z0qLf9ALTD/QC0w/zwpNP86JzX/Oig0/z8rOP9GLzz/RjA9/ywWC/8xFQv/OBQM/zES
+        C/8zFg3/PRsK/0QhDf9FJRL/SikX/00sGf9QLxb/UzIY/1c2HP9VOB3/Uzgd/1U6H/9ZPR7/XUId/19E
+        IP9gRSH/ZEkl/3JSKf96Vir/fF4q/3dcJf92WiL/cVUq/3NXNv9tUS7/ak8s/2hRLP9mTS7/YUYs/1xD
+        IP9kTCj/Zk4q/2RLKf9ZPiL/TTEZ/1IyI/9DIhr/OR4U/zchFv8xIhb/MSMX/zIkF/81JBj/NSMY/zUj
+        GP81Ixj/NSMY/0s4Lf9MPDL/OSok/zomIf88Ih7/OiQf/0QwK/9WQz7/QCkh/0AnHf9LMyn/SzIo/1Y9
+        M/9fRjz/Qikf/0IpH/9AJx3/QCcd/0EnHv8/Jhz/Pycd/z4mG/9AJx3/RSwh/0MqIf88KCL/VEA7/3Ne
+        Wv9xXlX/YU9E/2FPRP9lU0n/dWVf/4+Cg/+KgIP/iH+B/4x9gP9eSUz/RSsp/0swK/9UOTX/Qism/0Et
+        KP8+KiX/PSkk/z0pJP86JiH/OSUg/z8kIP8/IyD/PyQg/z8nJv86JST/PCcm/0o1M/88KCP/Oyci/z0p
+        JP84JiX/Oyko/z0rKv87KyX/WkpF/zsoK/86Jyv/OSYo/zsoK/88KSz/PCks/z8rL/9ALTD/PCsy/zop
+        Mv9BMTn/QzA7/0QtO/9GLz3/KxQK/zQYD/88GBD/NxoO/zUZDv86FA//OhIO/zoVDv88FxD/QR0V/0Qm
+        Ev9GKRP/Sy4Z/0w2G/9RPB//Uj0h/1Y+If9bPR//Wj0f/15CIv9mSib/cVEo/3xZLP98Wy//gGE1/39f
+        M/9wUyz/bVEu/2pOKv9pTir/Z1Aq/2dNLv9kSS7/W0Mf/15GIv9oUC3/aVQn/2FLIf9XOyT/SCcc/0Eg
+        GP88IRf/OCIX/zIjF/8wIhb/MCMW/zQjF/80Ihf/NCIX/zUgFf86IRf/OB8V/zghGP86JCD/PyQg/0Qk
+        If89JiL/NCEc/zgkIP9LNCz/WkE2/z8mHP9kS0H/ZUxC/082LP9MMyr/QSge/0IpH/8+JRv/QCge/z8m
+        HP89JBr/PCMZ/zohF/89JBr/RSwj/0guKf9NMi//X0RA/0k1LP9INiv/QS8k/2RUSv99dG3/hH5+/4uG
+        iP+VjY7/nY+R/31pbP9LMS//TDEt/2BFQf9FLin/Oygj/zwoI/85JSD/OSUg/zgkH/83Ix7/PCIe/zwh
+        Hf88IR3/PCQi/zgkI/82IB//OiUk/0s3M/88KCP/NSEc/zglJP86KCf/OScn/zkpJP86KiX/OCYo/zom
+        K/8/LC//Oygr/z0qLf8+Ky7/Pywu/0AtMP8+LjH/OSst/0k7Pf9RQEf/QSo4/0UuPP8wEw7/NhcT/zcX
+        E/83FxL/OBYS/zwYFf89Fxb/PhgW/zwVE/86FRL/NhkO/zQYDf82GQ7/OB0Q/zofEf88IRP/PyIU/0Qi
+        Ff9EIhX/QiAT/0cqG/9KKxv/SSoZ/1M4Jv9MMyD/aVA9/0wxH/9DJhT/RSkW/0ktGv9RNyP/WT8o/2FI
+        Lv9XRSX/VUEe/2RLJv9qUSn/alAq/2RHJ/9TNhj/QyYV/z0fHv85IRv/MyMX/zIhFv86Kh7/OCYb/zQi
+        F/8zIRb/MiAV/zEgFf8yIRb/NCMZ/zQiHf85Ih7/PiEe/z8mHv89JRz/Qioh/0UsI/9QNy3/XUQ6/zwk
+        Gv9iT0T/bltQ/1A8Mf9FKx7/QCUY/0InGv8/Jhv/PSQa/z8mHP88Ixn/OiEX/z0kGv89Ixr/QCYd/040
+        LP9kSkL/SzQn/0kyJv9NMiz/emVi/4R9ef+Ih4T/k5KQ/5WRkv+cj5H/jnZ6/00xL/9LMCz/RSkm/0Aq
+        Iv86KB//OSUh/zUgIP80Hx3/NSAe/zUgH/82Hx7/OCIg/zghIP82IB//NSAf/zkkI/82ISD/PSgn/1Q/
+        Pv9KNTP/OyEh/z0nJ/87KCf/Oyon/zwrKf89KC//NSIn/19RT/9OQD7/Nign/0AsMv9ALDP/QS00/z0s
+        Nf87KjX/OCgx/zwrNv9BLjr/QC05/zITEP81FhP/NBYT/zcVE/86FhP/OxgV/zwZFv89Ghj/PBoX/zwa
+        F/84GhP/NhkQ/zgaEv84GhT/NhgS/zgaFf84GRP/NBML/0gnH/9UNS3/MRYO/1tBOf9vVU3/RS0j/zkh
+        F/9ONiz/Qike/0YsI/8/Jhv/PCIY/zshFv88JBP/SDIb/1A+JP9TPiD/X0Uj/2lOK/9rTyz/ak4r/15E
+        Hv9KLhj/PB4c/zoiGv83Ihf/NyIX/zsmG/84JRr/MyEW/zIgFf8xIRX/LiEV/y4hFf8xJBn/NSUf/zkl
+        IP8+JCD/QCYe/z8mHP9BKB7/PiUb/z4lG/9HLiT/RC0i/0o4Lf+Ne3D/STcs/1c8Lv9XPC7/QSYX/z8l
+        Gf89JBr/PSQa/zsiGP88Ixn/PiUb/z0kGv8/Jhv/SzIo/3tiWP9SPS7/Pyoe/2NLRf+WgX//mYiH/6WX
+        lP+empf/hIKC/5WHif92XGD/Si4s/0sxLP9CJyP/PCcd/zcmG/84JCD/NiEh/zciIf82ISD/NSAf/zYh
+        IP85JST/NyMi/zYhIP81IB//OSQj/zkkI/87JSX/OyYl/1M+Pf9FKSn/PSYl/zsoJ/87Kif/Oyko/z0o
+        MP8zISf/al1c/1dKSf80Jib/QCsz/0ItNf9CLTX/PSo2/zwpN/86KDb/OSc1/zwqN/87KTf/NRYT/zcY
+        FP84GRX/OhgV/zoXE/88GBX/OBgV/zMYFP8zFxP/MhcS/zUYD/82GRD/ORwT/zgaF/85Gxr/OBkY/0Il
+        IP9KMSf/YEc9/1c/NP80IBX/ZlJH/2JOQ/85IBn/Qygi/zMYEv9ELCb/RTAq/0cxK/9GMCr/PSch/006
+        Lf82JBP/Qi8b/043H/9ZPSL/ZUko/2pOK/9nSyr/ZEsk/1E4G/88IRj/OCQV/z0kGf8+JBr/PCMY/zgk
+        Gf81Ixj/MiAV/zMjF/8xIxf/MCEV/zEjGf81JB//OiQg/0AlIf9BJx//PyYc/0AnHf9CKR//Qikf/0Am
+        HP9GLyT/ZlVK/29dUv84JRn/RSod/1k+MP9NMiT/QCYb/zwkGv88Ixn/PCQa/z0kGv87Ixn/PiUb/z8m
+        Hf8/Jhz/Y0pA/2ZWRv9bSz3/lYN7/4Jvbf9hNjr/YDA1/5SJiP+mpqb/u6+x/25UWP9JLSv/RSsn/0Yq
+        J/8+KSD/NSQa/zcjH/82ISH/NSAf/zUgH/80Hx7/NB8e/zgiIf83IiH/NyEg/zciIf83IiH/NyIh/zsm
+        Jf85JST/QCsq/08zM/87IyP/Oykn/zsqJ/9KODf/Qiw0/zUhKv9OP0b/UUFI/zgoLv8+KTH/Qi02/0Qv
+        N/8/LDj/Piw6/zooNP9EMUH/Pyk//z8pP/8xExL/NBYU/zcZF/87Gxn/OxkY/zoXFv81FhT/LRQQ/zAX
+        E/8wFxL/MhYQ/zcaE/87GxT/Phoa/zwYG/8+HB7/UDQv/15IPP9kTUP/Uzwz/1M/NP8/KyD/Mx8U/zkg
+        Gv89Ih3/PCIc/zYeGf8zHhf/NB4Y/zUfGv81Hxv/Pysh/zknGP86Ixj/QCQT/1M0Hf9eQSH/Z0sl/2xN
+        Jv9qTyP/Vz8e/0csG/8+JBX/QBwV/zcXEf89GBP/SDAn/2BPRP8/LCL/MiIW/y8jFf8vIhT/LyQX/zMm
+        Hv83JR3/PCYf/0MqIf9CKR//Qikf/0EoHv9AJx3/QSge/z8mHP9CKiD/fWtf/009Mv84IBL/QCUX/19B
+        NP9FKB3/PyMa/0EkG/8/Ixn/PyQY/0MnHP9HKyD/Riwh/0QqH/9PNSn/dmdY/4mBd/+Rh4H/SDMr/1Iu
+        Kf9qREH/kXV0/8W5uv+Hc3b/TTE1/0csKP9AJh//Rywn/0ItI/81Ixn/OSQh/zkjI/85ISH/OSEh/zgg
+        IP80Hh3/NiEg/zQfHv80Hx7/NB8e/zYhIP84IiH/PiYl/0EpKP9BKSn/Ujo3/zkjIv89KCr/Oiko/zkr
+        Kf9FNTj/PCov/zkmK/89KTH/QCw1/z8rMf9ALDH/Qi40/0AvOP9DMj7/TzxK/088Tv88Jz//QS1E/zQY
+        GP81GRn/Nhoa/zcZGv85GRr/ORkb/zYYGP8yFxP/MhcT/zEWE/8vFhL/NxkW/zsWFP84EQ7/Tikl/0go
+        Jf9CJx7/RzAi/081L/9LMCz/XEI4/0wzKf8/Jhz/OB8U/zsiGP86IRf/OyIX/zsiF/84HxX/OR8W/zsf
+        G/84HhT/OSEU/zodGf9AJBn/UjYl/1xEJv9eRiD/Zkke/2ZKHv9fSCT/Uzce/0MhFP9VNzP/cGJc/1g+
+        Ov9dRj7/UkE1/zsoHv85KRz/MyUV/zEjE/8xJRX/MCca/zcpHf85Jxv/Qiof/0MqIP9AJx3/QCcd/0Eo
+        Hv8/Jhz/Qicd/z0eFf95Ylj/a1tP/zMeEP9FLB7/Sysd/0ooHf9JKB//RCIZ/0UkGv9MLB7/Ty8i/1Iy
+        Jf9MMCL/SS4g/1E1J/+NeWz/trCu/6+pp/9zWkr/fnRe/1pTRP9UKSX/eVta/3VZWP9DJyb/RCoi/z4l
+        G/8+JBr/OCQY/zooHv88KCT/PSYm/0MmJv9BJCT/PyMj/zcgIP85JCP/OCMi/zYhIP8zHh3/NB8e/zoj
+        I/9DJyf/RCcn/0QoKP9JNi//OSQj/z4mLP87KSr/NCcl/zYpJ/9MPDn/RjEv/0MsMf9GLTb/Qi8y/0Eu
+        Mf9FMjT/QjI3/0o5Q/9JNkb/RDFF/zgnPP82JTr/NRoa/zUaGv81Ghr/ORob/zsaG/85GRr/ORsa/zQZ
+        Ff80GRX/MxgU/zEYFP85Gxf/OhUT/3BQSP94XVL/SDMo/zsmGP9CKh3/QCYf/0EmIv9CKR//QSge/zoh
+        Fv85IBb/OiEX/zkgFv87Ihj/OiEX/zgfFf84Hhb/Oh8b/zohGP88JRf/OiEW/4Nzav+rop3/jYNy/3Rk
+        R/+MeFn/gmxF/2xXLP9fRSj/Sy4c/3lvZ/+us6r/eHFq/z4rIv82JBn/Oigd/zooG/86Jhf/NiMT/zUj
+        Ff81Jhr/OSUa/0EmHP9CJx7/Qikf/0UrIf9GLSP/Qikf/z4lG/8+JRv/PyQb/1AwJ/+DYFf/QCoc/0gv
+        IP9YNyr/TSsh/0sqIf9KKCD/Ti0j/08vIv9NLSD/Ty8i/0wxI/9OMyX/VDkq/082Kf+Ac3L/opWU/0oz
+        I/+Fd2L/SjUp/0koIv9zWVP/iG1n/0AmIP9LMSj/RCwh/z8mHP86Jxr/Oige/zomIv86IyT/PyMj/z8j
+        I/8+IyP/OCIi/zomJf86JiX/NSEg/zUhIP82IiH/OSIi/0ImJ/9FKSn/Qicn/0w5Mv9DLi3/Pygt/0Aq
+        LP9DLy3/Qi4t/2VQT/9POjn/Qiox/0kwOv9EMDT/TDk8/1I/Qv9LO0D/RjU//0Y0Q/9EMUX/OCc8/zcm
+        O/84Ghr/OBoa/zgaGv85Gxv/Ohsb/zcYGP85HBr/OB0Z/zgdGf83HRj/Nh0Y/zkcF/9GIh7/aUxB/2BK
+        O/9DMSH/NCES/z4lGv9BJiD/SS4q/0MqIP89JBv/OyEa/zshGP85IBb/OSAX/zsiGP86IRf/OSAW/zgf
+        Fv86IBr/OyMX/z4nFv82IRL/bGJZ/52enP+WlIz/nJKA/6WZhP+aiWT/blcn/15FIP+HbFD/nYyE/5CO
+        hv+Zko3/SDcu/zckGf8/LCH/Pigc/0AmGP9AJxj/PSYY/zomGv89JRn/Qycc/0AnHP9DLCH/RS0i/041
+        Kv9NMyn/PCIY/z4lG/8+Jhv/Px0V/1kwKv9JMCP/Riwe/1k6LP9uTkP/UzQq/04vJf9QMib/UjMl/1Ax
+        JP9QMST/TjIi/1Q5Kv9aPzH/Qykf/4Bubf9sV1b/VT8x/3BfTf9OMif/TzAp/1tCN/9iS0D/Ri8k/000
+        Kf9HLCP/RSkh/z4nHf86Jh7/OyYi/zsjI/8/IyP/PyMj/z4jI/86IyL/PCUl/0ApKf87JCP/PCUk/z4n
+        Jv8+JiX/Qycm/0QoKP8/JCL/SjQu/0gyMf9BKi//Qist/0YvLv9IMTH/SzU1/086Ov9BKjD/WUFJ/1dC
+        Rv9LODv/XEhL/1FARf9HNUD/RDBA/z8rP/89K0D/PCo//0MdH/9CGx7/QRoc/zobGf81Gxf/NhsX/zgd
+        Gf86Hxv/Oh8b/zogG/85Ihj/Ox8V/2NAOP9UNi3/dFdO/0otI/85HBb/PyUh/0QpJf9EKiT/PyYc/z4j
+        H/87Hh//OiAZ/zkhFv87Ihj/PSQa/zsiGP87Ihj/OyIY/z8oGv9BKxf/PysT/zQkE/9MQDD/l499/5mT
+        i/+Ykon/oJiD/4Z3V/9eRyD/Ykwl/2tVL/+VfW7/aV5U/73Buv+Bdmz/NyAV/0MpH/9CJRr/RSoc/0Qp
+        G/9EKhv/PioX/z0pF/8/Kxj/QCsb/0k0Jf86JRb/OiAT/0svI/9JLSL/PSIV/0UtH/9pT0n/QiYk/1E2
+        Kf9KLyH/QicZ/1pBM/9sVUb/RzAh/0w0Jf9QNCb/TjQm/1I3KP9aOij/UTQm/0YtI/9jTUf/oYaC/1Yz
+        MP+FZmH/dV5T/00tJP9WMyv/TTAm/4t0af9NOi//SDIn/0gqJf9MJSb/RiUl/0AmIf9BJiL/QSUi/z8j
+        I/8/IyP/PyMj/0ImJv9GKSr/SCss/0QoJv9FKib/SC0p/0csKP9FKib/RSom/0UpJf9TNzL/Vz8+/z0p
+        Lv9ALC3/RTAv/0gzMv9UP0D/W0hM/0c0N/9QPD//Uz1B/1E6Pv9iS07/UDtA/003Qv9FLT3/QSk+/z8q
+        QP8/KkD/PRsd/zwbHP89HB3/ORwa/zYcGP82Gxf/OB0Z/zsgHP86Hxv/Oh8b/zkiGP89IRf/Sygg/1w9
+        NP+IbGP/Rikg/z8iHP9BJiP/PyMg/z0jHf9EKyH/Qykk/zkdHv87IRr/OiEW/zsiGP87Ihj/OyIY/zwj
+        Gf87Ixj/PicZ/0EsGP9ALBT/PikZ/zMiE/9TRzb/i4J3/56ViP+fk3n/pZd5/5SIbP+Xim7/kYNn/5yH
+        cP9YSDb/aF1Q/3NjWP+Aal//QCUb/0QnHP9CKBn/Rise/0UrHP9HLRz/Ry4d/0oxH/9JLh//YEU3/2dM
+        Pv9cQjL/Riwb/0sxIf8+JRP/Qy0b/1Q8MP9DKSL/ZUo9/0QpG/9KLiH/QSgZ/1M9Lv91Xk//TTUm/1E1
+        J/9PNCb/UDUn/1M3Kf9XPzT/dF9a/5V9ef9YPDj/Tioo/3VWUP9iS0D/UDAn/1c3Lv9JMSf/c1RL/4Z0
+        af88LSH/RCwl/0gnKP9FJib/Qicj/0EmIv9AJSL/QCQk/z8jI/8+IiL/PyMj/0YqKv9ILCz/Rywq/0gt
+        Kf9GKyf/Risn/0YrJ/9GKyf/SzAs/0w2MP+AbWz/Sjs//0MxMv9MNzX/TDc2/1VBQv9VQkX/Szg7/1RB
+        RP9WP0P/UTo+/2ZPU/9VQEb/TDdC/0kyQv9ELUH/QCtB/0ArQf84Hh7/OR4e/zkeHv84HRr/OB0Z/zof
+        G/87IBv/OyAc/zofG/85Hhr/OCIY/0AkGv9DIBj/OBoR/3ZaUf9GKSD/QCQd/z8kIP8+Ix//PSMd/0An
+        Hf9BJiL/Ox8g/zshGv86IRf/OiEX/zohF/86IRf/PCMZ/z8mG/8/Jxn/QCoX/z8qEv9DKBn/PCQW/zon
+        GP94alv/hHZj/5KBY/9vXDb/loFb/5WAWv+ZhV//oI5q/2pTNv9cPij/Yk1B/4x3bf9AJRv/UDIo/3FW
+        SP94XU//TTEj/1MyI/9GJhX/YkIy/1c1KP9HJRj/XDou/2BEMf9XQCj/UTki/0IsE/9XQyn/j3ln/3FZ
+        S/9ILSD/Qyga/0gtH/9DKhz/dl9Q/4t0Zf9SOSr/UDUn/1M4Kv9TOCr/SzMo/4FuaP+cjIv/h4N9/4J+
+        dv9VSUP/QC0m/3BYTf9YNy7/VDcu/1I+M/9YLCX/oZGF/4aAcv85Jh//RSsq/0YqKf9GKyb/RCkl/0In
+        JP9BJSX/QSUl/0ElJf9DJyf/Rioq/0gsLP9LLy3/Si8r/0kuKv9EKSX/Si8r/1I3M/9TOTX/TDs0/4+D
+        gP+AeHv/TDw9/1A6Of9WQUD/Uj0+/1E+Qf9VQ0X/WUZJ/1xGSf9VPkL/Vj9D/1A6QP9LNUD/STFB/0Ms
+        QP9BLEL/OSQ6/zojGv83Hxn/Nx4d/zoeIP86HCD/Ox0h/zodH/88IR7/PCIb/zsiGP9BIRz/QSIe/0ww
+        K/9nSUL/Z1FG/0koH/9LJiD/PyUi/z8jIP8+Ix7/PCEc/zwhHf86Hxz/OB0Y/zsgG/86Hxv/OiAZ/zkh
+        Fv86IRf/QCcd/z8oGf9BKxv/QSoZ/0kqHP9IJh3/VEE5/3h1bv+KhXb/ZVM1/2ZNJP9pTyH/alIg/25Y
+        Iv9rVSb/Ykcj/14+Jf9nVUb/r6OX/46DfP9ENDD/MxsT/0UpHv9jSTv/tqye/5SOgf9fRDn/dFtO/4Jp
+        W/9hPDD/WjAh/1oyIf9sSjn/bVE+/19CL/9tSjr/Yzwt/00wIv9JLiD/SS0f/0w0Jv+IdWn/koJ6/4Fw
+        bP9xXFr/cFxZ/2dTUP9oWlP/iHp3/5SEiP+Oko3/nKeg/6u3t/9pa2j/XVBG/3FeVv9ILif/VDEp/0op
+        IP97al//raGS/1NCN/81IRz/Qikm/0QpJf9FKib/RCkm/0ElJf9CJib/Qycn/0IoJv9LLiv/UC0s/08x
+        LP9LMyr/SzIp/0gvJv9LMSn/VDoy/1Y9NP9JNy3/h3Vw/5SCgv+Abm7/eWRj/1U7O/9QNzj/Tzs+/1A7
+        Pv9OOj3/TDs+/0o5P/9OO0b/TjtH/0g0Qf9CLTz/QS8+/z8xP/9fUF7/PSIa/zwfHP88HSH/Oxwh/zga
+        IP86GyH/ORsg/zseIP88IR3/PCEa/0MgHf9CIyD/PyYi/5+Fff+OfnL/Rige/00oIv9BJiP/PyMf/zwh
+        Hf87IBz/PCEd/zgdGP81Ghb/OB0Z/zofG/86IRn/OiEW/zsiGP9AKB3/PygZ/0EpG/9AKhv/Rywe/0cm
+        Hv97bGb/jI6M/4SAd/9POyP/bFIs/3JaLf9zXSr/dF8o/3VeLP9sUSz/X0Ao/0c0If+ekoP/dW1i/3pv
+        af9aSEL/MxsR/z0oGv8+OSz/QTcr/1s+Nf9FNyj/Y1pJ/2xbTP99aFj/dFtJ/2NAMf9vTT7/mop4/31m
+        Vf+BZFP/eVVI/3ZSRf9gOy7/UzUl/2lQQv95Y1v/iXZy/45+ev+Qf3v/kIB8/5SJgf+ShoP/lIWJ/5WT
+        j/+gpaH/pq+y/7e9vf99d3H/kYaC/5GAe/9qXFD/V09C/4B7bf+BcGH/cFlO/2xVUP9ILir/QCUh/0Yr
+        J/9GKyf/RSkp/0QoKP9CJyf/QCck/0suKv9XMS//UDEr/0cvJP9JMCb/STAm/000Kv9ONSr/Tzcs/0k2
+        K/9oVE7/WkRD/1dBQf+Db27/Y1BP/2RTU/93Zmn/i3p9/4l4e/+KfH3/jX6F/458if9+bnn/YlRd/3Rm
+        b/+DdH7/j3+L/6SVof9CHR3/Qhsh/0MaJf87GSH/Nhkd/zgaH/84GSD/OBkh/zkcH/86Hh3/Qx8c/0Ul
+        Iv84Hhr/Y05F/5+Xiv9MNiz/RyYg/0MoJP9AJSH/PiMf/z0iH/88IR7/OB0Z/zgdGf83HBn/OR4a/zwi
+        G/87Ihf/PSQa/0EoHf8/KBn/PicY/0ArG/9BLh7/Qysh/4R/df+Wmpv/ioJ//3ljUP96Xz3/b1co/3Zf
+        K/91Xyf/b1gn/2xRLP9fPyj/SzQd/0IzHf9BNCP/XFJH/3JmX/99bGD/U0Y3/zowI/9dOzP/PRsS/0Ak
+        F/87IxT/QDEh/2VXRf+AcV3/ppWC/2tYRv9QOij/cFNC/49rW/9xQDX/cT40/3E+NP9rPy3/Yz8q/2RC
+        NP9eRTv/Vkk+/3RlW/+YioD/mo+H/5WJhv+Zio7/jIeE/5WVkf+XmZ3/m5+i/5eXmP+flpr/n5eW/4qN
+        fv+WkYT/lYh8/11GN/9TNy3/b1FN/3xgXf9lS0f/Qygk/0gtKf9HKyz/SCws/0gsLP9BKCX/SS0p/1Yx
+        L/9RMiz/UDgt/1I5L/9VPDL/TTQq/0owJv9WPTP/Wkg9/0QxK/9OOjr/Vjw9/25ZWP+MiIT/l5WT/56U
+        lv+Mg4X/dGts/3Vnaf9xYWn/nIqY/6OaoP+cl5n/n5qb/21gaP9nTl3/fWZ0/0IeI/9DHiX/Qx0m/z0b
+        Iv86Gh//Oxsg/zsaIf87GiL/PBsh/zwcIP8+JCH/OyEd/1k8Of96a1//dmtb/0kvIf9MKyP/RSgm/0Un
+        Jf9CJSH/PiUd/z0jHP88Ixv/OR8Y/zkfGP85Hxj/OiEY/zwjGf8+JRz/QCcc/0EoG/9FLB//Ri4h/0ku
+        Iv8/HBb/ZVNP/46SjP+Pi5H/kXVw/29NL/93Xzz/blsx/31uPf98Zjf/c1kz/2lNL/93YUL/g25V/2JM
+        O/9MOS//QTQq/0k4LP9eUEP/WUw//1Y+NP99Z13/VjQs/00sIf9JNCP/SjMi/0szI/9iUUD/mIV0/3pW
+        SP+CXk//YTwu/3lFPf+AS0P/fkhB/3RIO/9vSjv/bUE2/35fVf+Uh3v/hnVm/4Z0Y/+RgXr/iHd2/498
+        gv+OgH3/jIB9/4uDiP+TjZD/ioB+/4B1dP+Gd3T/fWZc/3VZUP9jQjn/VDUo/1k5L/9SLyz/TzAt/3te
+        Wv95XFj/SSwq/0YqKv9FKSn/RCgo/0MpJv9TNTH/WjMx/1Q3Mv9WQDn/VDgy/1Y8Nf9mVkr/dGRY/4p6
+        bv+Kem7/a1dO/1tDPP9QMzD/j3h3/52Vlv+OiYv/kISG/15OUP9OPD//UEBC/005Pv9oT1f/iXx//4qC
+        gv+dlpb/b19j/1E3P/9WPUX/Px0k/0EgJv9AHiT/Ph0i/z0bIf8+GyH/PRsg/zsZH/89GiH/PRwh/zgj
+        H/86IBz/Wjk2/31pXf9QOy7/TzEl/1Y3Lv9MLSn/Rykk/0MmIP8/Jhz/PiUb/z0kGv8+JRv/OiEX/zwk
+        Gf88Ixn/PyYc/z0lG/9DJx7/Tigj/1MtKP9RLSf/RSYe/1EwLf+EcHH/iouD/5ado/+SjIn/WkYh/3li
+        Of+PfFr/nIxr/6SXaP+bjWH/oJBp/5mGYf9uWDz/SS0d/zUcEv8yIBT/LhwR/zspHv9YSj7/Sj0x/2RY
+        S/+NbGb/WjUt/1EvH/9TNCX/Vzst/1I1J/9OLyL/Xjow/3lbT/+UfHD/kop//5OMgf+MhXr/i4B2/416
+        cv+JbWb/jXVt/4d5bv93ZFb/cVpH/2xaRf9sWkn/b1pQ/3hhWv+Jcm7/hHN1/3hhYv+CYVv/dlhS/2FB
+        O/9XMyr/US8m/1Y0K/9dPDD/WTgv/1o3M/9WNTP/UTIv/3tbWP9kRUP/Si4u/0grK/9TODf/UDc0/00x
+        Lf9ULy3/TzUx/0o1Mf9UNjP/VTk0/1JDN/9QQTb/XU5C/2VTSP9UPTL/aktB/2lMRP+IcW3/nI+Q/52S
+        lv+PgIL/VT9C/19GSv9XREf/XERH/10+Qv9RPUD/VERH/5KChP+Jdnn/XUVI/1E5Pf9AHiT/QR8l/0Ig
+        Jv9AHiT/Phwi/z0bIf88GiH/Px0k/z4cI/87Gh//QSUi/0kpJf9OKCb/SSMf/0UlH/9MLyn/WT01/1g8
+        Mv9RNSv/RSkf/z8mHP8+JRv/PSQa/z4lHP89JBr/PiUb/z0kGv9AJx3/PiYb/0YpIv9NKCf/VS8u/2I9
+        O/9wXFf/kY2L/5GRk/+VmZr/oLCt/6axpv9fUi//dVsn/3VgN/+Ld1L/hnlE/3NkM/9uXTH/ZFMp/1NA
+        Hv9TOyT/QCoc/y8eFP8xHxT/Lh0R/y4hFP89LyP/MSMX/4JtZf9qS0H/TiYX/1cwIv9WMyf/VTIk/188
+        Mf9cOzb/XkI8/3JbVP+BcGz/kYB7/5mHg/+Ph4H/lpKM/5yQi/+gkoz/lod8/4NxYv96Y0//cF0+/3Je
+        Rf9uWEX/bE5B/39gV/9+ZWL/d1lW/2pDO/9pQzv/ZUI5/2JIPv+HbWP/ZktB/1I0J/9YNy7/Wjcz/1My
+        MP9QMS7/UjMw/1EzMf9OMjL/Sy8v/15DQ/9kUk3/aVVP/2lMSP9VPTj/XUdC/11BPf9hQj3/YUU7/1xA
+        Nv9XPDH/WD81/2FEOv9gPDT/Z0g9/2pVS/+UioT/opmZ/5OFiP9ZREf/XkZJ/1ZDR/9ZQkb/YUNI/1U9
+        Qf+BbG//pI6R/6eTlv+ml5n/jHt+/0AfJf9AHiX/Phwj/z4cIv8+HCL/Phwi/z0bIP89HSH/Px8j/z4e
+        If9EJSL/US8s/2A5N/9eMzL/SiAf/0gpJ/9UOzP/XEAw/1U5K/9HLB7/PSUa/z0lGv88JBn/QScd/0Mp
+        H/9CKB//Qige/0QrIf9GLyT/STQr/1lISP91ZWb/loaH/6eenv+frKv/oK2v/6iytf+Vo5r/ZlhI/1Mu
+        Ff99XTP/e2Aw/4FqNf+Lbjb/hWYy/39fL/9xXCz/bFkx/11FKP9NNSL/Oyca/zQgFf80IRf/MiQY/zAi
+        Fv8yJBj/Pjwv/352aP+Da1v/YUEy/1Y1KP9vTkH/bE1B/4NqZf+OeXP/jHt0/5iHhP+WhoT/loaG/46C
+        f/+HeHT/gmtp/4FsZ/+EdGn/jnxu/415Z/96YU//bFBC/2BBOf9nQTT/aUM2/2I/Of9ZOzL/Z0w9/25R
+        Qv9fQzb/Ujsw/1dANf94YVb/bE9B/2NCOP9UMS3/TCsq/00uK/9KKyj/Vjc1/19BQv9bPT7/TTEx/0o4
+        NP9ZRUH/alBN/3xnY/+UgHv/YkNA/146Nv9cODH/Ui4o/1UyLP9VNy7/VDMq/2M8Nf9YOy7/YVFC/56W
+        i/+RioX/dWdp/1hDR/9gR0z/WkZJ/1tFR/9eQkb/WkBF/2ZNUv9vVlr/a1ZZ/2dZWv+Cc3X/Ph8l/zwe
+        JP85GyH/Ohsd/z0dHv9AICH/QCIh/zogG/89Ih7/PiMf/0IjIP87HBn/fF9b/7KZlf9KIiD/Sikn/041
+        Lf9ZOSv/Ty8i/0krHv9BLB3/Pyka/z0oGf9DJx3/RSgf/0ksI/9IKyL/Si8m/005Lf9YSD//e3Rw/5SP
+        kf+joqj/r7q7/42Rjv91cGv/WFVD/0E3Hv9zVED/dFE2/2dKJf99WjH/hF4x/4VoM/+GajT/g2Yw/3hh
+        LP97Yzb/cFMz/1w+Iv9ONBr/PiQY/zcgG/8yJBj/MiQY/zYoHP8wJBX/MSIS/3FbTf93Y1T/ZFVF/39v
+        X/9dTT3/XlFB/3xvX/99b17/fGdY/4x6bv+QgXz/emth/1lGNf9kSjv/ZEk8/2hRRv9+bWH/iXtv/4hz
+        Zf96X1L/Xj0w/1s4K/9aNyr/Yz8y/25PQf9iSDr/Xz4w/3BNQf9vUkn/Vzox/00xKP9fQDP/a0pB/188
+        OP9dPDr/TzAt/0gpJv9QMC7/Vzc4/1IyM/9VNTb/bEtN/3ZWV/9gP0H/Uj06/3dkX/9iQT7/ZkM//1w/
+        N/+DZGL/hWVn/3NfVf+FcWb/ZVFG/3FgVf+UiHz/kYt+/4N+cv9TR0L/XEdJ/15DS/9dR0f/XEdG/1tG
+        Rf9bREj/W0RJ/1U+Q/9SPD//VkE//1Q+Pf89ISD/Ox8f/zwgIP88Hxz/PiAb/z8hHP8/Ih3/PyQg/z8k
+        IP8+Ix//RCUi/0AhHv9LLCr/VTo2/3piXv9qUk7/TjIq/08vIf9QMSP/Ti8i/0swIf9JLR//Rysd/0Yp
+        IP9GKSH/SCsi/0srIv9QMCf/VTkv/2BLQv9xaWX/kIqM/5ybn/+IlIX/QDon/0AlEv9WORn/WUIf/3BZ
+        RP+2o43/bls5/4ZtSf98YDf/dVkk/35iLP+BZS//fWgu/3hiL/90WTP/Z0sp/1U9Hf9IMR3/NSEW/zMl
+        Gf8wIhb/NScb/zcrHP86Kxv/NiAR/z0pGv94aVj/dmdX/0IyIv9FMyP/QjAg/2tYSP9bQC3/Ry4e/2pV
+        S/+Le2//fmtc/2FIOf9eQTX/aUtD/2hQRv9oVkv/eGNU/3JXSf9YNyr/Xjsu/1s4K/9YNSj/Y0Q2/2FH
+        Of9TMST/WTMo/1YzK/9jQTj/Z0Q8/1g4K/9QLyb/VDEu/2ZFQ/9gQj//Siso/1AxL/9TMzT/UzM0/08v
+        MP9RMTL/UzM0/1MzNP9RNTP/aU9L/2hPS/94YVn/YEs7/5R9c/+AaWT/jYR4/3JqXP+JgXT/mYyA/5qO
+        gf+dl4r/lI+B/3FoW/9VQj7/WUJD/1ZBQP9YQ0L/XUhH/15JSP9iTUz/XklI/1lEQ/9ZREP/VkFA/0Em
+        If9BJiH/QSci/z8jHP8+IRj/QiUb/0AjHP9AJSH/QSYi/0ElIf9EJSL/RCYi/0QlIf83Gxf/h3t0/5B+
+        ef9RMCr/UC0h/1QyJv9TMST/Ui4i/1IuIf9SLiL/TzAl/0stI/9JKiH/Tyoh/0wnH/9QMCj/Y0pD/3Rt
+        av+Wk5T/kI2R/1JGLf9LOBj/UzsZ/1c8Hf9WPB3/VzwY/2xZN/+SiGr/p5h3/5iFYf+KcDz/g2gy/39j
+        Lv98aCv/e2cv/3ZdMP9zWjH/XUgh/1I9I/9ALR3/MiMX/zQlGv80Jhv/MycY/zkqGf9CLB3/Pysc/08+
+        L/9yYlL/Tz0t/042J/9MNCb/UDgo/2VJMf9PNR//SzMj/2BOP/9/bFz/Vz4v/1Q1Kf9WNCv/UTQq/0sz
+        KP9cRjj/a1BB/1QzJv9aNyr/Wzkr/2ZBNf9cOy7/W0Ay/1EwI/9rRTv/VS4n/1IsJP9dNi7/YUA0/2FA
+        N/9XMzD/RSMi/0ssKf9VNTP/Ty8u/1ExMv9OLi//Ty8w/1Q0Nf9OLi//TS0v/1QxMf9MLSn/fmpm/5OF
+        e/97bVj/l4d3/2ZUSf9YQTf/WkM5/5N8cf+lk4j/n5OH/6Cajv+tqJn/l459/1RCOf9YQT3/Ujw7/1ZA
+        QP9bRUT/W0dC/2BNRv9bSEH/Uj46/1VAP/9XQkH/PyMj/z8jI/8/IyT/PyMd/z8iGP9AIxn/QyYf/0Mk
+        Iv9EJSL/RSYj/0cqIf9HKiL/Rikh/082LP9NMy3/UzEx/1cxM/9TLSz/Tigj/0wmHv9RKSH/VC0l/1Qs
+        Jf9PLCD/VTMp/04qJv9QKSP/WkQ8/4+Cff+jlZP/l5mW/52gnv+Zmpf/cWNN/0UxGP9UPSb/TzcY/1A4
+        Ff9XOx//TzkU/0o9EP+Of2T/o5OA/6ybcv+gi13/h249/3hjLP98ZzD/fWcx/3lnMf9rXSz/WUYi/1dB
+        J/9DLBr/OSEZ/zchI/8zJRr/OSoZ/0IsHv9KMiP/RzEi/084Kf9hSzz/TDUm/002J/9ONyf/bl5D/087
+        JP9XPC7/cldI/1g/Lv9RNyf/WT0s/1k7Kv9VNyf/VTcn/1Q3Jv9wUkH/bE09/1I0If9ZNyj/XTQs/2Y8
+        Nf9cNy//SCgf/00wJv90U0r/UzEo/1s5MP9dPTP/Xjw2/2xISP9rR0n/UCst/1UwMv9RLi//Sior/0kp
+        Kv9MLC3/UDAx/0wsLf9KKiz/SCgn/1Y5Nf9eR0P/kH53/5WFeP9+aF3/YUU8/19COf94W1L/g2Vb/4Ru
+        Z/9/bmj/h3dx/6CLhf+Mbmr/Vjg0/1c5Nv9RNTX/Uzg4/1g8PP9WQT3/WkdB/1pGQf9WQj3/WURA/1xI
+        Q/9AJCT/PyMj/z8jI/9CJSD/QyYc/z8jGf9BIx3/PyAd/0IjIP9DJCH/QyYe/0UoH/9JLCP/Vz80/2xK
+        Rf95XFv/l4uL/3p2cf95bGP/ZVNI/3RjWP+Lem//loV6/3trZ/+BcHL/iHV9/4l3ef+ampL/m6CV/5+Z
+        j/+PiH//cmxj/3x1av9pXUf/STYf/083I/9QNxj/YEgk/1U6IP9WPhz/Uj8T/0c1E/+Kel7/gXFJ/3dk
+        Nv+Dazr/g204/3xnMP+CbDb/fmsy/3hoMv9uWTD/YUgq/1k+KP9BJxv/OyEg/zgpHf87LBv/Qiwe/0kx
+        Iv9NNif/Ri8g/1U+L/9ONyj/SjMk/003J/93Y07/SDUj/3BeU/9lTkD/Uzgn/1Y8K/9bPy7/WTsq/1M1
+        JP9QMiH/Vjcm/1k7Kv92WEf/YkIv/1Y0JP9iQjn/WDQu/1MsJP9RMSn/QiYc/3xcU/94V07/aklA/00s
+        Iv9KJyL/TCgp/1YxNP9RLC7/Tyos/04qLP9JKSr/Ryco/0goKf9KKiv/SCgp/0YmJ/9ePz3/el5a/1U/
+        Ov9ZRT//YktF/1M1MP9aNzP/Xz83/1c3Lv9WNi3/YkU//2hOSv9hRkL/Wj05/1M0Mf9QMS7/TzAu/1I1
+        Nf9SNjb/WDw8/11HQ/9aRkH/V0M+/1xIQ/9cSEP/X0tG/0InJ/8+IiL/PiMj/0MnIv9EJx7/QyYd/0Ek
+        Hf9AIR//QCEe/0AhHv9DJh3/RCce/0gsIv9IMif/Xzcy/3xqZ/+Xp6L/pbSs/4mCeP9eTED/ZVlN/3lt
+        Yf97b2P/cWhc/21jXP+Jfnz/q6Gm/6Wop/+Ki3v/XUw5/1Q/Lf87JxX/ZlJA/5eJcv9fTDX/VT0o/0sz
+        FP9hSCX/SzEW/1c7HP9ZPxf/TDgO/21cMf95aT7/fGg7/4lwP/+Icjz/gm42/4FsNf+FcTf/gWwx/4Fo
+        O/9zVjP/Y0Uq/1w+Lf9DJR//NicZ/zssHP9BKx3/Ri4f/0o0Jf9KMyT/Tzgp/1pDNP9GLyH/XEQ2/3FW
+        SP9RPjL/pZ+Y/2VVSP9RNST/TzUk/1A1JP9QMSD/TjAf/1I0JP9UNiX/VTcn/1U3J/9mQC7/US8f/3Fe
+        U/+QeHD/TSUd/1AyKf9LLyX/US8m/1IxKP9MKyL/Ti4k/08tKP9NKCr/TSgr/1QuMP9QKiz/TSkq/0kp
+        Kv9IKCn/SCgp/0kpKv9JKSr/VTU2/2hIR/9XOjb/Qy0o/0gzL/9NLi7/WjY2/182Nv9dNzD/WzUt/144
+        L/9qQz//dE1M/2dAPv9cODb/Wjs4/04vLP9MLSv/TTAw/1U5Ov9TNzj/VD47/1tHQv9ZRkH/XElE/15L
+        Rv9hTUj/QyUj/0IlI/9FJyb/RSkh/0MoG/9DKBz/QyYc/0EkHf9AIxz/QCIc/0MmHf9GKSD/RSgf/1Q+
+        M/98WFv/bmdo/5iooP+BgXj/QS8o/z4iGf88JBf/PCQX/zwkF/9BLh3/RC8f/0sxI/9TOzT/TTsz/1I8
+        LP9QNSL/TTUf/001H/9XQSr/aVtE/0IwGf9fRzL/Ri4S/2JMLP9oUDP/SDAS/045Ff9MOhP/UkIZ/4l5
+        Vf+hj2T/kXtI/5B5RP+Sekb/iXE+/4lzPP+Ecjf/gWs7/35mO/9vVTH/Ykct/1w+L/8/KiD/Pywf/0Es
+        HP9FLh7/TDUm/002J/9aQjP/ZU0+/0UuG/9nUDv/c1dG/3dlWP/Dw7//sqSZ/1g8Kv9KMSD/TTEg/00v
+        Hv9RMyL/UzUk/1U3JP9VNyT/XkAt/2tHM/9ZOCX/Xkc6/7Sekv9cNSz/Vism/1YyLv9TMyr/UTAn/08u
+        Jf9PLST/Tioj/2E8N/9SMS7/RSgm/0gpLP9EJSn/RiYn/0cmJ/9HJyj/SS0t/00xMf9KLi7/Ryko/0Um
+        Jf9JLSz/UTQ0/1YyNP9bNDj/WzM2/1k1Lf9YNSz/WTUt/1s2L/9bNTH/Xzg3/2A7O/9bPTn/Ti8s/0wt
+        Kv9QNTL/XEA+/1k+O/9WPDb/W0I6/2NJQv9jSkL/ZkxF/2dNRv9HKCT/SCkl/0kqJ/9HKyH/QygZ/0En
+        GP9BJRn/QCMa/0AjGv9AIxn/QyYd/0QnHv9EJx7/Ry8j/4Ztcf+cmpz/jpOH/z4vIv9KMSf/Ty4k/0cr
+        Hf9EKRr/Risd/0QtHv9ILyH/US8i/04wHv9ONB7/TzUh/1Y+Kv9OOiP/TTgi/0g1Hv9oWkP/XUoz/0cv
+        Gv9QOCD/Xkgu/4JrUv9lUTX/RTQW/0U0Ff9JOBr/iHhZ/4JwSP+Gcj7/ln9M/5uEUv+UfUv/inZB/419
+        Rf+FckL/f2o8/3tnOv9uVjP/ZUkx/11DM/9ONif/VD0t/002Jv9MNSb/WEEy/1tFN/9uWUz/bFlG/2JQ
+        OP9ROCf/ZlNH/5mRi/+ajX//Zk88/0ouHf9RMiH/UDIh/1Q2Jf9TNST/VDci/1E0Hv9yVUD/hWVO/1o5
+        JP9cPjD/l4Bx/4NiVv9pODX/Xjc1/1k4L/9UMyr/UzIp/1QvJ/9ULib/VC4l/0kqI/9EKib/Ryot/0Ql
+        K/9GJif/QyMk/0YnJ/9HKir/TTEx/0wwMP9OLzD/VDQ1/1AvMf9XNTf/WTQ2/1MuMP9RLS7/VTQs/1o6
+        Mf9aOTH/WDgu/1IxKv9VMTH/WDU2/1Y3NP9OLyz/TC0q/1Y7Nv9fRED/XEE9/15BOf9gQjj/Y0U8/2VI
+        Pv9oSkH/a01E/0orKP9JKyj/SSon/0crIf9FKxz/QicZ/0ElGf9AIxr/PyEZ/z4gGP8/Ihr/QiYd/0cq
+        If9DJRT/X1JN/5memf98eGj/Ri0b/1UvH/9WKx3/RCkc/0QpHP9FKhz/Pyob/0IpG/9RMCT/VTol/1A6
+        H/9QOR//UTsh/045JP9OOST/RDAb/1hLNP9hTzj/VT0n/2lPPP9ONCL/Ry4a/2lSPf9nUj3/STUd/11J
+        MP+FdVf/dmU7/4l0QP+Sgk7/lohU/5eIVf+UhE7/koFI/497S/+Ic0T/gm87/39pQP93XED/dVw8/2xR
+        N/9nRjz/Wj80/1tFNf9fRzj/cFpN/5qIgv97a17/WEk5/2NLRv+QeXD/gWtc/4yBbv+ilIH/VS8f/1w0
+        Jf9SNSP/UzQj/1I0Iv9TNSH/UTQf/1I1IP+GZU//jm5a/10/Mv+TgHL/jnRn/3NKRv9ZOjf/WTgw/1U0
+        K/9QLyX/US0l/1UvKP9RLCT/TSok/0spJv9MJiz/SyUs/0UlJv9DIyX/Ryco/04qK/9SLS//WzY4/18+
+        P/9aOjr/TCss/04sLf9RLC7/Tikr/00pKv9RMCj/VTQr/1c2Lf9UNCr/UjAq/1ItLv9PKy3/Ti8s/00u
+        K/9NLyz/TjIv/1Q5Nf9ZPzz/XkE6/19COP9fQzn/YEM6/2BDOv9iRTz/Siso/0coJf9EJSL/Rigf/0cq
+        HP9HKhz/RCca/0AkGf8/Ixj/PiIX/0EkGP9CJRn/RCYa/z0gD/9yZVv/mZWK/0EzJP9LMB3/WDMi/1cv
+        Hv9KLxv/SS4c/0ksHf9EKxz/RSwc/0wtH/9RNyH/UTsf/085Hv9SPCH/Tzoh/1E8Iv9JNBv/WUgz/3Je
+        Sf9DLBf/Xkc3/3liU/9ONCX/WD8u/2ZSPP9SPSf/gWxV/3NhQf98akL/fWo6/4+ATP+XiFX/n5Bd/5+P
+        Wv+aiFL/lYJR/5J+Tf+PfEn/inVI/4NsRf94YTb/eF48/2pJOf9WOi3/Zk8//2tUR/+Gcmj/mY2D/5SJ
+        fP+LgHD/lIF7/6KJiP9qTUL/WEo2/62gjv9dOyz/WzUn/1Y4J/9VNyb/Vjgn/1c5Jf9VOCT/Vzom/2A9
+        J/9tSzX/bU8+/454Zv9xW0n/ZEE4/4FgWf9rST7/cE5G/2pLRP9gPTP/Uy4m/1UwKv9RKyf/Tigl/00n
+        Kf9LJyr/SSgn/0cmJv9IJyb/TCYo/08pK/9SKy3/VTM1/0wuMP9GKiz/Ryss/0wrLf9OKi3/TSgq/08u
+        Jv9RMCf/UC8m/0ssIf9NLiX/Ti4o/1EyLf9RMy7/TzEr/0stJ/9NNCv/TDIq/00vKP9TNi7/WDsz/1w/
+        N/9cPzb/X0E2/10/Nf9IKSb/Rygl/0UnJP9HKB7/SCga/0koG/9FJxn/PyUW/0AlF/9AJRb/QyYU/0Yo
+        Fv9HKRf/QSkb/002Kf+hiHr/emRW/0o1JP9LMCD/UTIf/1E2Gv9NMBn/SSsa/0csG/9JLx7/SS8e/0sy
+        Hv9NNSD/TjYh/1E5I/9SOyD/UDoe/002G/9NNiT/ZU8+/0gyIP8+LBz/oY+A/2lPQf9AJxX/UDwk/1lF
+        Lf9LNx//eGNF/4VyTv+LelH/jHlI/5mFUv+lkl//q5hl/6CNW/+di1f/moZU/5SAUv+Pe0z/iHRE/4Rx
+        QP97ZTz/d1xA/21SPf9iSjn/bVhM/56Og/+fl4b/nJWD/5qSgP+dkoH/e2Zl/0oyKv86Jxb/b1xN/1pC
+        NP9XOyz/Wjwr/1c5KP9UNiX/VDUl/1Y4J/9aPCv/Z0Eu/2pFMP9xUTv/cVc//4BpUf9zUUP/gFxR/5B4
+        af9mRj3/YDU0/3RORP9aNi3/VjAt/1cuLv9WLiz/Ty0q/0stKf9OKyj/Tiso/04rKP9MJyn/Tyos/1Es
+        Lv9RLzD/TjEw/0YuLP9DLiz/RSsq/0sqKv9QKir/Ti0l/1IxKP9SMCj/TjAk/040Jf9MMSL/SzAj/1Az
+        Kv9OMSj/TjIo/0gzJP9MMiP/UzEk/0ssI/9KLSX/TzIq/1o7Mf9iQTT/YkI1/0gqJ/9IKSb/SCkn/0gp
+        IP9IKBr/SCgb/0UoGv9CJxn/QCUX/0AlFv9DJRX/RigX/0osG/9JLhv/QicV/1Q5Jv+YgnD/cFtK/1E1
+        JP9TNCD/UTcb/04xG/9LLRz/SC0c/0owH/9JLh7/STAb/0szHP9NNR//Tzgi/082IP9PNiD/SzMe/1A6
+        J/9lTz3/XUc0/z0rG/9+a1z/b1VH/0QpGv9JMyH/RC4c/0kyIf9UPSX/WEMk/4h1Uf+UgVH/k4BM/5+M
+        Wv+rmGX/qJVi/6GOW/+ijlz/mYVW/5J+T/+Kdkf/iXdB/4JuP/94Xj7/eF9F/3VgSf9nVEL/m4x9/6GZ
+        iP+clIL/mJCA/6GWhv9xYlH/Y04+/21aS/+Zhnf/XUM1/1I0Jf9ZOyr/WDop/1U3Jv9RMSX/UDAl/1g4
+        LP9oQTP/bEU2/2lHOP+Jb1v/cVtD/2xJO/9uTUL/aFtL/51+dv9/S0v/Zz41/2E+Nf9WLy3/WjIx/1oy
+        MP9SMC7/Ti8s/1EuK/9RLiv/UC0q/04pK/9RLC7/Ui0w/1QvLf9RLyv/Sy4p/0cuKf9GLSf/Sywn/00o
+        JP9NLCP/Ti4k/1AvJv9QMif/UDUn/04zJf9LLyP/UTQr/0wvJv9NMSf/RTAh/080Jv9QLyL/TTAi/0sw
+        Iv9LMCL/WTwu/2NCNf9iQjX/Ti8r/0wsKP9IKSb/Sioh/0srHf9IKBv/SCoc/0ctHv9GLB3/Rywd/0ks
+        G/9LLRz/TTAf/0wuGf9OLxn/SSoT/0UrGP90YE//XUIw/2BALf9ONBj/UTQe/00uHf9JLh3/SjEf/0gu
+        Hf9GLxr/SjMd/040H/9RNiL/TTMi/00zIv9OMyL/SDEf/11HNf9nUD//RTMi/0w5Kv9eRDb/VTos/1Y/
+        Mf9SOy3/Tjcp/1Y9Kf9QOB//b1k6/4x5Sv+Kd0T/l4RR/6eUYf+vnGn/o5Fe/6GPXf+fi1z/mYVV/5N/
+        UP+LekD/h3VA/35nQf95YkL/dWFD/2FQN/+Dd2T/qaGR/6qikf+flYX/npF//6WZef+Ld2D/dWFT/4Fu
+        Xf+Ue2z/cFND/2FDMv9YOin/Vzkp/1IyKf9cOjP/Wjgx/2I5MP9hOS//Xjsx/1g8K/+ZgWr/kG5g/1o1
+        Kf9ZOyz/m3px/6aDgP90UUb/ck1E/1IrKP9bMjD/WjIw/1MwLv9PMC3/US4q/1AtKv9QLSr/Tioq/1Et
+        Lv9RLC7/VC0q/1MvJv9OLyb/Si8l/0QuI/9OMSf/UzEo/00tI/9NLSP/UC8m/1E0KP9PMyX/TTIk/0ww
+        JP9NMSf/TTAn/0suJf9GMSL/UDYn/1c1KP9VOij/UTgk/1Q7J/9dQTD/YEA0/19AMv9TMiX/UzEl/1Au
+        Iv9MLR7/TC4d/0osG/9MMB//SjAf/0owIP9KMB//SDIg/0UwHv9IMyH/UjYk/04vHv9MLh3/SysZ/1Y/
+        Kv9sW0T/Xj8q/1E0Hv9RNB//TC8a/0gvGv9HMBr/Ri4Z/0IwGP9HNB3/TCsd/1IwJf9NOSr/Uzkr/1o7
+        Lf9OLiD/Y0c5/5N6bP9LMSP/TTMk/080J/9VPir/dmZJ/2pXQf9ZRjL/WUYv/1c8Lf9qTzL/mIFY/5R/
+        Uv+NeUj/noxZ/5+RXf+elmH/m5Nd/6SSWv+dilf/moVY/5F9Rv+PeUT/hm5B/4RqO/90XjP/cGRI/5+b
+        i/+uqJn/k4F0/2FEN/9iSC7/a1I1/2tRNf9WPyT/YEsw/39pTv+NdVv/fF5K/2lJO/9TNCn/VTws/2dK
+        Ov9SMCD/VjQn/1c3Kv9YOCv/Wjkr/189K/+MalT/iGhP/3RWQP+kinj/moN3/1s+Mf9/XE//Yjku/1oz
+        J/9SLiT/VzAt/1QuLf9RLyf/US8n/1EwJ/9SMin/UjAr/1EsLv9SLyv/Ti0j/00rIv9LLSP/RC4j/0s0
+        Kf9ONiv/Ti8j/08uIv9RMST/VjMm/1MwI/9OMST/UDYm/1A3Jf9PMyj/Sy4n/0YwIv9MMSP/XDot/1o7
+        K/9ZOyr/WDsp/1w/MP9aPzH/WT0v/2pTRP9bQzT/WEEy/1s/L/9PMB//TC4d/0wwH/9JLx7/SS8e/0ow
+        H/9MMyH/TDMi/0syIP9MLx7/TS8e/0suHf9RMB7/Tjch/4BwWv9QMRz/UzUh/1AzHv9OMRz/TC8a/0su
+        Gf9ILBf/TCsV/1U4I/9xY1P/fndp/3ZuXf+Uhnb/Xkk6/1hFNv9LNCb/Vjst/1Y7Lf9iRzn/SS4h/041
+        Iv9UPST/Ujgn/1Y8Lf9SPiz/Wz42/1w+J/+AaUH/q5Zq/5SAUP+WhVL/pplk/5uUYP+fmWP/p5Zd/6SR
+        Xv+ch1r/nIdR/5J9R/+Pd0r/jHFA/3ZgNP9+c1f/r6ua/7Cnk/9WPy7/Ty4e/1o9Jv9YPCX/XUAp/2dM
+        Mv9pTjL/cFU6/2hOMv9dQij/YUQv/14/Mf9cPy7/Wzoq/3NLPP9cOiz/Wzwv/1k5LP9ePjD/X0Au/1Az
+        G/95YEX/u6mQ/5+HdP9jQzf/Sise/1c0J/9oPzP/cUs8/2tKOv9ZNCv/VjAr/1MyKf9SMSj/UjEn/1U0
+        Kv9TMSz/UCwt/1EvK/9QMCb/UC8m/08vJv9HKyH/Vjox/1xANv9PLyL/UDAj/04uIf9TLyP/VDEk/1Az
+        Jf9YPi7/WD8s/1A0Kf9QMyz/Uj0u/1xCNP9WNSj/UzQk/1M1JP9TNST/VTgo/1xBNP9eQzX/t62d/6uh
+        kf+PhXX/ZU49/1ExIP9RMyL/TzIh/0wyIf9KMB//TjQj/1EyIf9RMCD/UTEg/00uHv9MLh3/TzIh/0op
+        F/9mTzn/jHxl/00tGf9WOCP/UDMe/1AzHv9RMBv/TywY/0onFP9JKhT/SjUf/2RbSv+urJ3/sbal/3Z0
+        Y/+Ffm7/sLCe/1tNPf9SMyb/UDIk/5B1Z/9iRzr/TTAh/1Y2Jf9VMyn/UzEp/1M8MP9TNTL/Vzcm/2VN
+        Jv+TflL/n4pa/5mIVf+uoW3/sqx3/6egav+unGT/qpdk/6CMXv+ahU//l4FM/493S/+LcED/lH5S/6+j
+        iP+uqpj/joFn/1Y8Jf9XMx7/UjMi/1c5KP9XOSj/X0Ap/2VFKv9rSjD/fWBC/3ZePP9vVDn/YUMv/5Bu
+        Xv+Wb2D/bD4w/2A9MP9dPjH/VTUo/19CM/9gSTX/g2xT/5+Ocv+AeF7/UDgl/1guJP9XNCj/VTMm/1ct
+        Iv9ZNCH/Wjsk/1c1Jv9fPDL/WDcu/1U0K/9PLyX/UC8l/1c1MP9SLS7/WDUy/1o5L/9OLST/UC8m/08r
+        I/9RLiX/akg//0wsH/9RMST/UDAj/1MvI/9TLyL/UDMm/1M5Kf9VPCn/Uzct/1I2Lv9QOiz/XEI0/1Qz
+        Jv9SMyP/UDMi/1AyIf9hRDT/gmha/4twYv9zY0z/fWhV/21RRf9UNyr/UzUn/04xI/9ONCT/SzQi/00w
+        H/9TMiL/TzAg/04vHv9OLx7/TjAf/00vHv9MLh3/Sy4b/083If+Fb1r/ZUo1/1MzGf9WNh3/VTUc/04x
+        F/9MMBb/Sy4U/0UtE/9FLxn/Ry8h/1E8Lf9RSDD/dnJf/3V0Zf9fUUH/blpM/2FJPf9ZQTP/sKKS/4l3
+        aP9WOCn/Zks6/1E0Jf9OMyX/SDQr/1M4Lv9WMyP/Vz0j/4d0Tv+cjVn/qZxi/6OVX/+9sXv/vbJ4/6me
+        Xv+omGb/t6J+/72wh/+mm2j/moxS/5qMXP+9sYv/r6WC/6KYdv+MfFb/Z00u/2pILv9SNh3/UjQj/1Mx
+        K/9UMyX/Vzoi/10+Kf9gRCr/YUcq/21SN/9bQSb/gGtQ/6aKdf93VET/UjIi/1I0JP9XOCj/TDEe/1pD
+        Lf94Wkj/aUg8/0YpI/9OMCP/Xz8r/1w8KP9RLx//VC8k/1MwJf9RMST/UC8k/1QyKP9TMin/Wzox/2hH
+        Pv9ePjH/VzYu/1QwLv9cOjX/Wzow/08uJf9QLib/Tywl/0wrH/+PcGD/UjIl/0srHv9QMCP/UDIl/08y
+        JP9LMCL/TzUm/1I3KP9XOy7/Uzgs/1A2KP9PNCb/UTQm/1M1Jf9TNST/UTMi/1EzI/9WOSj/UTQk/3pn
+        Tv9UOif/WTUr/1Q3K/9ROCr/TzUn/0w3J/9PPSr/UTgm/1EzIv9OMB//TjAf/04wH/9OMR//TS8e/0st
+        HP9PMyD/RS0X/2dPOv+SeWL/aEsw/1k8Iv9SNRr/TTIX/0sxFv9KMBT/Ri0T/0cuGf9JLiD/Sy4f/1Ay
+        Gv9PMyL/SzIn/082KP9ROCr/TzYq/21WSf+gmIf/Tj8v/1o7LP+njnz/W0Iw/0wzIv9ONSz/UDUp/3FT
+        Qv9SOCX/c18//5eIVv+pnWP/qp1l/6WYYP+ypmv/raRk/6OVX/+unXL/urOF/8G7iP+kmF//k4lb/7Kq
+        hf+9tI3/saZ9/5mJW/91XTf/dFY3/2VLK/9cQCj/VjUs/1c4Kv9ZPSf/Wj0p/2JGLv9hRiv/bFA2/3th
+        Rf94aEr/qJJ5/45uXv9QMSH/VDYl/1IzIv9UOib/eWJL/189Lv9LJR3/VDEq/1IyJv9SNCP/eltD/108
+        KP9YNif/US4l/1EwKP9RMCf/UjEo/1EwJ/9OLST/WDct/2RFN/9cOzH/WDUx/1UzLf9VNCv/VDMq/1Ix
+        Kf9PLSb/SSoc/2dJN/9aOiz/SCgb/0wsH/9LLiD/TTIk/04zJf9KLyH/TTIk/080Jv9SNyj/TzQm/1I3
+        Kf9PNCb/TzEh/1AyIf9RMyL/TzEg/08wH/9TNSP/bV1D/1Q8Kf9XNCn/Ujos/3FfUP9/bF3/gXNi/2db
+        SP9XRDL/Ujko/1I1JP9QMiH/UDIh/1AyIf9PMSD/TzAg/080If9ONyD/STEc/z8nEP9wWkD/cVtA/0cx
+        Ff9ONRr/TTIX/0ovE/9GLRL/RCwW/0QpG/9CKBn/QCsS/0wtHP9LJBv/Ti0h/1EyJP9JKRz/aE5A/6GY
+        h/9KOiv/SSoc/1k/L/90Wkn/VDgp/1c0Lf9bPjL/r5uJ/3BYR/9UPSL/loVZ/6qdZv+rnmb/raBp/62g
+        Z/+lmlz/qZ5h/6ecYP+al1r/ubN7/5yLXP+omnL/w7uW/720j/+9tYv/mIpX/4FrQP+EZ0H/dl85/21U
+        Nv9fQDH/WDkp/15BK/9eQSv/YkYt/2JHK/9gRSn/kXdb/3ZmSP99Zk7/XTwr/1EzIv9ZOyr/UDIh/3NY
+        RP+Ba1P/UzEj/1YxJv9RMyD/UjMl/0knIP92WD//fmBE/2RDLv9NLB//UjEp/1EvJ/9XNi3/VDIq/1Av
+        J/9OLST/TCwf/1QzKv9VMi//VjQv/1QzKf9RMCf/US8n/1EvKP9LKx7/X0Ev/08vIf9KKR3/Siod/0cq
+        HP9EKhz/TDEj/0guH/9ILR7/SC4f/0gtH/9FKhz/SS4g/00yJP9NMB//TzAf/00vHv9QMiD/UzUk/1c5
+        KP9oUDr/W0Aw/1s7Mv9QNyr/V0U1/3RjVP+0qJb/oJR+/4Z2Yf9iTTn/UDMg/1AyIP9QMiD/UDMg/1Az
+        IP9PMh//UjUh/1A0H/9UOSL/Ujkf/1ZBJv+Ld1z/UDwf/1A0Gf9QMxn/SjAY/0kxHP9GLh3/Risf/0Es
+        Hf83MBf/PSsb/21USv9FLB7/TjEj/08sH/9uUUX/1s2+/5WEdP9MLhz/Ujok/1lAK/9aQSz/VTUo/15D
+        Nf99alz/Tjcp/084IP92YT3/rJpo/6qaYf+cjVH/w7Z9/8G1h/+vo2v/q6Bf/6KgY/+2sn//tap//8O4
+        j/+3rYT/zb+a/7epgP+Jfkj/iHVG/4pwSP+CaUL/fGFB/29QO/9gQi3/XUAq/2NDNf9iRTP/XEMr/1s+
+        J/91V0D/j3le/1tBLP9kRDX/WToq/1g6Kf9RMiL/Ykc0/1g+Kf9PLx//VjQl/1E0H/9RMiP/Ty4n/1I0
+        Hv9hRCv/WDcm/04tIP9NLSH/Sise/1AwJP9XNyr/UTAm/1QzKv9SMyT/UTEl/1EuKf9RLyn/Ty4l/1Av
+        Jv9UMyr/UTAm/0coG/9aOyv/XT8w/0UmGf9JKh//SCof/0grH/9GKBz/RCcb/0YqHv9ILCH/Rysf/0cr
+        H/9EKBz/Risf/0gsHf9JLBz/Sy4e/08xIv9VNib/Wzwt/2pXQv9qWkr/lYl//5+Uhv9bSjr/VTgr/1o9
+        Lf9XRC3/Uz8o/005Iv9PMx3/TzIc/1AzHv9TNSD/Vjgj/1Q2If9YOSb/Wzko/1k5If9cQCT/SjQY/4l0
+        WP93Ykb/UDIW/1g5If9PNSL/SzIl/0kxJP9IMCP/RS8g/0AvG/81IxX/aFdO/3NnWP9DLyD/XkEz/3Nh
+        Vv+8v7D/mZWC/0o1Hf9fSSz/XUgr/19JLf9ZRSz/Yk05/29WSv9QOiz/VkAp/2FIKP+bhFf/qJde/5mI
+        Sv+bjlD/vriK/9fPof++sYT/vbeM/8XCl//Ny5//xL6O/8K1hv/BqoT/nIVe/4d/Sv+KeEv/i3FL/4hs
+        Sf+BZUT/fl9E/25RNf9hRS3/Wzkx/1k6Mv9ZQS//XDwt/1g0JP9fQSv/YEEw/2dGO/9iRDT/UzUk/1M1
+        JP9OLx7/Ti8e/1I0I/9RMyH/UTMi/08xHv9QMh//UjQi/0wuH/9KKCL/TS4h/0suG/9GKBf/SSsZ/1Ez
+        IP9NLSH/UC8n/1EzIv9RMiL/UTAo/08tJv9MKyL/Ty4l/1ExJv9PLyL/WDgr/2JCNf9YOSb/Sioc/04r
+        Jf9LKSL/Sikg/0spIf9IKSD/RCce/0UoIP9GKSD/Rikg/0UoIP9DJh3/Qygc/0ctH/9JLiH/TTAi/1Ew
+        JP9SMiX/ua+Z/7avnv/Gwbb/3drM/6ufj/9ePjH/VzMj/1M5I/9QNR//TjId/04wG/9PMh3/UjUg/1Uy
+        Hv9bNiL/XDkk/104Kf9WMSf/US0c/00tFv9ROh7/alQ4/3FcQP9TNRn/Vjcf/1I5Jv9MNiP/SjUf/0o1
+        IP9MNyL/TTcj/0w0J/9ONCz/WUc4/3tsXP+lmon/ycW5/7nCs/+tsZ3/Z1Y//2ZPMv9mUDT/Y00w/2JQ
+        Mf98aU7/noh0/21ZSf9kTjf/kXhW/31oPP+nmmf/sqdw/6mgYf+imlj/w7+O/9DPsP/T0av/1dOm/8vJ
+        nf+moW3/nZNd/56LXf+hjWD/l45a/459T/+Lckv/i3JG/4huRf+CZkT/eWA8/2pRMf9iQzP/VDYq/0w0
+        I/9ZOir/Xjsq/1c6I/9TNSP/TS0i/04vIP9VNyX/VTgn/1U3Jv9UNib/UzUl/1I1I/9QNRz/YkYt/1Y7
+        Iv9KLRf/VDUl/08tJv9NLSH/TC4c/0osG/9KLBr/TC4b/04uIv9QLif/UTMi/1EyI/9QLyf/UC4n/1Av
+        Jf9OLST/Sysh/08vIv9WNyr/UjIk/1QvHf9VLiL/Uykk/04qIv9KKSD/TCsi/0orIv9GKiD/Rikg/0Yp
+        IP9GKSD/RSgf/0QnHv9FKRz/Risd/0YsHf9QMyX/VTUo/1Q0J/9uUj//bVRF/2RMRP9gSTz/eGJS/3xn
+        Wv9ZQTH/UzUg/1I0IP9QMh7/TjEd/0wwHP9QNCD/WzYk/1syIP9oQS//ZEEz/45waf+SdWv/moJx/2ZX
+        Ov9kTzT/a1E2/1w/JP9fQSr/VTYk/1A3I/9LNx//UDoj/1Y+KP9aPi3/XD8z/2hJQP9gRzn/mpKA/4qK
+        d/92alv/iXxv/66fjv+NdV3/alY6/2NOM/9mUTX/a1k4/499YP9vXET/ZVA+/19JMv9rUjT/j35X/8S/
+        j/+xqHL/ppxi/6GXYv/MyZf/xMma/8PBkP+1sID/wLmQ/7y3hf+poGj/sJ5t/6mWZv+clF7/m4pb/5Z9
+        VP+MdUj/h29D/4NnQf98Yzv/eWI9/3JVPf9iSDL/Ujoj/1MzIf9dOCn/XD4n/1k6J/9XNin/UzUl/1Q3
+        Jv9WNyb/VTYl/1c5Jv9TNSH/TzIb/0wwFf9pTTP/hmpR/1Y3KP9HJxr/TSwj/0wsH/9MLh3/Ti8f/0wu
+        HP9LLhv/Ti4i/1AvJ/9RMiH/UDIi/1AvJ/9QLif/Ty4l/00sI/9PLiT/Ti4i/0srH/9NLCD/Uy0c/2lA
+        NP9mOzP/SyYg/0cnIP9LKyH/SCog/0UoIP9GKSH/Rikh/0YpIf9EKCD/QyYf/0YrH/9GKh3/Rywf/0os
+        IP9TMyb/Vjcq/1lALP9aPjD/WDoz/1E5Kf9JNSL/Uz0z/3NbUP9mTDv/TDMi/00zIv9SMSH/UjAg/1Uz
+        I/9bLyP/ZUM2/7CfkP+Rinj/tLal/7/Euv++x7v/kpN5/1I8Jv9pQC3/X0Uq/2FFLP9cMCH/TzAh/004
+        Jv9UNib/XTwt/108MP9bOy7/XTsu/19AL/97c1//f3pm/2pgRP9wYk//mYt4/52SdP+Ke2L/hHZd/3Vm
+        Tf9vV0H/gGxV/4p8Zf9uW0X/cl5H/4VvWv+vpof/ubuM/5mLUv+ol13/tLKF/7Wrd/+zo2f/tK1o/7ix
+        dv+3qID/ycCW/7mzgv+xo3X/saJx/6iiZ/+llWL/o41g/5WDWv+MeE//h2xE/4JoQv94YT3/d147/3Jd
+        NP9qUyr/ZEIq/2A2K/9dPSP/XD0m/1w6Kf9QNiX/TjQj/1Y0Jf9WNCH/cFI2/3FUM/93Wzf/cFQw/00w
+        Ev9VNh//imtZ/15DJ/9OMB3/TCwg/0wuHP9MLh3/TC4c/04wHf9PLyP/Tiwl/04vHv9OLx//UC8n/04t
+        Jf9OLST/Ti0k/04tJP9OLST/Ti0k/00sI/9MLCD/YEAz/2dHOv9eQjT/TjIo/0QmIP9IKSb/RSYk/0Yn
+        JP9GJyT/RCgk/0MoJP9CJyP/RSkh/0otJP9ILCP/SCoh/1EwKP9WNS3/WkEt/1g+L/9ZPDX/Uzgp/1E3
+        Jf9PMin/TzMo/2VLOv9XPSz/UDUk/1oyI/9cMyT/aD8w/10rIP+Nf2//0t/L/5ujjf+mq5T/tL+u/6qy
+        ov9wY0z/Uzkk/2E9Kf9cPyX/SzAX/3lcTf9uV0f/QSsZ/1AyIf9ZOCn/Wjot/3dYS/9gPzL/Vzsr/8Sz
+        oP+wqpb/fX9i/9zcx//Awaz/iolr/52Rfv+XjXn/i35r/3xlT/98Z1H/lYZv/5iKc/+voYn/uquV/7Sm
+        iv+LfVX/loVT/7Wmbf+2rXn/joRQ/7ive/+1sHb/u7iA/8G6i/+1tIH/s7N8/7OseP+3rHf/sKpv/7Gh
+        bv+ok2b/oJNp/5qLYf+Re1L/i3NN/4FpRf9yWjb/dV45/3VdOP9uTzH/a0Us/1w9Iv9ZOSP/Xzws/1M5
+        KP9RNyb/VTMj/1UyIf9VNR//Wzwi/3FVMv+hiln/iG9E/0swDP9rVyT/p5dd/1A2GP9OLyD/TjAe/0st
+        Hf9LLRv/SiwZ/04vI/9OLCX/TzEg/08xIf9QLyf/Ty4m/08uJf9NLCP/Ty4l/08uJf9PLiT/Ti0k/1Av
+        J/9QLyf/RyQf/1k/Kv9+ZVD/TSwv/0QiKP9GJyP/Rygl/0coJf9CJiL/RCkl/0csKP9HKyP/SCsi/0cr
+        If9JKiP/Sygl/0wpJv9dRDD/XEAy/1k7NP9ZOyz/VTUk/1c0LP9VNSv/TzYk/1I4J/9PNST/WUIx/3dh
+        T/9uV0X/mH5v/8TUv/+xyLP/dG5Y/2NQN/9+cWD/dmlZ/1o/Kv9bPSj/XT0o/109I/9NMxr/YE48/6CP
+        fv9AKhj/UTQj/1ExIv9YOCv/WTks/2VHOv91XUz/k3dm/7exnf9qaUz/lod0/5iLd/+AeF7/lo+A/5CJ
+        ef+Ti3r/k3tm/5aBav+Rgmv/jYJq/5+Vff+zqpL/f2xT/2VHKP+Xg1f/xbZ+/7eobP+nnWn/ubWI/7y6
+        iv/Dwo3/xsaO/73Dh/+zun3/srJ3/7q1e/+4sXb/tKRx/7Sfcv+clWr/oJds/52NY/+Ufln/h29M/39n
+        Q/96Y0D/c1o4/3ZYNP94VjH/Zkcr/1o6JP9WMyP/Ujgn/1E4Jv9VMyL/VDAg/1U0I/9VNR//UjQX/1Y6
+        Fv9gQiT/Vzgh/1A3FP+Vg1D/cFox/0wvGv9TNSX/UTMi/08xIP9fQS//Ti4i/04sJf9NLx7/TS8f/00r
+        JP9PLib/UC8m/08uJf9SMSj/UC8m/1AvJv9QLyb/UC0q/1AtKv9UMC7/TS8l/1tANP96XFb/aUpH/1g5
+        Nv9HKCX/Siwp/0gsKP9ILSn/SS4q/0gsJP9HKiH/Riog/0srJv9MJyn/Syco/19JOf9aRDX/Vj8y/1k9
+        L/9YOiz/UzUo/1Y3Kv9WNij/VTQm/1U1J/9aRjP/o5mG/8fFsf+qr5n/vciy/7W6pf+bj3r/aFI6/1A7
+        Jv9YQiz/XUEm/11CJ/9eQif/YUYx/1E3JP9MNCL/hHlo/1E8LP9aMyb/XjIn/1guIv9WLx7/fF9N/6CL
+        f/+Gb17/v7ab/7KmjP+Fc2H/nY98/8rKtv+1uar/s62f/6GWiP+Ninn/kYh4/49+bv+Ng2z/opd//7Kj
+        jf+CbVP/Xkcm/4x8Wf+9soj/qZ1m/8m+iv+nnmz/sK97/8rLlf/ExY7/v8KI/8DDiP+7voP/vr2B/8K6
+        ff+8sHr/tad2/6ijcP+jm2j/pZhm/6aTYP+bhlP/jHVJ/4VvRP+Aaj//e2A0/39gM/99XTf/cE0x/2M8
+        K/9QLx//Ty4g/1MuJf9PKyL/Sysd/00tHv9SMSH/VzQh/1IvHv9XMyP/UzIe/1k7IP9tTzT/UTMZ/1c5
+        H/9VNCH/TS0a/2lNN/9fPzT/Sygl/0wtIP9MLB7/TS0h/08vI/9RMST/UTEk/1QzKP9SLSf/Uy4o/1Qv
+        Kf9ULSn/Tiom/1Y3Mv9MLCz/Sisr/1Y5Mv9kRz//WTo3/0gpJv9MLSr/Wz43/1I2Lv9NMCj/Ty4p/00r
+        J/9MKib/UCsq/1IoLP9VKy7/Ykk7/1tDNP9dRTb/Y0o8/21VRv+Ca1z/Zkw+/1o7Lv9ZOy3/WDks/2A6
+        K/9pRDX/e1tL/2xcSf+Qf2z/eF9N/2lRPf9xW0X/XEcx/1E6I/9XOyP/VDgg/1c7Iv+Rd2T/alBA/0cr
+        Gv9nU0P/Xzsu/1cnHP9cLCP/i2hf/3tURv+beWj/t6mb/6mejf+blYD/1dG8/7ewnP+XjXn/q6mU/6Op
+        lP+tpJL/opGA/5OOe/+Ti3n/nI59/5ySfP+onIT/loNt/2VPNv9bRyn/fm9T/8e8mf+/tID/tap2/7On
+        c/+ioGn/vL2H/8TEj/+/wIf/wsSJ/8DDiP+/wIT/wb5//8C7g/+5s4D/rqt1/7Coc/+pm2f/qZpi/6iY
+        YP+di1v/jHlL/4VwQP+IbkD/gmM2/4BhM/9+Wzj/b0gy/2A9Kf9UMiD/UCwh/04rIf9OLiH/TS0h/0oq
+        Hf9MKhz/Sikb/0sqHP9QLx3/UC4c/08tHP9UNB3/UjMa/1IwIP9QLR//UzQk/1o6Lf9UMyr/TCwf/00t
+        IP9PLyH/Ty8i/1AwI/9QMCP/VDMn/1MvJf9SLiT/Uy8l/1MsI/9YNiz/dlpO/4JlYP9ZOjj/Wj40/1M1
+        Lf9LLCn/TC0q/1AxLv9PMin/UTQq/1E0K/9TMS3/Uy8t/1EuK/9ULy7/VC0v/1cwMv9qSTz/ZEQ3/2RD
+        Nv+Aalv/q56O/72woP+1ppf/gGpb/15IOf9ROiv/XDws/2Y9Lv9sOSv/a04+/2VOPP9jQzP/XDwq/1g6
+        Jf9bPSj/WDsm/1c5J/9dPy3/UzUi/1c8Kv+Daln/gmhW/5aBcv+Ja17/imxe/6CQg//I0MX/wbep/7Ol
+        lv+urpj/qKeZ/8LCvf/L1cb/mqKL/7Knlf+3rpn/nJ2C/3NmTv9lTzn/Y0w1/3hqUv99d13/cGhP/2RX
+        P/9lVD3/Y002/2FKMv+FdV7/taqK/7ardv+tom7/vrOA/7q4gv+urnf/wL+J/8PEjP+/wYb/wcOH/7/B
+        hP/CxIT/w8OK/8TCj/+6t4H/tKx3/7Cibv+nm2P/qKFo/6OYaP+dj2L/nYZZ/5B2Sf+ObkD/hGcy/39e
+        Nf97Vjv/bEwy/2FDKv9ZOCb/Ty4g/0kqHf9KKh3/SSoe/0QoH/9AIxv/QSUd/0gmG/9SLiH/Uy8j/04t
+        HP9MKxn/TSke/0wnIv9KKCP/SSkb/19CLf9LKx3/Ty8i/1AwI/9RMST/UTEk/1ExJP9SMiP/UzEf/1Ew
+        Hv9UMyH/VzMi/1EyIf98ZFD/o4l8/2JGPP9qUT//XUI2/1M0Mv9QMC3/UTMv/1Y5Mf9TNi3/UzYt/1Uz
+        L/9UMS//VTIv/1UzMv9TMzT/VTU2/2xLPv9oRzr/Z0Y5/2pNPv9tUUH/dFhI/4NoWf+Galz/j3Rm/3ld
+        T/9fRTT/Wjwr/3BLO/+uoo//cWRR/1Q2Jv9eQSz/Vz8k/1s9J/9cPCr/WDst/15AMv9dQDL/UjUm/1E0
+        Jf9yU0X/j4Jt/7u2n/+Sinf/tbWn/7vQzP/S4dj/j4l//56Vgf+kopH/lJyO/7zGr/+YnYD/nZmA/6eh
+        g/9nYj7/VEUo/1pEKf9XQif/Xk0z/4d8Zf+zs5//sKuZ/6OTg/9uVkT/WkQu/4hvW/+VfmT/oJdn/6uk
+        bf+1sHL/0NKd/87Wqv+ztoP/w8KH/8PGjP/DyJL/v8WN/8DFhf/Fx47/y8yY/8bIk/+9u4f/ubB9/6yj
+        bf+somv/taVy/66eaf+rnGT/oY9b/5R+T/+Nc0n/gmk9/35mN/96WjT/bkgq/2xAKP9mOyn/VTAi/08p
+        Hf9PKiL/SSok/0MlH/9EJiD/SScg/0soIf9NKiP/TCke/0woHP9NKR//TCch/04tJP9GJxn/Zkg2/2lL
+        Ov9MLB7/UTAn/1ExJv9TMyb/UjIl/08wIv9SMSL/UTEh/1AvIP9YMCL/VC0e/1w3KP9sTUL/XkI4/3dW
+        Sf9yU0f/VDgw/1U3NP9VNzX/WDsz/1Q3Lv9TNi3/UzQt/1IzLf9UNC7/UzUx/1M4Nv9VOjj/bU1A/2pK
+        Pf9mRjn/ZUM0/2ZCMv96VUX/kHRk/4p6av+Bb2D/fmtc/2RGNf9bPSz/l3tp/6aahv+BcV7/VzYn/19B
+        LP9YRSn/YUg1/11ENf9XPjD/VDos/1U8Lv9ZOy7/Vzcq/1IxJf9eRTL/jHtm/5iJev+spZv/wc/M/8HM
+        xP+po5n/vMGw/6KijP9xZ03/f3VX/4V+Xv+Ujm//a2VB/11RKf9gTC3/X0cs/1RBJP9WQin/Zk89/3Ry
+        V/+DgGL/b19D/19IL/9ZQiz/gmpU/3xjS/+DbUj/t6V1/7ipbf/BwIr/5vLM/87Vqf+3uYP/vcON/8HH
+        kv/Kz5f/x8qK/8TFi//Hx5P/xcyV/8fLlP/FwYz/vLd//7Gpbv+0pGr/uqpu/6+lZ/+rn2j/opNj/5iD
+        Wv+Kdkj/lYNO/5B+T/+Nd07/dVY1/2lEKf9kPib/Yjgo/1MqH/9KJh7/Syce/0klHP9RMCf/gGFY/3pa
+        Uv9TMSb/Tywf/04rHv9MKhz/TS4g/04uIf9RMSX/WDoo/1M0JP9RMCn/UTAm/1AxI/9RMST/UTEk/1Ex
+        Jf9OLyL/TSwg/1QtIf9YMCT/Viwh/1c2LP9uUUn/dE1H/4FeU/9fQzT/Vzgx/1k5Nv9XOjL/Vjkw/1M2
+        Lf9TNy3/VTgv/1U4Lv9UOTH/Vzw4/1k+Of9qSj3/bU1A/2ZGOf9gQzP/XUMy/19DMf9zW0r/xLeo/7+y
+        ov9hUED/YUMy/15ALv9UNiX/W0Av/1tAL/9eQTD/X0Iv/1pCLv+JfG3/uK6j/4d1Zv95Z1j/a1pK/1s+
+        Mf9bOy7/XD0w/1c4Kf9zXU7/tq2i/8fPxv/U6uH/ycu//7u/r/+10sf/kpWC/31iRP9oUC3/Wk0p/1xM
+        KP9iVC7/Y1Is/19FJ/9ePyX/WD4i/1g9Jf9dQTD/YEkv/11IKv9dRyn/XUQq/25VQP+IfWX/YFc+/25V
+        O/+plHD/tKNz/7evdP/g6L7/5PDL/87ZrP+2v47/vb6F/8nGhv/Lzo7/w8SM/8jIlf/AyYz/wceJ/8jG
+        iv/DxIT/vL17/6+oaP+soWL/vLBz/7apcv+tnmz/rZpn/56JWv+Ickj/gnhH/6Saaf+llGz/dFk1/21J
+        J/9oQyb/ZD4p/1AqHf9TLR//Uy4f/1AwIf90Vkf/mHlq/2dHNf9PLhv/UC8c/1EwHv9QMCP/UDAj/1Ax
+        I/9PMR//UTMj/1AvJ/9OLiP/UDAj/1IyJf9VNSj/VTUo/1MzJv9RMST/UzEk/1g2Kf9cOSz/WTsw/08y
+        Kf9iPTb/gVxP/3VVQf9eOi//YT01/1o8NP9dQDf/bVBH/11AN/9dQDf/XUA3/14/Of9iPz3/YD47/29P
+        Qv9vT0L/ZUU4/2NGN/9oTz7/dV9O/5yGdv+Da1z/noZ3/7CYiv99YlP/Zkc3/2I+Lv9hPS3/Xz4u/1xB
+        MP9bPSz/kXlp/6Wcj/+dlYn/loNz/4p2Z/+JdWX/X0E0/1w7Lv9bOi3/XT8y/5+Wif+0wrj/n7Sp/622
+        pf+yrpr/uMCp/8XWyv+kooz/Y04q/3FXMv9rVTD/alMu/2dSLf9fSif/X0Qo/18/J/9bPiP/XD0m/1w8
+        K/9hPC7/YT4u/15ALv9cPyv/hmxW/66ljf+3t6H/q6aR/6Shg/+zsor/qqVo/8fNn//r99n/4O/K/9Ti
+        tP/Dx43/wcN9/7zBgP++wIT/w8SK/8bOjP/Gyor/ycSJ/8DEg/+9xID/wb9+/7Wub/+so2b/tahy/8Gy
+        gP+zpGv/rZpq/6OLZv+Lekf/fWo1/4RoPf+EZTv/eVsv/31eN/9jQSL/aUMs/3RMN/9bMB7/VTMf/1U3
+        I/9UNyT/Wz0n/1g4H/9UNBz/VDUg/1EyJf9SMib/UC8k/1EyIf9RMiP/UC4n/1EwJv9VNSf/Vzcq/1k5
+        LP9YOSz/Vjcq/1U2Kf9cPTD/YUI1/2BBM/9fQjf/WToy/2Q/OP94VUT/gF9F/2hEMv9oQzb/XkE2/19D
+        Of95XFP/dllQ/2tORf9gQzr/ZkZA/2hDQP9mQj7/d1ZJ/2lJPP9mRjn/ZUI2/3hZTP+Uf3D/q6CQ/8G7
+        qv+jm4r/p6KS/8rVx/+8vaz/c2RR/1g9K/9ePy//XkAu/2BDMv95YFD/bFJB/2JJN/9fRzb/d19O/4Bp
+        V/9WNyn/Wzsu/2ZGOP9zUkX/lpCC/7/Rxv+CiHv/SDYY/1FFJ/+De1z/eW9N/11OLf9mUjL/aVEx/2hP
+        L/9mTS3/ZU0t/19KK/9bQyv/Vz4p/1k/JP9bPyj/Wz0s/1s+Kv9cQSj/XEIl/2FGKP9jSS//hm9b/6aW
+        gv+RiWj/dGhD/5eIX/+npW3/qqx7/+bmx//v+tn/4vHS/9rrx//O46r/y9Sa/8PIiv/Bw4H/ubx6/7++
+        fv/HvoL/w8eD/77Jgv/ExIP/xMOE/7y7ff+tpG3/tqd2/7y0fP+zpXL/sptv/6qcZv+YilL/jHNF/4Fo
+        Of97ZDP/qZFm/4VuRf9fRhj/ZEMf/2k9J/9fPB//YkYp/35nUv+OdVn/aU4v/1Q3Hv9bPir/YUg3/1Ix
+        Jv9SKyX/Ti4e/1EyJP9QLif/UjEn/1c3Kf9ZOSz/Vzks/1M4Kv9SNyn/Vjst/2FCNf9kRDf/YkI1/2FA
+        N/9fPjX/YUI0/29ROf97XD7/b042/2xKNv9jSTX/YEU3/1s+N/9mSUD/hmlg/3FUS/9gRDv/YkU8/2FE
+        O/9vT0L/ZkY5/2VFOP9kRTj/ZUY4/2tKPf9hRjj/f21d/7qnmP93ZVb/bWRZ/56ThP9/cl7/Vjwq/10+
+        Lf9gQjH/X0My/1U7Kv9fRDP/hnFf/7u4o//KxrH/kYx3/49+bv94Y1T/gGtd/21gTP9eW0b/pKma/8vX
+        xf+NkHX/XEw1/14+KP9qWTn/aFQ0/2ZMLP9lSyv/ZU0t/2ZNLf9lTyv/ZVMt/2BLLf9aQyj/WkAk/1o+
+        J/9bPCz/XkEt/2FGLf9iSCv/YUgm/15FJf9xXUP/f2xR/3VdM/9oTR//fV4s/6edY/+xsnn/t7mD/93n
+        wv/0/fD/6fHn/+Tx1//m9ND/5u/I/+bswf/Z4rL/ztag/8TJiP+4wHz/tsB6/8HFd//FyHz/xsaD/8rD
+        hv+7rnb/q6Vm/7qvdP+4o3D/qZxk/66haf+mjmH/kXhJ/35oNv94XjT/k35T/7Okbv+QeE3/a0cr/3BQ
+        Lf9rUC7/gmxQ/5mFZf91YUH/ZE40/453Yf9sVj3/UTIh/1YxJP9QMxz/UTQf/04vIf9PLyP/Vzcq/1s7
+        Lv9YOiz/VDkr/1Q5K/9XPC7/YkI1/2VFOP9iQjX/Xz8y/10/L/9jRjH/alAz/3JaOv9rUDf/Zko1/2NK
+        Nv9iRzn/YkU+/2FEPP9jRj3/fmBY/3daUf9zVk3/bVBH/3NTRv92VUj/YUE0/2JGOP9oRzv/ckM4/29D
+        OP9fQjX/YkI2/3NSRv9oPjf/Xzku/2hJOP9gQjD/Wz0s/10/Lv9ZPCv/Y0g3/4NpWP9oUT//hXZj/4R3
+        ZP+Zjnr/p52M/7arm/+Eemv/Rjoj/1U4Iv9jRDX/cmVU/4V/av+cinf/X0Mw/2RNL/9+ZEX/a0wu/2FF
+        Jv9jSyv/cFc4/2ZQK/9jUif/ZFAs/11HJ/9bQCT/Wj4m/1s9K/9gQi7/ZEgu/2JHKv9mTSn/Y0sl/25b
+        Ov9/b1H/blw//2VQL/9lTCf/in1H/7y4ev+8vnn/u8iT//H96f/0+vH/6vXm/+Hy4f/j8Nv/6PLa/+r4
+        1//u+dr/7fDY/+HhxP/MzaP/wMCG/73Aef/Cxnv/x8OA/83Chf/Cvnr/sado/72qc/+1qG//pJZe/6uT
+        ZP+mjV7/k31M/35kOv9zXjH/iX9D/6+da/94Wzf/dFcu/3RbNP+IdlX/oZJx/3pqSv+Ug2n/nYty/1hD
+        Jf9ZPCT/VzQh/1I3G/9QNhv/UDIf/1M0Jf9aOi3/XDwu/1o8Lv9YPS//WT4w/1k/MP9hQTT/YUE0/2BA
+        M/9gQTL/Wj0o/2ZKMP9uVzj/c19A/2lTOv9hSTX/Ykk2/2BFOP9nSkL/Z0tC/11BN/9hRDv/aEtC/21Q
+        R/9vUkn/dVNG/25LPv9hPzH/YkE1/147MP90ST//hV9W/3FVTf9uSUP/gVlS/2VHN/9hRTT/XUEw/15A
+        L/9aPCv/dlhH/3NYR/9yX0z/l4p3/3FkUf98bFr/iX1p/6+nk/+bjHr/gW9d/2tZR/9dQi3/Xj4p/1c7
+        Lf9YQjL/WEcq/3lhRv9vUjj/XTwm/21LNv9pRTD/W0Ep/6uafP+AcEz/Yk4r/2ZLL/9kSi7/X0Up/1lA
+        IP9cQiP/X0Um/2RHJv9mSSb/Zkgm/2pRKv9lVCj/bVg1/39tTP9vZT3/YlEq/2lTLP9lVCf/qZ9s/8PA
+        hf+6vov/5fDa/+/38P/5++//7vjp/+336P/y/Oz/9f7u//L77P/u9+r/9f3t//f/7P/p89//0tu3/8HH
+        jf+6voL/wMB//8nHh//JwYb/uap0/7uudP/CtHn/taBm/6mVYP+cjVz/mIJS/4dtO/95YCT/e2Aq/35g
+        Mf90WzD/lYRg/6CVe/+BbFb/h2tT/5Z9Yf+BZ0n/a04z/1w+I/9XOR7/Uzgb/1I2Hv9TNiP/WDkp/1g6
+        Kf9ZOin/Wz8v/1hCM/9YQjP/V0Ex/15BL/9ePzH/XTw1/149M/9gQTH/bE85/3VaRP98Zkv/eGFG/2JG
+        PP9jRj3/Y0Y8/3teVf+WhHL/d2RT/2BEO/9nSUH/Z0pB/2RHPv92UkX/jWpd/3NQQ/9mRzj/loBv/5uR
+        ff+uqZb/o5aH/6WShP9mTUD/aEs6/2ZHNv9gQjH/XT8u/1w+Lf9jRDP/e2ZU/5WRfP+urpn/rrKc/6qr
+        lf94a1j/bFRC/2lPPv9gRjT/WT8u/11DLf9uV0H/ZFFB/19PP/9qXEL/dmJJ/3lgSP9jRTD/XT8q/2lK
+        Nv9ZQir/t6iL/3lqRv9bRyX/YUUr/19EKf9cQSX/XEMk/15FJf9fRiX/Ykkm/2dOKv9vVTH/alYv/2FT
+        LP+Fc1T/loRl/3BgNv9xWzH/dVkx/2hRJv95aTn/vrV9/7m1ff/k7M7/7vvz//X78//2/vL/9v7z//f/
+        9P/3//X/9//1//T88f/z/O//9P7u//P97//1/e//9Pnk/+Tswf/Fzo//ur99/8TFgf/Kxn//vbh5/7ev
+        c/+/sHX/t6hu/6mdZv+ijln/nIVP/5eCRf+Ndj//gGc2/4F+U/+0ron/hGhH/3dYNv9xVTP/d1k8/5J0
+        Wv9sTTL/Wjsg/1w+I/9VOh3/VDgg/1Y4Jv9ZOir/WTsq/19BMP9dQTD/Vz0v/1c9L/9YPi//ZUg1/14/
+        Mf9ZODH/Xj00/19AMf9yVED/gGZO/5F9XP+Tf17/ZEk7/2NGPf9cPzb/aUxD/6qZhv9+bFr/VDgv/2JE
+        PP9jRj3/Y0Y9/25MP/94Vkn/bkk9/3heSv+Zh2//cWBI/25eR/9qV0T/dltJ/29PPv9nSDf/YkQz/2JE
+        M/9gQjL/WTsq/19AL/9gRzX/hnlm/8jBrf/Dwaz/saqX/7Sql/+Lf2z/XUIx/14+Lv9ePi7/WUEr/2pa
+        Q/+GeGn/kYd4/6+olP+kl4X/hnJg/1lBLP9gSTP/fGNN/1dBKP9uXD//f3BL/1tGJP9eQij/XkQp/11C
+        J/9eRSX/X0Ym/15FJf9iTir/Z1Qv/2tXMv91ZUD/ZFk3/6WXfv+nl37/bFYt/3tgOf96WDL/dFgu/2dT
+        I/+hk1z/wbp4/9rgtv/s/vT/7/35//f99//z+vT/9vz2//j++f/3/vj/9vz3//b+9f/2/vP/9Pzx//D6
+        8v/s+e//8v3n/+731v/Y2a//w8OM/8C/e//Ew4P/v7x//7asb/+wpGj/sadq/7KfY/+jjlH/lYRH/5aE
+        Tf+bh1b/qKaA/5aQaf+Kc0T/dFgk/3ZYKv9uSy7/YDsn/4BjSP+Mb1P/ZEcr/1c9IP9WOiL/ZEY0/2VH
+        N/9fQTD/YkQz/2ZHN/9ZOCv/YkE0/1w7Lv9WOCX/Wzst/108Nf9aOTH/WTkr/3NWQf+HblT/m4hi/6aS
+        bP9cQi//XD82/1g7Mv9XOjL/bl5L/21bSf9uUkr/X0E6/19COf9fQjn/dk0//3VSQ/+Td2f/nop1/2tW
+        Pv90VD//dlY//21QOP9sSzf/dFBA/2lLOv9hQzL/Y0U0/2tMOf9rSzj/YEAt/2BDL/9cRC//ZEk1/4Fm
+        Uv92Xkb/b1pC/2hYP/9jRjL/Y0Iv/2NCMP9rTTj/WkUv/1xQPP+Demb/qJeD/5N/a/9oUT7/XkYx/1ZB
+        LP+Ofmn/qJl+/4V0U/9kVi//YU8r/19DKP9iRCn/ZkUr/2FEJv9gRCX/Ykcn/1xJKP9rXTj/koRc/66l
+        gv+tpIv/fGxO/5eDX/+CaT3/d1ou/3xZLv95XS//dF4t/3hjMP+9r3P/1tqv//H78P/1+fn/9/73/+73
+        8P/s9/D/+P74//f8+P/4+/z/9/z5//b99v/3/ff/9f31/+/77//t9+z/7fXq//L55//n7tL/ztGt/73D
+        iv+9wIP/yMON/8S7gf+poWL/pZtl/62ibf+lml3/lIVL/6SQWf+ci1z/e2k8/4FtPv+Wfk7/clQp/3VQ
+        Mv9xSDP/akcu/3JOOP9hPCn/XDwe/1c5Hf93WkT/dFZE/1c4KP9bPSz/WTsp/1w9Kv9xUEL/ZkU5/04v
+        IP9oSDv/clFH/1U3Jf9ePy//d1lH/494Wf+ajF7/t6x//2hYPv9QMif/Vzgu/1s8Mv9WPS7/f2VW/4dp
+        Xf9pSUD/YUE6/18/OP99WUn/kHNi/6eQfv+Rfmn/bFdA/3JVQf9yVj3/cFY6/21RPP9pSzz/aEo5/2RG
+        Nf9iRDP/YUAs/2pJNP9vTTn/cFM+/15HMf9kRC//aEYw/2ZKLv9mSi7/bVE1/3BVPv9wVkH/ak85/2lP
+        Of9bQy7/VkYu/1hIMP9hSDH/ZUw2/2RMNf9jTDT/bFpA/3JlS/+0sZv/qqmT/314Xf9mWDr/Y0Yr/2ZF
+        K/9pQyn/ZUco/2JFJv9kRif/X0sr/2FRLv9qWzH/cWQ//3ttT/98aUT/hnJH/3hmOP+Baz7/hGg8/3pi
+        Mf93YS//dVwq/5eNXP/M1qz/3erU//X7+P/2//T/6/nu/9zs4f/s9ur/9/73//P5+P/2+/n/9fz2//b8
+        9//3/fb/+P/2//f+9f/y+vH/6fjr/+n15P/s8t//3ui//9DYqf/NzaL/0c+d/8LAiP+xrn//sKp7/6ie
+        Yv+rnGH/moRK/5eCR/+jjFb/eWAx/5uEWP+DaUD/b0sq/3RML/9pRCn/XDQg/1oxIf9cNxr/XDsg/1w+
+        Kf9nSjj/YkQz/1s8LP9bPSr/aEw1/14/L/9cPDH/UTEl/1U1KP9tTUD/YUUt/2VHNf9yU0P/loFd/6Gb
+        Zv/Cwo7/sayM/04xIv9cPC7/WTkr/1w7L/9cOy//YEAz/2BANP9jQjn/YkE4/5SGdP+Yg3L/gWRU/4t1
+        YP+OeWT/e15K/3RXP/94XUH/b1I9/2dIOP9kRjX/ZEY1/2BCMf9gPyz/Xz4q/2RCLv9kRzL/X0gy/2ND
+        L/9mRS//Ykct/2VLMP9xVjz/lYdv/6Oag/+AdV7/ZFpC/1xMNf9eRjD/X0Qv/15GMP9dRS//XUUv/2dR
+        M/+Pfl//m49v/8bLsv+3vqf/fG5U/2dPM/9kSC3/ZkUr/2lDKv9mSCn/Z0sr/2ZIKf9mSiz/Y0oo/2NP
+        Jv9lTyL/dFot/5uHYf9yZUL/m5hx/6Wcdv+UhF7/gGo6/3RdKv94YCz/o5dx/7Cwgv+/xZr/8Pvw//n/
+        +P/p9uz/wtTI/8ndyP/Y6dj/5PTq//P79//x9fH/9Pr0//n/+//6//7/9/z7//f8+//w/PX/7vbr//H0
+        5f/t+Of/6vfh/9ffvv/Y4bn/y9Sn/9bTpP+2qnb/ppxf/6WWW/+ok1n/modI/6WTVv+eiVP/fmg1/3FY
+        KP9vTiX/bUck/25MKv9pRCj/XTcf/1ozG/9aNiL/Y0I1/2JDNf9sTz7/Wz4t/1U4JP9rTzf/ZUY2/1My
+        J/9RMiX/TS0g/0srH/9nSzP/XT8t/21NPv+Vg17/qqxw/8TKkP/c3bb/YEQu/1g7J/9fQy7/XT4v/1Iy
+        Jf9VNSj/Vzgp/2NFNP9wUkH/hHJc/7qlkP+UfWj/lIFn/5WBZf+McFX/d1xB/3NcQ/9tUTz/Zkc2/2BC
+        Mf9hQzL/YEIx/10+Kv9ePir/Y0Mv/2dLNP9kSzP/Zkgx/2pMM/9uVDX/eF5A/3RaO/+Dd1z/pp+G/7Gp
+        kP+Wj3X/hXpg/2xVPf9jSTH/Ykoy/2JKM/9jTDT/ZE8u/2pZNf9mVjP/jYpm/6KffP90XTf/YUMh/2FF
+        Kf9lRSn/ZUMn/2NGKP9lSSr/Y0cp/19KKf9mTiv/cU8r/2tJIP90XS//moVc/3VnPv+DfEz/h3xT/5yY
+        dv+SgFf/fmc6/3xqOf+Bbkj/dGE0/5WIWf/d3Mf/+P/6//T+9v/c6Nv/s8e2/7PIt//Q5dP/5/no/+Tw
+        5P/s9e7/+f38//v9/v/7/f7/+/7+//f9+v/2+/P/+Pru/+v68P/j8+f/6fTe/9nmzP/M2bn/0NGh/8nB
+        h/+3rHH/rp9l/6qUW/+nlFb/pZJV/6eSWf+TgUX/hG82/3dVJ/+BWTL/bk0m/21KKP9mQib/Wjci/1My
+        Iv9VNCv/TzEf/2RGL/91VUb/UjIk/1w/K/9pSjr/UzMm/1IyI/9RMCH/XDwt/4FjTP9bPSf/bEw2/5KB
+        Wf+3vX3/yNaT/+Tvwf97Z1H/UDEZ/1w8J/9UNCb/UzMm/0wsH/9ZOiv/XD0t/2RFNv+FalP/iHNc/62i
+        if+Og2T/dGJC/39mRv97Y0f/Z1Q+/2hMN/9oSTT/YEIx/2BCMf9gQjH/X0Iu/2JFMP9kRzL/Zkoy/2VK
+        Lv9mSzD/a1Ez/4BoRP9wWDP/blcy/2hUNv9kUTX/bVo+/3RhRP9xYEL/Y1I1/19NMP9iTDD/ZE0y/2RO
+        Mf9jUCv/bls1/2pWMP+BdE//e29M/2dVMP9kTCr/ZEYn/2RHKP9fQyT/X0Um/2FIKf9fRif/X0om/2NL
+        J/9nRCL/a1At/2dbNf+JdEn/gGs4/3RiJv+Aajv/iYlj/52Zdf+Wh1//f2k9/3dgMP+Idkn/hHNM/8G7
+        l//q9uL/9/v2//r/9P/D0cz/wtTI/9Xr0f/M6cj/0urS/+Xz6v/2+vr//fz8//7+/v/+/v7/9/j0//X3
+        7v/4/O7/7P3r/+n76v/p9OX/5/Lk/+n13//W3bP/wcGJ/8G7gv+7sHj/tqVt/6+eZ/+unmb/nItU/6CU
+        V/+Uhkj/iGc1/5hvQ/+GZzr/a0oj/3NRL/9vUjn/VDYi/1o5Lv9bPCT/Vjgb/25LO/9QLiH/VDYk/1c5
+        J/9RMyD/VjUf/1Y2IP9zUz3/cFA5/2BDJv94Wjj/loRZ/73Dgv/M3Zn/7PzR/4qAb/9eOiH/Zjwv/08v
+        IP9NMBz/XkAt/15AMP9OLSL/Vzcr/4+LeP+3sJ3/p5uJ/5SKcf+cj3P/emVK/3VfR/9rV0L/Z0s2/2pL
+        Nv9mSDf/YkQz/2FDMv9kRzP/ZUgz/2RHMv9lSTL/aE0y/2RILv9qTzL/c1s3/29XM/9rUy//ZU8s/2ZQ
+        Lv9pUzD/alM0/2NKL/9iSS7/ZU0w/2NQLP9kUS7/Y1As/2dVKv9sWzD/bVww/3NkPP9nVjL/Ykol/2VJ
+        J/9iRif/Y0Yn/2BDJP9dRiD/YUok/2JLJf9mRCL/fF88/6mbdf+qonv/jn9Y/2RPJP+Cb0D/alko/4Ro
+        O/+ll2v/hYZY/3NpOf96Xy3/fmEt/4BpN/+QfE//g3dL/8rMqv////r/8vzz/+v78f/o++n/2vHS/8jk
+        w//I4Mn/1OHZ//n9/f/6+vr/+vr7//z9/f/t9O//7fbs/+756v/q/Ov/7P3t//L87P/u++v/5PXh/+zx
+        1//c3bf/vcOG/76/hf+8uH7/xsCN/9LLmv/Bu4j/mJFd/6GVX/+Xf0f/h2gw/4ZpNv9zVCb/dVUs/3FQ
+        Mv9iQCf/Xjoo/1UzIf90VED/Wzsk/1k7I/9LLxf/TzMb/1A1HP9fQSb/dFU6/3xeQv9pSjH/YkQp/3ha
+        Ov+OfU//v8aC/9DcpP/y/eH/lYl5/1k2Hf9SKhz/a006/25TOv9aPib/Wj4o/1E0If9YOif/v8e1/7a1
+        pP+1qZr/pZyH/6yjjP+HeGL/c2FK/2tYP/9pTjn/aUo2/2dJN/9jRjT/Zkc3/2hKNv9mSTP/YkUw/2ZK
+        Mf9oTTH/Z00x/3JYOv91XTn/bVUx/2xUMP9sUy7/bVQu/2xTLf9qTy//Z0sw/2ZJLv9oTjD/Z1Qt/2tY
+        Mv9rWDH/a1wt/2xdLf9sXS3/cF41/2hQLv9pSyj/a0sp/2hKK/9hQyT/YkYm/2FKIf9kTiT/Z1En/3xm
+        Qv+smnX/qJdy/31uSP9yZD3/bFcs/3ZkN/9uYDX/gmQ3/4BpN/9xYTH/c2Qx/3NmLf95Yyr/emAq/3li
+        Mv9yYC//jIhc//j47v/w/Pb/4vTm/7zTu/+1z6v/wd67/8Xcxv/R39X/9vv5//j49//t7ez/9vj2/+r1
+        7v/l9Oj/3u/f/9zw3//a7Nv/5/Hi//H/8P/o/Or/6/Di/+3v1f/Z6K7/vceN/7e7f/+7u4n/ysqb/76+
+        j//EwZP/qqFw/6GOU/+TeTr/gWYu/4ZpN/96Wy//cE0p/2hDJ/9mPij/WTMl/1c1Jf9hQif/XkEi/1M3
+        G/9UOR3/a1A0/35hQv9cPx//YEIi/2BBJv9iRCn/d1k5/45+Tv+9xH//4ey7//r/8f+Lf3D/VTMY/1ox
+        Iv9hRC3/X0Uo/00yFv9SNhz/Uzcf/1o9Jv+ThWv/kYFn/418Yv+woY3/v722/9bazv+KhmH/c2Y5/3Zc
+        RP9xUEL/ZVAy/2hONP9yUD7/bU43/21QN/9qTDT/ZUot/2hQLP95YT7/eF88/2tTL/9vVzP/blYy/2hU
+        LP9sWTD/algv/2lTLv9rUjD/bFQx/29XM/9vWTD/dF41/3RfNv9qXDL/aVwx/2ldMv9uWTb/gGVH/2ZN
+        L/9dPx7/ZUIf/2ZGKP9nSy7/aFIq/2pVK/9uVy7/dWhG/8zKpf+SgFr/XUEX/2tcLv+RgFf/mYxm/4+N
+        Yf94aDr/d1sq/3tdLv95Xi//eF4v/31lM/95YS7/fGQz/31oMf9lWhz/oZ2C//3+/f/c6d//sc65/6rE
+        pP+xxaj/tsy0/83jyv/o9+X/9Pvw/+326f/n8OP/5ffk/9Lo1//H4dT/yuPS/9Xp2v/o8+v/9f74//H/
+        8//2+vH/7/To/+Dz2v/g6sL/zM2S/7++f/+4tnv/trN8/7aqe/++rn//pJJY/6aRUP+McTf/kXRB/5l6
+        Tf94Vin/dU8r/2Y7JP9jOyn/WDMf/1MuGv9aNR//VjIX/2xJKf93VTX/Vjka/1Y0Fv9iOx3/Yz0f/2I/
+        Kf96XED/kIRQ/8XMk//t9tX/9//2/5eRff97Wjn/bEQp/11BJ/9sTzT/XTkf/1MwFv9TNRv/VDYb/4Zx
+        Uf+Cbk3/l4Ni/5uFaf+vppf/urij/5WNY/+GeUz/eWJB/3daPv9sWjT/cFg4/3ZVPf93XkH/oYts/4Vu
+        T/9oUTD/bVUx/3FZNf9xWTX/bVUx/29XM/9vVzP/bVoy/2xbMf9pVy7/alYt/21XLf9vWTD/cVsy/3Nd
+        NP92YDb/dV82/21bMv9tXDP/bl0z/2JVLv9wZ0L/dm1H/4x+X/+HcVj/WUEk/2VKKv9rVS3/bFct/3Nd
+        NP99dlD/r6mB/4VyRv9rVCX/h3dJ/6WVbf+IeFP/c2U6/2tYKv93Xi3/f2o+/5eEWv+Tf1b/fmk6/4Fq
+        OP96ZDP/f2Yw/4luKf9tXyf/xLyo/+/67v+51sT/tsu5/8vbxv+yya//tMux/9vt1v/p8+H/6/bk/+jz
+        4P/T5dD/z+bV/7bRxP/C4M7/2vPj/+Hx6f/p9fD/8v33//r9+f/7/ff/6/bq/+723v/p7sr/xtOW/7jB
+        e//Avnb/sKdm/6mdY/+qmF3/n4lM/6iPUP+fhEv/m35L/3hYJP+HZDn/cUks/2M4I/9pPiv/Wy8d/2U7
+        KP9eOR//aEUl/3FPLv9ZPB3/WDYY/2E4G/9jPB3/Xzsl/3lbP/+Ui1P/19yr//f86v/9//v/hoFs/1c3
+        Ff91TDD/X0Mp/2NGK/9pRSv/XDge/1c5Hv9XOR7/k3lV/5B3Uv+NdE//jnJO/5F/Zf+on33/h3lL/5SG
+        Xf+EcEX/emM2/3JjNv94YTz/hWZI/4RyTv9+cUr/bF84/21bNv9wVzT/cFg0/3JaNv9vVzP/c1s4/3Rc
+        OP9yXzf/cF41/2xaMf9tWi3/blkr/3JdL/9xXC//clwz/3VfNv91Xzb/dV01/3VdNf92XjX/blkw/2pX
+        Lf9pVSj/j4Ro/+Pf1P+3qI3/bFUx/21WLf9vWTD/jnhQ/7u9kf+WiV3/cVop/2pcKf9tXS//a1oy/21W
+        Mv94WTH/dlww/3ReLP+glm7/n5dz/4+HYv+Yhln/hGs4/413Rf9/ZDb/jnE7/52WVf+xrZb/1ePT/8nm
+        1v+7y8n/4vDi/87kyv+80rr/ytzE/9vnz//j79f/4/DY/8zfyf/S6dj/uNLG/7bZxv/G59b/0unf/+Lx
+        7v/r9PT/9vf5//z6+//5/Pf/8/ry/+fy6P/c8ND/xc+e/8a8gf/IwHb/ta9j/66dXv+mj1T/o4xG/6mQ
+        UP+IbTT/gmQr/4FfMP+FXzz/bkEr/2g2Jf9yQC7/WiwZ/3FLM/9nQyP/fVw4/3JVNv9fPR//ZDwf/2I7
+        HP9eOiT/elxA/5mQVv/Y2rH/+fn2//v/+P+Qi3b/VjYV/3dPM/9hRSz/YEMo/2VBJ/9gPSP/Vzof/1Y4
+        Hf+Selb/kXhU/411Uf+Odk3/jHhQ/4V1Uf9/cE3/hnZT/4ZzRf+Ebzv/f2g5/4JwQv+YjmD/iXlN/3pn
+        O/96aDz/dGA0/3NdM/9zWzb/c1o3/3RdNf94Yzf/eGQ1/3toN/96Zjn/dF43/3NeMv9zXy//dGAw/3Rf
+        Mf9zXjH/d2I0/3hjNv93YDf/eWM6/3ZgN/98Yzr/hGpC/4pvRf9rVTT/e25V/+XXtP+Vh17/bVgl/4Vw
+        PP+Ebzv/j4VO/39sQf9vVif/dWAp/3JcLP9yXCz/cFkq/3JYKf9yWin/emQy/4h1Sf+Ackf/pZ1x/52U
+        af+nnHD/jX9R/3prNf+Ffkj/ubiX/6qjd/+BdU3/zNPE/8POz//Q4tT/z+fP/7vNuP/H2cD/x92//9/z
+        2v/V6NL/xt/M/7bMyP/C2tP/5fbp/+n06f/r9+j/7vrr/+357//x+vT/9Pr5//T49//1+/f/9fz1/+T4
+        7f/f8NX/ztCh/8DEgP/LzpD/ycGU/7yvef+iklb/nIlL/6SNTf+Hbyv/gGIt/3hSNv98Ujv/Yjce/3RH
+        Nf9wQzT/Uysb/2Y/KP9lQSX/ZUMi/2NBH/9oQyL/akko/2JFJP98ZkD/pJlg/8nNoP/z+/H////4/5mJ
+        bP9jOxr/bEgk/2RDI/9jQSP/ZEAj/149H/9XOxz/WTwe/412Uv+NdlL/jXVS/494Uf+LdU//koBh/4Z4
+        V/+GeU//hHFG/4RsQP+Db0H/k4NU/3NoN/95aDf/f2o5/3tnN/94ZTP/d2My/3dhN/95Yjv/e2U7/3ll
+        Nv96ZzT/f243/39sOf91YDT/dWA0/3djNP93YzT/d2M0/3ZiM/94ZDX/eWQ2/3ljOv96ZDv/d2A3/4Bx
+        SP+dlWv/l45i/6OYcf+bjGj/inxT/3ZoOv94ZC3/e2Yu/3xnL/+FekD/l4Zd/4JtP/93YSr/dV4s/3Ve
+        K/91Xiv/dV8t/3VfLP96YzH/fGQ0/4FtPP+Hd0X/oKFx/5OVZv+LdkX/i281/4N7QP+jnXr/jXxI/3xm
+        M/99d1n/w8zC/8bdzf/D28T/t8ez/8XWvf+/2Lj/1uzT/9/z4P++2Mn/pru//6/FxP/f7OL/8fvw/+by
+        4f/r+eP/8v/u//H+8v/z/fX/8vrx//f9+P/8//3/8P73/+n45f/p8s//2N+2/9HSrv/b2Lf/xsCU/8rB
+        iP+hlFf/n45L/6WTQ/+Fbyn/im46/3dULv9zTC7/Zj0l/3NJNv9bMyD/YDoi/2dDJv9mQyD/ZUIg/2pH
+        Jf9rTCj/aE8m/4h3SP+jmGD/t76J/+r64f////b/h3FT/2k+Hf9qSB//Yj8e/2M+If9gPB7/WTga/1Q3
+        GP9ZPBz/jHNP/410UP+JcEz/i3FP/4lxU/++qpT/npFv/391Qv+Ebkf/hGlH/4F4Sf+Edkb/fGQ2/4Bt
+        OP99bDT/e2oy/3pqMf95aDH/e2c3/3tmO/97ZTz/fWg6/4BtO/+DdDj/gG82/3pnNf94ZDX/eGQ1/3dj
+        Nf93YzT/dWEy/3djNP96ZTf/emM8/3hiOv94Yzr/eGc9/3ttQv97bUP/mItj/5yQaP9vYzP/c2cy/3di
+        K/96ZC7/eWMs/316P//Jwpn/va+B/3tqMv9yWij/dl8t/3lhMP95YjD/emMx/3xkMv+CZzL/gWo0/5GA
+        SP+gm2b/hH5K/4x0Pf+ObDH/hXA0/31wPP+Gazr/h3U9/4x/Tf+hpo//yODP/8Xexf+tvan/v9C2/7vU
+        tP/C2L//6Pvp/8Tc0v+nusP/nLG1/77Pxv/r+u//4PPh/9ns0//o99//8v/u//H87v/w+uj/9/z5//n6
+        ///3+/j/9v7z/+z36P/p8tX/0t2o/73Hg//Hyoz/trN5/7u0d/+XjEn/qZNL/5yDPv+JcS//kHA//3JL
+        KP9ySi3/Yjkh/2A6Iv9nQiX/a0gm/2hFJP9oRSP/bksp/2dJIP95YTL/k4NO/52SWf+ttnr/2+/J//T4
+        7v9uVzv/ZzoY/2RCGv9fPR3/YTwf/1s2Gf9WNBf/UzYX/1U3Gf+RfVv/loFf/415V/+PeFb/jXVV/4Zw
+        Vv+LelL/gnU+/5KAXP+Yhmn/gnhK/3doOP+Caz3/f2w2/35tNP96aTH/fGsy/31tNP95ZzL/eWY0/39r
+        PP+Cbz3/hHE9/4l5P/+Hdj7/hHI+/3xpOP96Zzb/fGg4/3xpOP96Zjb/emY2/4FtPf98azj/fWc5/4Rm
+        Pf+EaEb/oY5r/4xvR/9rVyv/b2E1/5+VZ/+RiVr/jX5J/4NxOv9/bDL/cmgt/4d8Sv+PgEz/eGYx/3Nc
+        Lv9zXyr/fWky/3tlM/99aDX/fmg2/4BqMf+FbzT/jno//5N/SP+Hcz3/hnI5/4lzOP+Iczf/gXA5/4tx
+        Qv+JdkD/npBR/5edgf+0zMX/x9jK/8PVwv+40bf/xt3A/8bdwv/o/uX/1Ozj/52vu/+cr7j/qsG3/8/l
+        1//e8+H/z+XO/87jzf+/1L//1+rU/+n53f/y/O3/+Pj8//v69//6/fX/9vz0//H18//r8uL/4+zE/9PX
+        q//Av4T/qKNf/7qsa/+dj1L/taJq/6SKWf+bfk//i21A/3BNJP9zTiv/ZUEj/2lGJf9/Xjj/dFQp/2xL
+        Jv9yTTH/YUId/4t1Q/+ej1j/mZBY/6uzdv/Q4bD/4ePR/1U+H/9dNxT/XDsU/10+Gf9bOxj/WjoW/1Y3
+        Ff9SNhX/UTUT/5GBYP+WhmX/mIho/5KBXv+Gc07/hHJN/4FvQ/+Kekj/l41l/4iAXf99bT//fm4//3ts
+        Pf98bDb/fWsz/31rNP98azT/eWgw/3dmLf97ajL/gG82/4RzOv+Idz7/indD/4p2RP+Gc0D/g3A9/4Fu
+        Ov+Bbzv/gW47/39sOP+AbTr/g3E9/31xMv+Aajb/iGU9/39iR/+ln3//eFsx/2tcKv96ajv/e29G/5+X
+        cf+fmGb/joRL/4NyNv+DcDf/fGoy/418Qv+LeEb/dF8z/25cJv91ZSr/e2g1/35rOP99ajf/eWsw/4Nw
+        NP+Mczj/inE5/4t2P/+MdkD/gGs0/4BvN/98aTf/jHhM/5aEVP+bj1H/j5Jz/6O0tv/Aysr/wNXK/7fX
+        xP/Q5M//1uzT/9721//F4M//l6my/52uuf+qxbz/ttHC/9zw3f/I3sv/qsa3/6zIt/+xzbj/0erK/+b5
+        2//3/fb/+/z3//r88v/3+e//8vr1//D89f/x++b/2uHB/8rLl//Gwnr/tKJj/7Wpav+xpm//0cWd/7Wm
+        e/+bh1T/hGk3/3BRI/9zUyr/cVEo/3hYLv+HazX/cVIn/3JMM/9jQyH/inNE/6qZZP+fmGD/ubx//9jd
+        p//AwKH/RzML/1g+Ff9bOhP/WD0Q/1E6DP9QOAr/TzcL/040C/9NNAr/gGxF/35pQf+FcEf/fmxJ/5WG
+        aP+mlnn/rKB//5CHXv+Vh1z/fWw//3tqPP9+bj//fm4//3xsNv99bTT/f242/31tNP96aTH/e2oy/31s
+        NP9+bTX/gG43/4NyOv+HdUH/iHVD/4d0Qv+IdUL/hXJA/4VyP/+Bbzz/gW47/4JvPP+DcDz/hXI7/35r
+        Pv98aEX/kH1e/4aBWf97YS//eWkw/31pNf+GdUb/o5dr/6mhb/+UiVH/g3I1/4l8SP+aj1//mY5e/31v
+        O/+GdD7/e2g2/3NfMP9xXiv/eGQy/31qN/99azf/hG46/4ZqN/+CaTT/g283/4RvOP9/azT/fm00/35q
+        OP+EcUP/k4dV/5aEUP+QiV7/n6ib/8LW0/+2zc7/ucvI/9Hj0//S5tH/2O7U/9ju2f+wvcL/rLm//67I
+        vf/A28z/xtrH/9Ho0v+iv63/qL+4/5mwrP+wzLb/1O/P/+X15P/w+fH/7/ju/+737f/w+/P/8Pv1//j7
+        9f/7+/X/2N2//8PJiv/Fv3//sqJc/7KkZf+ooG//u7OG/7yugf+ijWH/fWE2/3RVKP+AYTT/b1Aj/3pc
+        LP9zVCb/a0se/19BFv94YDL/opJd/52TWf+4t3T/296i/5iVcv9INgj/VTwN/1Q1CP9PNgP/TDcB/0w2
+        Af9MNgP/TTUH/0w0Bf+Ia0H/gGU+/4FmQ/+lmHr/oJh8/5+Scf+imHX/eHFK/4FvQf+IcT//f28+/31u
+        Pv+CckP/iHZA/4d1Pf+DcDn/g3E5/4JxOf+CcTn/f242/4JxOP+Dcjn/gnE4/4RyPf+DcTz/g3E8/4Ry
+        PP+HdT//h3VA/4NwPP+Ebj3/gm09/4VxQf+Bajb/hHNK/7qxl/+rnn3/g3xM/4dyO/+Cczf/inU8/4p4
+        RP+QgU//hX1H/3xvN/+CcDb/gXNB/46CUv+Dd0f/jH9I/6GRVv+ij2L/gGpA/3FfK/93ZTH/d2Ux/3dm
+        Mv98ZzX/f2I2/4BlNP+KdD7/g2w3/31nMf+Bbzj/e2Y2/3pmOf+CdkT/j3pL/4t7Sf+Ni27/pLe9/67B
+        zv+5x8v/x9rP/8fb0P/I3sz/zOHM/97s6P/n8/L/0ebd/8HYyv+/0L7/yeDF/8Pfx/+it7b/kqWv/6jE
+        uP/N7M3/1u3Y/8/f1f/i8eb/6vjt//L99//2/fz/+/v9//r6/v/p9eT/w86Z/7y/fv/ExX//vLd3/7mo
+        cv+mlmr/raB3/5+KYv+ReE3/gGUw/4BkLv9zViD/bU8g/3ZaKP+CaTH/aU8c/35mNv+hkFr/o5lc/7Wy
+        bP/b2Z3/Yloz/0IwAP9ROgb/VTgG/1A4Av9OOQL/TjkC/085BP9QOgf/TzgF/4doP/+ReFz/wK6h/8XD
+        rf9zc07/cmQw/3poMv9+b0D/hW4//4RrPf9+bzv/gXM//4J0QP+Hcjz/iHE6/4lxO/+GcTr/gXE5/4Jx
+        Of+BcDj/gXE2/4V1Ov+FdTr/hHQ5/4R0Of+EdDr/g3Q0/4Z4OP+EdDr/h3Q+/4lyPf+Cbj7/eWc7/3ph
+        M/+qmnX/3Ne8/6CXa/+IekD/gnU+/4FyOv+BcDj/gXA4/4BvN/92bC7/eWkw/4NqOv+Gbjr/hG40/4Rv
+        MP+PfT//hnU//4FtPf95ZDb/d2Uu/3ZlLf91ZCz/Z1Yj/3RfL/9+YDX/fl8x/4RmNf+SdEP/hWk3/3pj
+        Mf96YjX/dlw0/3diNP+CbkD/gWw8/4R0Rv+Nlav/n6O9/6a9w/+zycz/q8LD/7LJx/+2z8b/vtPK/87e
+        1v/o9Or/6ffm/9Lkxv/J4bj/zufG/7PHxf+Vp7X/ore3/8Xhz//D3dH/t87F/93v4//o9uv/9fj1//38
+        /f///v7/+P38/+//9//y+N3/x8aZ/8HDjP/T0Zz/0caU/7GkcP+nl2H/o41Y/4dwOv+Kdjr/fGQj/3xg
+        Hf9qThf/clsm/7Ghav9+aC//pYxS/7OfZf+up2b/s7Rx/8/Gkv9NPBL/SzgG/1M7Cf9UNwb/UjkI/1Q9
+        DP9UPQ3/Uz0K/1M+Bv9VQAn/cl85/6idev+fn3//aGU9/3lvQP9/cT//f3A9/3tsPf9/aDr/g2o8/31u
+        O/+CdED/gnRA/4JyPP+Dczv/g3M7/4JyOv+CcTn/gnE5/4JxOf+Dczj/hnY7/4d3PP+DdDn/hHQ5/4Nz
+        Of+Edjb/iHo6/5GBR/+OfET/gXI1/3FnLf+GfUv/mIRk/8S4j/+gnGf/enI5/4h6Qv+CdT3/gnM7/4Jx
+        Of+Dcjv/gXE4/3pwMv99bTX/g2o6/3poMv+DdDn/j4FB/35wL/9+bjL/fm02/3tnNP98ZS//e2Qu/3tk
+        Lf9hRSL/YUEf/35bLf+AXy7/fmAw/35gL/99YS//d2Au/3tiNv94Xjf/dV42/3ReNf91XjX/a1sv/4yY
+        of+dorz/jZm5/6Grvf/D1ND/u83M/7XQ0v+qwcP/rL3A/7XHu//L38j/0evG/7rUrf+1y7P/tMrC/6a5
+        wv+UprH/s8rE/7nOzv+wxr7/3/Hl//L/9f/4+/j//fz9/////v/7/P7/9ff+//z7+v/u7d//xc2X/8bK
+        kv/Z1KT/yMSJ/6GcWP+pnlv/lYRG/413Qv+GbDH/e14f/2ZMEP96ZSn/koRI/2hTGP+EazL/qZZc/7as
+        a/+5tHH/rJxp/043Dv9ZRhT/UDkG/1M1BP9VPQf/V0MM/1pFDv9bRw3/XUkN/1tIDP+JZUb/kXpV/351
+        S/+GeUX/gXE5/3psO/97bz//fW4+/4FqPP+HbkD/fm87/4FzP/+DdEH/gHQ8/390O/9/dDv/f3I5/4V0
+        PP+Eczv/hnY9/4Z2O/+Gdjv/hXU6/4Z2O/+Hdzz/hXU6/4h5Of+HeDj/j39E/35tOP+Kek7/taqC/8S8
+        mf+ck2r/bWMz/3hsN/+Edz//hnlB/4d6Qv+DdT3/gnA4/4JxOf+Ccjn/fHM1/39vN/+KcEH/gnQ+/5iO
+        Uv+UjEz/e3Iu/31vLf9+bzP/fWky/4BjLv99YCv/f2Mt/3pbMf9nQiD/cEEk/3pVK/9/YzD/fV4t/3tf
+        LP92Xy3/dl0x/3heN/90XDj/b1g0/3ZdOv9gUCT/n6+s/6yyy/96fLP/kZKz/7HAuP/E0tP/psLO/6O9
+        yP+cr7z/qLq9/7fLxP+50r3/v9e9/8vezf+3zsL/rsPH/5qovv+Uqaz/m622/6i+uP/m+ez/6vft/+zv
+        7P/6+fr/+/v7//z7+v/9+/f/+fv2//P57//s8dH/vcKR/7vBfP/DxIX/ubSA/7Cmcf+tnWn/kXlI/5B0
+        Pv+EZiv/dVsc/4FuLv+Kfj3/X0oO/25VHP+ciU//qJxc/7uxb/+OeEb/TTIJ/0w5B/9SOwj/WTsL/1tE
+        C/9dSg7/YE0R/19ND/9fTgz/YU8O/4VoPP+RdVL/tKyU/52Ycf90Zjf/e2k//3djNv99azn/f2s6/4Ft
+        O/9/cjv/gXQ9/4BzPP+Aczv/f3M6/35yOv+Bczj/iHY5/4p2QP+HdED/hXc//4h6Qv+Qgkr/jn5F/49+
+        Rf+Sgkn/jHY5/5V1O/+CaDj/e20//7CpjP/S1cb/iHhQ/3tzO/98cjr/hHI8/4ZzP/+CcT3/kYBM/4dw
+        P/+KbT7/hW86/4JvOP+Hcj3/g287/3dkMv+on3b/o5ln/4d5M/+GeTH/fHE0/3xrMP9+aC7/gmUt/39i
+        Kv9/Yir/fmYu/3VVKv9wQy3/a0Io/29NKf9xTSv/bkwn/3lcMP99XzX/e101/3JaNf93YT3/dFw4/19S
+        L/+YoYj/2uLw/52wv/+lp6n/YE5E/52hj/+yzc3/rcTR/6zHxf+Oqan/jKSl/560r//D1sT/6fvf/+j9
+        7P/F29b/orS//4+hq/+aqrv/rcPA/8LXzP/D0cn/0+LW/+377//0/Pb/+fz5//3+9//6/PX/9fnz/+z7
+        8f/a5Mb/wb+C/8TDif/Y2K//3tm6/8K6nf+hl2z/jHlH/450OP9/aCH/d14h/4BsJv95Yh7/fWco/52M
+        TP+qnVz/t6ho/3VfI/9fQgv/ZE0N/1xMF/9lSxb/Z1YM/2xZF/9wVRn/bVUY/2hXFP9nVhT/hHNH/4xz
+        Uv/Jwan/g3xZ/3JgNv97Yjv/fWU5/4FvO/99ajb/eGUy/3ptNf9/cjr/fXA4/39yOv+Aczv/fXA4/35w
+        Nv+AcTf/gG48/4NxQf+IfET/lIdP/52QWf+Pf0f/koFJ/4d2Pv+AcTz/fWc7/7irjP+rqoj/nJhz/7e5
+        nv97azj/d20z/3puNf+CcDf/gGw3/5B9S/+HdEH/gGo3/4pxPf+Oekj/fm08/3tlM/+Bbzz/jYFN/8G8
+        kf+FfEr/ing2/4d2Mv97cDb/f2wy/4JsMv+BajD/gGkv/4BpL/96Zy//emIz/3lWMv95VDz/ck47/2tG
+        NP9tSTL/dlQv/35cN/+DYjz/fGQ3/3pjNf+IcEL/a1kv/4SBVv/w8vT/jpeC/2ZWLP98WTT/dGc8/7G9
+        p//Y5uP/r8PD/6zJxv+uycX/w9jR/8TWw//Y6s3/0uXX/8HXz//R6eH/sMbE/5+0t/+nwb3/qcG7/7XG
+        w/+/08b/0uXU/+z37v/2+vb//P35//z8+P/6/Pn/7f33//H86P/Z17H/t7t+/8TNjf/GyZn/ycmg/8fD
+        lf+bjVf/knw7/3tkH/9pTRb/hm0r/4FpJP+Aair/nY1L/6eaV/+klVL/dmMf/3RZGf9wVw3/hn1G/41+
+        Tv9vZgz/cWIO/3NbDv9xWRT/aFYZ/2dUFv+lmnr/j3VW/4V2VP93aED/e2M6/35dOP+BZDn/fGs4/3tn
+        Nf93ZTL/dWkx/3xwN/98bzj/e242/35yOf9+cTj/f3Q8/4V7SP+RhFn/mYxh/4x/R/+Ddj7/gnU9/4Fx
+        Of+Abzf/gG83/31wOP+AbDr/pJly/8LGoP+HglL/gXhG/5CDSv+EfEP/iX5F/4d1Pf+EcT3/k4BO/4l1
+        RP+Eczn/hXc4/6OWZ/+5rIb/q51s/6SaZv+opXH/nJ1n/3lyOv+Ldz7/i3g9/310N/+CcDX/iHM5/4Bw
+        Nf9+bjP/gnE3/3ttO/98ajv/gGk2/3thOf+BaEf/emE+/3VZOP91UDT/akUq/2hFJv+Ibjf/lHpA/4Jp
+        Lv+BZi3/e2sx/+nk2f+Delj/a1IV/3NfLv+Fd0z/h39T/6qukv+nsL3/oLq6/7XTxf/L5NX/5/nl/+f1
+        4v/K29X/nrKy/6rAv/+twsX/rL7I/5m3uf+burn/orm8/77TyP/b69v/7/nw//j7+P/6+vf/+vv3//n7
+        9//0/Pj/9f7y/+724//Hz5n/wsqG/9TWp/+2tor/qqZy/6aaXP+WgTr/jXQ0/2pNHP95YCP/iHAt/4Fr
+        Kv+Xh0X/npRN/4+EOP92ZRv/emAY/31iDv+emWH/tLOO/4V+LP9zYRP/d10X/3FXGP9jTxf/Z1Ia/4eA
+        Xv95ZEH/lXtW/3hlQv9xWC7/fFsv/3lgMP9/ai//emcx/3poNP98ZzX/gnA6/3tuNP95bDb/eWs3/3ps
+        Of93azX/fHM7/42CTf+BdUH/gXE5/4FyOv+DdDz/gnE7/35sNf9+bzT/iHUx/4ZzNf95aTX/hXlD/4qH
+        Uv9wZyz/hXo9/4qASP+IeUL/iHM9/4h0Pf9+bTX/fmw1/4FxNP9+ci//eWsx/4d7Rf+Eez//fHE0/4N3
+        O/+LgUP/hnk7/4h1OP+Pe0D/iHg9/4d0Ov+Ldzz/i3Y5/4JuLv+EcS7/f3Ev/3ttK/99bif/eWgn/4Jw
+        Nv+Ne0L/h3A+/4ZkPP+BXzb/c1Io/2RJFP+LcTr/h202/31mJv+Bbyv/j31U/3RiM/92Yij/eGc0/35v
+        P/+RiUz/eHFH/5KPm/+Tqbf/l7Gw/7PEuv/j9eH/1enY/+f08v/E0Nb/iJ2k/6m9x/+vwdD/i6aq/523
+        tf+itLX/vNXL/9fx4v/x/fj/9/36//f+9P/5+/T//Pv4//f99v/1/fP/8vvx/+n02f/K1KP/0tOq/8C9
+        l/+npWz/raRo/5mISv+SeUD/el0q/2hIEv9/Yyj/hGwv/5yFSf+Zh0X/cWQZ/2laEf9vXBP/cWIN/46J
+        Sf+hnnL/kYdF/3FdHP9zVx//bVIe/2RSHf9pViH/bWA6/29dOP93XTn/c2A+/35mOv95YDX/fnBH/3lq
+        Mv9/cDr/f246/35lOf+Cbz7/f3M8/3hrNv95azj/d2k1/3RmL/96bTD/fnI1/4J0OP+Eczv/hHM7/4Rz
+        O/+Bbzn/fWs1/39vOP+BZTb/loRk/8XBn/+dlmf/kItW/3tyOf+NgEP/iH1C/3trMf+DbDT/g3E2/4Jy
+        N/9/bzT/fm8x/4FyMP9/cC3/eWsn/3NrJ/99cC3/iXUz/5B9O/+JdzX/iXc1/416PP+KdTz/hnI4/4hz
+        N/+NdDX/inIv/4dwJ/+CciP/gXQk/4J2Jv+Acib/e2ol/4JvMP+WgUj/l3xJ/5R6Rv+SeEX/gGo4/3dh
+        L/95YzL/dF8s/3xnMP95ZSb/fWwp/4BwLP+Dci3/g3Mu/46KRP+ShVL/lI2F/6Gwv/+twMn/ytjV/8LV
+        yf/N49f/7Pj1//n////a4OD/0dba/8XI0f+ls7//rsDB/97s3f/O6c7/tda7/9Xs2P/b7dz/4/Tj//T8
+        8v/9/fn/9/71//X+8//1/PP/8f3w/+Dty//O0Kb/1dSo/768gv+ro2r/n5Jb/415Q/+Lcjz/bEwX/2pN
+        Fv+FajH/ooVO/5yESP9pWBX/aVgW/2paF/9qXxP/dGkl/6KaYv+VjEn/b18a/3NaH/9wWB//algf/2tZ
+        H/+Ea0f/eGRA/3JkP/90ZD3/d10w/6GQcf/p6tb/jY5q/3duQf+Ec0D/emZA/4x+U/9+d0f/dGow/3lt
+        Mf95bjP/fG4z/4FsMv+BbTP/g282/4JxOf+Eczv/gXA5/4BxNf94ZDD/blQr/5aGcP/R0sn/ys+8/6Cd
+        df+UiFP/fm41/4l2Of98czP/fXAw/4RvMf+CcDP/f280/4FwNv+DdDb/gnQy/39xMP+CdDP/enIv/39y
+        MP+FcTD/loNC/499PP+IdjX/iXY4/4l1O/+JdTv/inQ5/41zNf+PdzT/kXsy/4h5LP+GeSv/hHcp/31w
+        Iv94ah7/cGEa/39tL/+diFb/oYtZ/6WPXf+cjFj/kYJO/4Z3Q/+FcEH/g2o7/39qM/96Zyr/dGIj/3Be
+        H/+FdTT/lYxA/5yPS/+3tZL/w8/P/6W1uP+kubn/rcPC/8vc2f/f7eX/7/ns//f57f/29/D/+/r5/+fy
+        +P/q+fb/7frk/9zu0P+70rj/p8Ot/7jVwv/A1sX/2Ofc//L59P/2/fX/9f3z//b+9P/z/fP/8vfp/9PT
+        rv/Dxov/vbuB/6+nbv+pnGP/lIdP/458Rf92Xyn/aVAY/4NoLv+dgkr/ln9E/2dUFv9sWBr/b1oc/3BZ
+        GP9vXRz/hXk3/311J/91Zxv/emQg/3pgIf91XiD/dF0f/3JXMv+Yg13/k4hi/3NjOv9xWS7/eGpO/7K0
+        pf+prZH/mZRn/4N4QP+Fc0r/0MOc/3VwP/9xaS3/dmwt/3pvL/99bTD/gGsy/4BrMf+Dbzb/gXA4/4Jx
+        Of+Dcjn/g28z/5eLYP+fjHP/zs6+/8DTxv+Mj3H/dWk5/35sOf+FcDr/h3E2/350Mf+AczD/hnQy/4Rz
+        NP+Dczf/gnI2/4R1Nv+BdDH/gnQy/4V4Nv9/djP/f3Iw/4Z0M/+DcTL/h3Y3/4h3N/+HdTj/jXk//4p3
+        Pf+IdDj/inQz/4p0Mf+NeTL/iHou/4Z6LP+Acyb/fnEj/3VoG/91Zh3/b18d/4NyO/+sm2b/sKFt/6mc
+        av+lmWb/n5Fd/5iJUP+Ugkv/k3xS/4NrQf9uWCn/Y0sh/2lSKf+Phjz/pJlO/7q4gP/EyLX/ytPP/5et
+        tf+txdD/usvL/87e1P/s+un/5vfl/9Tk1//c6+P/5/Ts//b/9v/2/PD/9fvv/9Tg1v+nvLf/rcnD/6nD
+        s//P4dX/7fnx//D68P/x+vD/9f3z//P89f/1+fb/4uXD/8DGh//Cvob/s6ty/7Sncf+gk1r/mYhO/3pj
+        K/9xVx//f2Qr/5t+RP+VfEH/gnA4/4NzPv9tXCj/dFkh/3BaHf99biz/enAk/3NmG/94ZCD/eWEg/3Ze
+        Hv92XR3/alQr/4ZwR/+Fb0b/a1gt/35sRP96ZkX/eGJG/4FvS/+Ed0P/fXQz/35sNP+MelD/fnZA/25q
+        Lv92bDH/f3Av/39uMP98azT/fGsz/31sNP9+bTX/f242/4NxOP+Lbz3/1+bc/93u7v+lpJT/nZ5+/6ym
+        cf+Lf0L/hG03/4VvOP+Icjr/gXIx/4FzMf+CdTL/gXMx/4N1M/+EdjT/hng2/4N1M/+DdTP/g3Uz/4J0
+        Mv+DdTP/f3Ev/5ODSv+Pfkf/fGs0/4R0O/+EdTn/hHQ6/4N1Nv+AdC3/fnEv/3xsMf99cCz/fnIq/31x
+        Kv97ayj/eWcn/3RiIv9uXRv/aVcW/3VnKv+qn2j/t7WI/7q4h/+7toP/r7Fx/6ipaf+imWf/l4ta/5KI
+        Vf+FdVP/hnNc/4V/T/+Lg0z/opZb/7Opcv/Avpz/x9Xa/6vD0P/D29X/1+rg/+j57f/q//P/zuPb/7rM
+        y//e5eH/+Pz3//f79//u9O7/7/r0/7XDw/+mubv/vNPO/9fr4f/W59r/vtTG/9jq3v/3//f/8vz1//T8
+        +v/y/OL/zNSk/8e/kP++u4D/ycCU/6ebbP+bilr/jHVG/3BYKP94Xyr/m3tB/6OIT/+DeEj/raqC/6un
+        hf90YSz/bFcg/3ZhKv92ZCr/cWEm/3FhJv9xXyX/cV0j/25bIf90Xzb/gWtC/3JcM/9zXTD/dmAy/3Zd
+        OP90WjX/jHFH/4FnOf+BaTf/gGw5/4N1QP+Mgk7/j4hV/31yPP99bTL/gG40/35tNf99bDT/e2oy/31s
+        NP+Abzf/g3E5/3tsQP+/yL//sLmw/5iYbf98eT7/g3Yz/4h3Mv+CdDf/gnM2/39xNP+AcTD/f3Ev/4Fz
+        Mf+BczH/f3Ev/4FzMf+DdTP/h3k3/4J0Mv9/cS//gXMx/4FzMf+AcjD/iHg9/5SDS/+Abzf/fm00/4Fx
+        Nv+BcTb/gHAz/39wMP99bTH/eGYw/3ZmLP90ZCj/cmIn/3RiJ/94ZSn/c2Al/3FdIP93Xx//bFcd/3Ni
+        LP+1tYP/5eq9/9bduf/F0aD/v8qO/73Ch//BwIf/y8WV/6SdcP+upn//ppx8/4t9Wv9wXjX/jH1I/5aP
+        Xv+3upb/w9PC/8fg3f/Y6uD/zt/S/9Ho2v/A1Mz/pri3/8bV1P/p+Pb/2Ofm/9rq5P/i9Oz/yt7d/73W
+        2f+UrrT/q8HC/7rNy/+owrv/rsW+/9zs5v/z//j/8/z5//j98P/k6Mb/w8KR/8DDh//FxJj/xcWk/6ej
+        gv+Qhmb/hXhU/39vRP+Kc0P/r55v/5WQZv+GflP/yMCU/35pM/98ZzD/fGcw/3VkKv9zYyj/cWEm/3Ff
+        JP9wXCL/cFwi/35mPf+DbEP/dV41/3liMf96YjD/d1oy/21XLP9wZTP/in1Q/4JzSv+DbkH/em8x/3Vs
+        Of9+dEb/jIBO/39uOP+Bbzf/fWw0/3tqMv97ajL/fWw0/31sNP+CcDf/fWoy/6aZfv+bjGj/jYJI/4Z7
+        QP+JbzX/inE0/394NP+Cezf/e3Iv/3ptKv9+cC3/gHMw/4J0Mf+AcjD/gHIw/4FzMf+DdTL/gHIw/4By
+        MP+AcjD/f3Av/35wLv94aC//fm43/4FwOP+BcDf/hXU6/39vNf99bDL/fGwy/3poM/9zXzD/cFwt/3Bc
+        LP9xXS3/cl4q/3NeJ/9yXSf/dV0l/3teH/94XiT/c1sl/3diLv+glGr/5uPJ//r/7//m8tf/2eG8/9TX
+        rP/Jx5j/tbSB/6incf+qpHf/pJhs/419Tv+Lc0v/inZP/5iKW/+9waT/vdbU/8TWzf/E1sn/sci6/8rf
+        1/+1yMb/l66v/63Ex/+qwcT/r8XA/7vSyf+51NL/p8XK/4Sfr/+UrLf/qr/G/4qnpv+atLH/u87O/+z7
+        8f/0/fj/+Pr3/+3v2v/Gypr/wMiM/8XImf+9uZD/p5x0/5mHYP+ViWf/rKWF/4p7VP+glnD/wsCc/4d7
+        Tf+Yilb/hnI7/4RwOP96Zi7/dWQp/3JjJ/90ZCn/dmUq/3FeI/91Yif/eVwz/35hOP+AYjn/emE2/3dh
+        OP9yWDj/b1c0/21ZL/90YDf/g25F/6OLXf96bDb/cm80/3NtM/+RhFf/em88/3xwNf9+bDX/fWw0/31s
+        NP9+bTP/gms0/4ltN/94XiH/kZFk/6qheP+Aazj/iHlB/4ZyMv+GdjH/fHsy/3x0Lf+OgTv/j4M9/3ls
+        Jv99civ/gnMv/4NxMP9/bi3/hG8s/4hyK/+Bby3/gXIz/39wMv98bS//eGkr/3tvPv+kmGj/hXM//4Ft
+        Nv+FdDv/gm8+/3toOP94ZTL/dWEy/3FbMf9sVi3/a1Ur/29YMP9sXCz/alsn/3FbKf90XCj/dF4j/3Re
+        JP99Ziv/iWst/3djKP94cjn/t72d//b78v/9//v/7vjp/+Lt0f/V2bf/wcGU/7i3f/+yqnn/rp13/6aY
+        av+ilWb/nY1j/6mgf//BzsL/ts3P/7fKyv+6z87/uM3N/7vQ0P+kurr/l6i2/5mstf/M4tz/2/Hr/7/Z
+        2P+yztP/nbXB/5eqsf+drbD/pb64/7nQyf/L3Nb/8Pr0//b89//1+/b/+v33/97gyf/AxpT/ycua/7y8
+        kf+dimf/mIZp/46EYv+YkGz/j4Rn/762kf+RiVT/gnI//3lkMP+GdTr/cWIj/3tuKv98cSf/e28o/39w
+        MP9/cDH/e20r/31uLf93YD//fGZF/3VePf9tVzH/cFox/2xTNP9xWDb/d2E3/3FbMv9vWTD/alct/25f
+        MP95bDj/d24z/4t+Uv+Ifkz/d2wx/4BvN/+BcTn/gnE3/4RwNP+AbTz/eWY+/4Z2U/+XmXD/i4NR/4J1
+        Pf9/dj3/gXE4/35vNP90cS3/enAu/4l5OP+Jezr/eWsq/3ttLP+CcTD/gG4t/3tpKP+FcjL/d2Mm/3Vl
+        Lf92aDT/fWw1/4d1Pf99bDT/l45a/4N4Q/96ajH/gnA1/4V0PP98aDj/dGAx/3BdK/9vWy3/bFYt/2ZQ
+        J/9nUSf/bFUt/2tbLP9pWyf/cFoo/3RdKf9xYCX/dmUr/4BuM/+Iby//iHM2/4JyOf9qXCX/hHpP/9DQ
+        vP/6//n/8/70/+377f/i7t3/0NOw/72/jf+4unv/trR2/66qdP+zrHv/s6+E/8jXwv/B197/rb7H/7PG
+        y/+wxMn/pbm+/7HHxP+DlZ7/p7vA/+7/9//q+/D/yuDa/7fQ0P+mwMX/k6ip/5iqpv+20MT/4/ru/9bo
+        3P/n8On/9fr1//f9+P/4/fr/6e7f/8XOov/L0KL/wcKZ/6qXdv+pmX7/qZ+A/4F3U/+GfVb/xb+Q/4uB
+        TP9wYCz/fWg0/4Z2O/96bCv/g3cx/4R6Lv+DeC//g3Qz/4FzM/+CdDH/hHY0/7Gjjf+8r5n/t6uW/3Be
+        O/9qUyn/dVw9/4x0Uv+Ldkz/bVcu/2xXL/9jWjT/bFwz/4BmOv99cDj/dWk9/4d8Sf+MgET/gnA4/4V0
+        PP+HdDn/jHY2/3JjNv+Vi2//ycbA/8HDn/+Tikz/hoJC/4aGSv+voXT/r6F1/3x3Ov95bTH/fGou/3Zm
+        Kv94aCz/emou/31sLf99ain/f20r/3pnK/+Wg1P/xrmM/6Wbcf+AbTz/gGw7/35qOv97czz/eHA0/4F0
+        Mv+BcDD/f283/3RgMP9uWiv/bVon/2tWKP9nUSj/ZU4n/2dRKP9qUyv/a1ss/2xeKf9yXCn/dmAs/3Jo
+        LP91ay//eG4x/4NvL/+NdDj/iGk0/4RqMP9xXiP/bVor/52ScP/j5ND/+/3y//z////5//P/6vDU/8DG
+        mv+8v4D/vL5+/769hv+ztoL/wNK1/7bK1f+tucz/o7S+/7LEzv+0xc//wNfS/6O4vP+1zMv/6vzr//L+
+        7//p+vD/tczH/4mlpf+etbH/tMe//6fEs//T7dz/5fnn//L88//4/fn/9/74//f9+//v+Oz/zNmx/8bP
+        pv/JyqH/tqOB/6KRdv+onoT/qJ99/5WSXv+vrHT/g3lG/3NjMP96ZDL/e2sx/35wL/+CdjH/hnwx/4B1
+        LP+DdTT/hXY2/4Z4Nv+Mfjz/iH5Z/4d6Vf+HdVL/emU9/3NdNP9wVzf/bVQz/2lSLP9xWjT/b1kz/2lX
+        Mv9sWjL/fWs9/31tN/99bz7/mY5g/31zPf9/cTf/fm87/4RyOf+Ebiv/fndR/83TxP/NzMX/oZ17/396
+        PP93bDL/cmUx/3hqMv97bTT/e281/3JiLP90YS3/blwm/25dJv9xYCr/dmYp/3pqK/92ZCr/fG03/6uh
+        cP92aTn/dmc4/3JfLv9sWSf/cF0r/3VhKf95aC//g3dA/46BSv90YS3/b1ot/2hTKP9lUCP/ZE8k/2RO
+        Jv9mUST/bVkq/25ZK/9tXS3/bl8t/3VeLv94YjD/dGow/3ttNf+Abzf/gG0t/4lzNP+Lcjb/fmcp/39o
+        LP9/Yyr/bVgj/3FpO/+TjGj/w8Gn/+Hozf/6/uz/+Pvy/9bhtv+8x4z/wsiH/9DQkP/O2Ln/qL7G/5Ol
+        tv+Rpbb/nLC9/6rAzP++08f/3e/l/9To5f/W6N7/1uXX/83d0v/j9ez/0Obc/9Po2//N4dL/tc+7/8Pb
+        yf/j+On/9v74//7//f/9//z/+v79//D88v/W4sT/wMuj/8nLof+ypoD/rZt4/5WAXf93ZDj/hHo9/42J
+        SP9+dj3/fW82/4NvOP+DcDT/hHIy/4h4Mv+IeDL/iXg0/4t5OP+NfTz/joA+/5GDQf+MglD/hXZF/39o
+        OP99Zzr/c1w1/3NZOf9yWDj/eGA8/3JaNv9uVjL/alEs/3BeNP92bD3/dWMx/4FwQP+Th1//a18x/31w
+        Of91Zzj/dmM1/2pVJP/AuaT/6Ozv/5CLd/95b0f/fnc9/3tqNf91YDD/eWgt/3NjJv9vXSb/bloq/29Z
+        Lv9qVib/a1cm/25ZKv9yYSn/bFwi/3BcLP+jlGT/ZVwn/2JRHf9wWib/bFkm/25bKP9vXCn/dl8o/3Zg
+        K/9uXS//f3BA/29bKf9jTiL/X0gh/19IIP9gSSH/ZE4l/2ZSIf9tWib/c2As/3JjL/9wYi7/eGIw/31n
+        M/96bTP/hXI6/4t0O/+FcjL/gnEv/4BwLv99aCb/fGIk/3peKP9/ZCn/hGwn/31mKP99aTD/iH9C/56X
+        ZP++uJP/19a7/9fXuP/Py6D/2NCW/8zMov+osr//jZm6/4WdtP+JoLL/nK60/5mfh//M1L3/1+nf/9To
+        3//W59z/xtfN/8DRxf/i8+P/4vXj/+H04//r9uf/5Ozi/+Xs6P/7/f3//v7+//7+/v/5/fz/8f71/+Pu
+        1v/I06r/xcqa/7Wvgv+rmW3/n4ZY/3ljL/+LfUL/oJpc/5ONUf+Aczf/hnQ5/5N/Rf+KeDn/jn05/417
+        Ov+LeTj/j307/5KBQP+PgkD/joA+/4yCUv+Nfk7/inNE/35nO/9xWzP/cVg4/25VNf91Xjr/d2A8/4Nq
+        Rv9/Z0P/gG5F/391Rf9wXC7/cFw0/4Z2Vf9xYzv/inpI/29dNP9wXjf/fW9H/7Cnkf/b19L/kYpn/4yA
+        Tv+KekX/gW84/3JgLf9vWi//a1Yr/2hVJP9jTiT/YUom/2NOJP9oVCj/b1ow/3NgLv9sWSX/inRK/3to
+        PP9kUh7/cFgl/3VYJ/9sWCX/aVcj/2xZJv9oXSP/alwl/3JZLP9tVSX/ZVMh/1xHG/9aQxz/XUce/19K
+        IP9lTyb/alYm/3JfLP91YS//dGcv/3NoLP99ajD/hXA1/4Z1Nv+Odjj/kXU3/457Ov+HdTT/gG4u/4Fr
+        Kf+BZin/gGUv/4dnMf+PbjH/kXc0/5eDOf+Vfzb/i3kw/4V6L/+EezD/j4k9/6ChVf+pqV//sKdr/7Kv
+        of+vudP/eo6u/3+Zuf+fpKD/jHtY/6ajg//E2cH/utDB/9zr4f/l9er/2Ore/83f0P/B1cT/1+ra/+n3
+        7f/1//z/3Obm/+Xt7f/4//7/9f38//P9+//0//j/4u7T/87asP/HzZn/uLOA/62ca/+ejFj/e248/6mh
+        d/+2sYD/l5BS/4p8QP+NekD/jn5K/4p9RP+SiEj/i4I+/4yCP/+SiUb/kYVD/4+APv+PgT//kYdZ/5SJ
+        XP+KfFP/gnBE/3ZgNv9uUjT/c1M2/3NVMf9yWzb/jnlT/4JrQ/9sWC//b141/25bNv9jUC//opJ2/3xv
+        TP9tYDX/YE4r/3JfPP+ZkGH/iH5U/5WLZv+ViFz/gnE//4ZvPv+LdkH/dmIx/3FYMv9sUzD/YUgf/11E
+        HP9eRB7/ZEcg/29SK/9zVS7/cFwt/3hpN/+bh1v/blks/2dSIP9tVCT/b1Qk/2lVJP9mUiH/Z1Mi/2VY
+        I/9oVyT/cVYp/25TJf9wWyv/aVIm/11GHf9iSiL/Zk4m/2tSK/9wXSv/cmEs/3VjL/91Zyz/f3Ew/4t2
+        N/+Odjj/jHk3/495N/+ReDf/jXs6/4Z0M/+BcC//gm4t/4RtLv+GcDH/hW0y/4hvN/+JeDv/j4NA/5eF
+        QP+Whz7/lIo9/5aJNf+UiTX/kIs7/5iYSP+YkEL/mpVj/9Tf3f+Hnbz/kKbD/6OXiv+niGD/m4xr/7K7
+        of+2yLj/tMrC/9/z7f/z//f/5fTo/9Pj1P/W6Nj/w97U/8zp5f+vy9L/uc7Q/+/9+v/0/fz/9P36//T/
+        9v/t9uL/09+2/9Lao/+/vYf/s6Rx/5yRWP+Cdjz/o5Zp/8nHl/+npWj/ophe/5+SWP+xrHj/mpBb/5eG
+        Tv+eklX/nJNT/5+XVP+Yjkv/lIhG/5CEQv+upnr/raiB/5+ffv+Wi2j/gmxI/3pgO/95WTX/hmdE/4Fs
+        R/+DdE7/d2M4/3FZNP9wVTj/YU0x/5yLb/+hj3P/iXpZ/4d9V/+Of2H/dmNI/3ZpRf9mVCn/cFor/2tW
+        MP94Yz3/eWA0/3tkNP92YTT/dV03/3FXNP9rTiv/a1An/2lQIv9gTCL/YU0k/29aMv90aDn/ZFsn/2ZU
+        Iv9nUSH/Xkoc/19MHf9aRxj/W0cY/19LHP9iTh//aVAj/2lQIv9mTyH/ZEwe/21UJ/9sUyb/Zk0h/2dN
+        Jf9pTyb/blQr/29bJ/9yYCf/eGUu/3xrLf+GcTD/kHY2/5Z6Ov+Nezr/jHo5/5OCQf+HdTT/hXMy/4Nx
+        MP+Abi//gnEv/4h6Mf+KeS3/jnow/459OP+PgUD/lIY9/5OEO/+Tgzv/jYI2/46FN/+bj0P/nZhF/52a
+        Qv+ek17/4eXd/8be5P/Y49z/pZNr/5t/UP+Sf1v/joJp/73Er/+9187/xd7f/+z17//1/vn/7Pft/+Du
+        3//F3dD/s87K/5y3wv+SrrH/yd3Z//D29v/4/Pf/9P/2//f98//d58T/xtGf/7y8jP+4rH7/nJRd/5OD
+        Sv+YhU7/oqFn/6uuc/+jnWT/n5de/6mud/+up3L/nYVT/62dZ/+bkFX/npRT/5+WU/+bk1D/m5NQ/6Ka
+        bv+jnXX/srGP/8C3mf+vn37/lIFW/5qLY/+Uimz/pJZ3/5mHaP95YD3/c1k7/2xQOP9tUzn/nYRo/2lR
+        Nv9nTjD/eGJE/9bKsv9rYUv/hXpg/39vUv95ZUT/ZFY1/2laOP9wWzT/blwy/3FhOv9rWDn/aFM1/2hS
+        Lf9sWC3/ZVQm/4uHYv/DwZ3/trSQ/66nff+OgFT/VkEW/11GGv9cSBn/WkYX/1lFFv9aRhf/YEwc/2BM
+        Hf9jTB7/Zk4g/2RMHv9oUCD/Z1Ec/2pUH/9wWib/bFUm/2xVJv9xWSr/dl4p/3piK/99ZC//gm4x/4l1
+        M/+Qdjb/lns7/417Ov+Qfj3/l4RD/4l3Nv+IdjX/g3Ew/4BuL/+FczL/iXoy/5ODNf+VgzP/kYI3/46B
+        Ov+QgTn/j4A3/4x9NP+Ogzb/kIc4/5WLPf+Tizz/mY06/5mMTv/f4cz/9f/3/8vJo/+QiEj/lIhG/6GT
+        Wv+ejGH/sKuF/8raw//M4uD/3enn/+/58v/s9+z/5vTk/9r04f+92tD/qcfJ/5ezs//M4Nz/9Pr6//n9
+        +v/z/vr/+P35/97nyf/B0aP/ub2R/7myiP+klGn/lYJk/5aGXP+Yj1H/lpFX/6eaYv+fjlf/l49a/5+W
+        Yv+mm2f/rqJr/52RVv+RiEf/mZBN/5qRTv+dlFH/n5dr/5+Zcf+em3j/lJFl/4iBVP+JdlT/lIps/8HE
+        p/+hl33/g3FW/4hwUf9wVTv/aUs4/4FkTP+IbFH/dlY9/3dUOv9zVT3/iXxo/4yId/+mnYz/no96/2hV
+        PP9lWDz/YFQ1/3RiP/+HeFL/gXNQ/41+Yv9/b1P/cWE8/3xuQ/9+cUP/bmRB/3VqSv+glXb/VUso/1tN
+        Jf9WQRr/WkMZ/1tHGP9cRxn/XEgZ/15KG/9jTyD/ZFEh/2dQIv9pUSP/Z08i/25YJv9xXib/c2Ao/3Zi
+        K/90XSz/dF4s/3ZgLf99Yiz/g2Yv/4ZoNP+GcTX/i3g2/5B2Nv+SeDf/i3k4/5OCQP+Mejn/iXc2/4p4
+        N/+HdTT/hXQz/4d2M/+IeTL/kIAx/5KCLf+NgDH/i38z/4x+NP+NfjT/jH0z/5GGOP+UiTv/lIo8/56T
+        Rv+fkD//hngy/7Szk//6+fP/o5Nn/5SJTf+FgDb/mItF/6qTW/+ik2D/usKi/8PZ1//G19j/3+nj/+by
+        6P/S4dH/0OzU/83r3P+72tn/ttPS/+L38//2/fz/+Pv5/+/5+f/4/Pz/3ebM/8LUqf/Hzqb/vbuT/6yX
+        dP+JdGX/oJJy/56RU/+hl17/ppRd/56JUv+Sg07/lIpV/7Gsdv+nnGT/n5NY/4uAQP+KgT7/kIhE/5iP
+        TP+oo3r/q6J3/7GjdP+nn2v/iYFP/35sQv99akL/fWxQ/8a4qP+CeFr/g3RT/3NcQP9wUjz/dlhH/3tl
+        Uv9sQzT/fFVB/2lROf99Zlz/vr24/6utqf9xZFf/b1dD/3toTP9rWjz/dGJF/25cPP9pWDf/fGxL/4p9
+        XP+JgFv/l5Bm/4uGVv9zbC//ZFMd/4p9YP+zrZX/S0If/1hEHP9eRxv/X0sc/2BMHf9iTh//ZFAg/2dT
+        I/9mUiL/Z1Eh/2lSIv9pUiL/bVkn/3FhLP90Yy//cmAu/3JeLv96aTD/gXMy/4N1Lv+Fci//i3Az/4hx
+        M/+HdjT/jHo5/5B+PP+Xh0L/k4M+/4x8OP+Jdzf/iXg1/4l6Mv+JfC//iXwv/4x8N/+NfjX/jH8u/4l8
+        Lf+Lfi//in0u/4p9Lv+NgDL/lIc4/5KFOP+Xh0H/oJJJ/5CHN/+Lfzb/joNI/6Oacf+CcT3/mIFE/5F9
+        O/+VgkD/nIlI/5uDRP+ekWP/vs/I/6bBz/+2wsr/1ePm/9Pj4P/J4c7/wtvR/7zT3P+72tr/zeje/+vx
+        7f/5+/T/8f32//n8/P/h5tH/x9On/8zTpv/DxZr/qp1z/459Wv+2sJf/rKWA/6CTWf+Nf0j/joBI/4R4
+        PP+JfkH/i4FE/5GCSv+Yh07/i30//4d6N/+MgDr/lopF/7Kxjf+yrYb/r6V6/6Kfa/+enGj/kYZZ/4Vy
+        Sv99ZkP/nYpv/5OEaP+Gd1b/inRY/3VXQf95Tj//nol3/5WLeP+Lfmb/hnJa/8GupP+6v7v/s7u3/6Ga
+        jf9uWkb/cV1C/3BeQf9uXD//bVs8/2taOf9vXT3/ZFQx/2JWK/9jWCn/aWAt/3VpLv93Yib/fG5F/9fT
+        tf98c1H/Uj4W/2NMH/9kUCH/ZVEi/2ZSIv9pVyH/alki/2tZI/9xXCb/blgj/3FcJ/91YCj/gm0x/39p
+        Lv99ai3/e24p/4BzLv+DdzH/f3o0/4V/N/+Ngjb/lYU//4ZzM/+TgUD/ing2/4V1MP+LezX/jHw3/4p4
+        OP+KeDb/iXox/4h7LP+Iey3/iXk0/4R0L/+DdSr/hHYs/4d5L/+Iei//iHkv/4t8Mv+MfzH/lIY4/5qK
+        Rf+Ofzf/kIIz/49/OP+IeDP/gHYs/4yCNv+FeS3/hXU1/4V1Of+JeT3/kYBA/4FxNf+VlX7/l6q5/5Sl
+        s//F1uD/v9TX/6jGu//Z8uz/xdXZ/8nb2f/k9O3/8vjz//b99f/y/vb/+fz8/+Ln0v/J1aj/09qs/8bI
+        nP+poXX/j4JW/4p/V/+6roH/pZde/4t+Rv+Ddj7/gnY9/4F1PP+Xi1L/o5NZ/5CBQv+Qgz//jX86/459
+        OP+Tgj3/sbWV/7Kxjf+wqoP/mZxp/5mdZ/+koXL/indS/45yR/+CbkP/knxk/5uLa/+EblL/eVpE/6KC
+        cf/Ox7P/wsSv/5uWff9sXUT/in1y/7rEv//E0s3/o6GT/21gS/91Y0j/dWNG/3NhRP9yX0D/bl08/3Bf
+        P/9yYT3/dGQ1/3hqNf99cTn/d2Qu/4VrLP96ajL/gX1Y/6Sbev9gTCT/aVIm/2xZKf9rVyj/alYm/3Nj
+        J/9zYyb/dGUo/3RiJv9yXiP/bVkc/2xcJv+Ui1//wLaL/3lvPP93aiX/c2Mo/4h0Qv+HgFv/ureK/7Cs
+        b/+ThkT/kH08/4BuLf+CcC7/gXEs/4l5M/+JeTT/i3k5/4t6N/+JejL/h3kr/4R3Kf+Dcy3/gnEu/4Bw
+        LP+Cci7/g3Iv/4NyL/+Dci7/iHc0/5GDNv+Yijz/jn45/4t5Mv+Ldyn/i3Uv/5B5Nf+QfjD/in03/5mS
+        VP+dkln/kYZN/5GFTf+Bezv/hnYs/4l2Tv+Smqr/iJ2y/6rAz/+jvMb/rtPS/9Tw7f/u+fb/+fv4//z/
+        /P/4//r/9P/3//P+9//6/f3/4OXR/87arf/W3bD/v8GU/66qfv+KgE//hnQ6/6eVWv+gk1z/j4JK/46B
+        Sf+GeEX/f3A//4R1RP+Iejz/in04/5aLQf+YiUD/lX06/5F6Nv/IzLv/2dnE/8jDqv+oqIH/mp1v/5WX
+        bf+WjWH/i3ZG/4h0Sv+SfV//uqmb/6mdiP+Nh2j/opl4/5GJbP+Ngmr/npR8/5yWfP+XjXz/pqWb/9rl
+        3v+koo7/i39g/3duTP91akn/dGNE/4BwSf96bUD/cWQ4/3ZpOv9+cTv/fWs2/4l0Pv+CcTL/fGYx/3xq
+        LP95cD7/vLON/3VmN/9pVib/bVkp/3BcLP99aTj/c2Ip/2xcH/9xYiP/f2wk/3dpI/+Vi2L/sKuD/6Wf
+        ff+Zlmr/nZxp/5yWZP+LhFX/sqt9/8PFqf/W1bP/sqdz/4V3N/95aCj/fGYr/4BnLf+BcSv/iXk0/4d2
+        Mv+IdzP/iHgz/4l5NP+Gdy3/g3Qq/4BvLP+Bby7/gHAr/4FwLP+AcCz/gHAr/4NyLv+Sgj3/k4o+/4l8
+        MP+OdS3/jXMs/4RzLP+EcS3/hnQu/4h3Lf+WhUL/mYlN/5uLUv+ejlX/oJFY/5iGTP+Kejj/dGw3/5mc
+        lv+rtMb/rre6/7nO1v/Q5Or/4PHx/+v69f/2/vj/+v75//j++P/1/fr/8/38//n+9P/e5sj/0N6s/9vi
+        s/+5upH/r6R//418UP+EcDL/opNN/56WVP+dk1T/lYpQ/5OHT/+Fdzz/jHo7/4Z4Nf+CdjD/jYI7/5mK
+        RP+fikb/lH87/93t6f/o8+z/1tzR/93m1v/i7tv/097M/8TTvf+XpIj/kI5s/6yief+emXr/09G7/8fG
+        uv9za07/l4tr/5KEa/+il3//wLyi/393ZP+fmIn/pqiX/4iEav+Ifl7/fXdU/2hgPf90ZEP/f3BG/31y
+        QP94bD3/fnM+/4Z/Pf96cjr/gXpK/4OIYf+9up7/r6p8/4+KVv+upnf/d2s2/3ZmMP99ajb/dWMu/4Bu
+        Of9yYCn/aloe/3BhIf+BcSv/d20m/5yRbv+Rh1T/c2Ik/3FhIP9+cDH/gHdF/5SLWf+akF7/jIRN/3tu
+        MP9/aSL/hXQu/3pqK/97Yyv/g2gw/31tKP97ayb/gXEs/4NzLf+Dcy7/hXUx/4R1LP+Ccyr/gW8u/4Bu
+        Lf9/cCr/gXEs/4JyLf+EdC//ino0/5uLRv+Ofzn/jns1/492MP+HcCv/g3Qv/4R0MP+DdC3/gHMn/31t
+        J/+AbS3/gG8w/35vMP9+bzD/hHE2/4h6Ov91cDD/nZt3/97kzP+1uZb/1+bU//D99//u+vX/7vv4//X+
+        +v/5//r/+f/5//b9+//x+/n/6/Th/9bgvP/I1qL/1dyt/8nKov/Ft5j/gm1H/4JtNf+hkUz/lYpF/4t9
+        Pv+KfEH/hXs8/4N3M/+LejH/i38x/4yDNP+Qhzj/mY5A/5iNPv+Vijv/sb6s/7S/qf+us5j/qrGf/9bf
+        0//P18r/z9zP/97u4P/t8+X/4OHO/5aZcv+HinD/u7y1/4uDZ/+bj2//qpuD/4J3X//Fwqb/r6iW/7uy
+        of+Lg2L/gXlc/6Kdgf+Mh2X/gHZT/4R0VP96a0H/fXJA/4B0RP+Gekj/hHtJ/4eEZP/N0sL/0OLP/8rM
+        uf+fl2n/d3M5/4V/Sv+Adjr/hXc5/4V1Of96ay7/fGww/3NiK/9yYyf/eGor/3pwNP+LgkD/jnlQ/2pc
+        F/98cCH/eGkl/3xqL/94Yyv/dGAo/3FcJf9xYhz/dWgf/3tvKv95bir/d2cn/3xkK/+FaTL/g3It/4R0
+        L/95aSP/fGwn/4JyLf+Cci7/gnMp/4FzKP+BcC//gXAv/4FxK/+Cci3/jHw3/4x8N/+Pfzr/lodC/5J1
+        Nv+QczX/gm8v/4l5N/+HdzL/gnIu/39wKf99byP/fm0n/4BuL/+Aci//gnUx/4V4M/+GeTz/h344/4p/
+        L/+JfUH/lZVb/6ula//Ex6j/5O/Z//j/8//1+fr/9vr6//T79f/4/vn/9v34//H99f/j7tX/ytet/8TS
+        nv/L0qP/0dOq/8e5nv98ZUf/gGk3/5SBQP+OfTj/i3g6/4l1O/+BeTX/hHow/4p8Lf+KfDb/o5ZU/6eZ
+        Vv+XjEj/mJBL/5yTTv/U4cb/ubud/7i2k/++wav/3+XZ/8nOwf+tsqH/oKSS/+zz7//6////5uvY/5qg
+        jf/M1MX/oJ6C/5aQcP+qpYf/kYxx/6qljf/Eu6f/m5B5/5eMZ/+Ad1b/uLKU/4mCY/+Eelr/nY5s/4V4
+        UP98ckb/hHpO/41/U/+CclP/v8O7/+Px8v+iqo7/endP/3xvOP94bzX/mpRc/4qCRf+AdDf/gnM5/4Z3
+        Pf+Sgkf/f2st/4JtMf+Fci//eXAv/4qCRP/Dsoj/cmct/25pI/90aSz/dGQr/4FqM/9/aTL/gGkz/3lr
+        Kv9zaif/cGkr/3JnKf92ZSf/eGQo/35qLP99bin/fW0r/3dmJf94ZyH/gG8p/31sJv9/byj/f3Aq/39t
+        LP+CcS//hnYx/4d3Mv+KezX/l4lA/5yMRv+Cbiv/hmws/4JqKv97ayv/l4lG/419Nv9/cCr/fW4m/3xw
+        I/9+cCn/gHAv/4B0Lf+Bdiz/hXkw/4R5Nv+HfTX/jYEx/4h8NP+AfDj/mo9X/8rCov/N2rX/8vvl//z8
+        /v/19/r/6vDt//X59//z/Pn/7v30/+Ds0//N167/xdGh/8PHmv+8uY3/tKGC/3BXOP98ZDj/h3E4/4t2
+        Nv+Qej7/lH9E/56VT/+EeSz/iXoo/4JxMv+Gczz/lIFI/5iJUv+0q3f/wbqF/8PWv//KyLT/yMqz/83R
+        vP/Nzbv/3d7M/97hyv/Hz7j/5e7k/+/69//n9Ov/zdrQ/8XSyP/Bx73/ur2v/8DCrv+2tJ//trCa/5aK
+        b/+OgWH/jIJg/4F3Vf9+c1H/h39h/4B2Vv+Ke1b/iH5V/353T/+NhGD/hXxZ/7S0nv/Y5OD/k5mP/4B7
+        Vf93dTr/jYRR/4Z7SP+OhUv/l45W/4Z8Qv99czX/iX9C/46ERP+Dci3/fmYx/4BtK/+Ady3/fHM4/5aN
+        ZP+5sIj/j4dM/3RmKP+Aby//fm01/35tNf95aDD/eGoq/3lrKP94aSb/dmYp/3hpLP95bCn/fHEp/3lt
+        J/91Zyf/d2cs/3VjIP92ZCD/d2Ui/3hmJP95Zyf/e2ko/4BvLP+FdTD/h3cy/419N/+YjUL/j344/3de
+        IP9zYiP/cWQj/3hqKv+EdDL/hnUx/4JxLv+Bciz/fnMo/3tvKP96bCv/e24q/3ptJ/99cSv/g3Yx/4d6
+        Nf+Jezj/joQ+/4eEPv+GfUb/rqJ2/8nTn//e6Mb/9Pfy//f6/f/y9/f/8/b2//T8+//p+/H/3ObN/9HW
+        r//T2bH/vbqP/6yebv+XflX/bVEr/3hfNP+Ebjv/gm0z/4JtNP+YhUr/mo1J/4d3L/+JdSf/gW8r/4Fw
+        MP+Bby3/hHQ5/6OaaP+uqnX/nqGB/62kjv/h5Nf/trqh/62riv+vro//qamI/6qtj//Cx7b/0djQ/9vq
+        5f/V5eD/yNjT/8LU0v/N1dL/ysO+/5yThP+Wk3X/koln/5iMaP+Uimn/iX9d/390U/+fm3b/f3lQ/4l9
+        Uf+DfUj/d3ND/35yU/+gmYX/6v/5/9ng2f+JeV//paB5/3JwNf+GfEj/qp9t/4B4Pv+GfEP/npZc/395
+        P/93cTj/cm0z/3t5Qf+fmXD/lpRf/4J9Nv+If0P/q6F5/761jP+EfEH/fXAx/4BwL/9+bzH/f3Ay/4N0
+        Nv98bSz/eWwp/3psKv99by3/fG8q/31xJ/99cyb/eW0n/3VmJ/94aC3/gnU2/4t+P/96bi7/fWws/3ln
+        Jv9+ayv/g3Ev/4d3Mv+Lezb/mIhE/3xvK/9uWxz/f2Us/4l2PP+aik//e2sx/4RzN/+GczX/gm8x/39u
+        Lv98byr/eWoq/3JhKP9xYCj/cF8n/25dJf9zZCj/fW8v/4R1Nv+PgUP/iXpA/4t7Q/+Bcj3/r6h3/9rc
+        tP/e7ND/6fTo//L48//2/Pb/8frz/+j25//Y38D/zM2f/8rNnf+5soH/s6Js/452SP9tVSn/e2Qy/4Fv
+        N/+CdDj/i35C/4R3O/9+cDL/gG8s/4dyKv+BcSj/gnQt/4N0LP99ayr/f2oy/4JzOf+opX//rqSN/77C
+        uf+4wrL/5OzV/7/Ltv+7wqb/xcSl/7/Arv/Aw7n/4fLw/+Hz8v/P4eD/wuDU/7LEs/+mnY//l4x0/5CO
+        af+elnH/oJZw/5eNav+OhmL/hH5a/3lxTP+CeE7/gXNI/4B3Pf96cj3/dmhM/5mPhv/j7/f/3Obd/4B5
+        UP+Nh17/bGk8/3BqNv+Adz3/fHI4/391Pf9yaT7/xL6k/9LIq/+If1n/jI9Z/4aGW/+JjFj/h4I+/3Vr
+        Lv+dk2b/oplq/25mKf+CdTj/hHU0/4N2Mf+BdDD/h3o2/4ByMP99by3/fnAu/31wK/+CeC//gnkr/393
+        KP96bin/gHIy/5KER/+Jf0X/p55k/6KZX/+hk1X/hHQy/39uLP+Kejb/iHo0/4t7Nf+Ofjj/k4VC/5N/
+        Q/+BZDH/fGcy/3RjLP+KeUP/hXM7/4NvNv+CbTX/f2wx/3ttLf95aC7/cF4p/25bKf9uWyn/a1gn/3Bd
+        KP93ZSz/g3I5/4ZzPP+BbDn/gm83/35sMv+JdUT/xb+R/8nbrf/Z6Mz/5e3d/+fv3//p8+L/4OvS/83S
+        rP/Ly5v/urqH/6+mcf+gjFT/j3ZE/3JaKv+CbTX/lIZL/56WW/+SiE3/eG0y/3lqLv99aSn/hGwp/4Ry
+        Kf+EdSj/g3Uk/4dzK/+FaS//fWYq/5+aaP+fm3P/qaaL/7e3pv/M0sT/0t7P/7zMuf+0wa3/0t3Q/+/5
+        8v/s+vf/5fPx/9zq6P/K4dj/ydfE/7u1lf+tpHz/oZtz/6GYd/+nn4D/qaJ+/5eLaP+Le1n/iHdS/4Bv
+        Sf91ZUD/cmA2/3lsSf/PzL7/7Ozr/+7z+v/r+PT/fIBc/4yHZv/HxL//f4FS/3t1K/98cDf/enFB/4mG
+        Y/+3tp//iYBg/3NrMv97cDH/eG0v/3drLv+EeTz/gHU3/3RpK/+GfDv/fnUz/4+DSf+Je0L/g3Yw/4J2
+        MP+DdzH/g3Uy/4FzMf+AcjD/fXMv/4J7NP9+djD/gXk0/4d+PP+RiEX/oJdV/4B5P/+HgEf/ioNK/46G
+        Sf+Xjkv/hXUt/5GFOf+GfjX/mIpE/5mIRf+Uh0L/qJRX/4VmNP9zXin/gHA4/7enb/+Jdj//fmky/4Jt
+        Nv9/azP/fG0v/3ppMf91YTH/blwm/2taIf90Yyv/cV4n/3VfKf9/ajP/fGcw/3ZlLv98azP/gXA4/4Jq
+        NP+fkFz/x8eV/8/Yq//U3rb/09m4/9fevP/Q26z/zdKl/8LDlv+0t4H/oplk/5yJVv+McED/eV4s/4Rx
+        N/+cklX/ko1Q/4BzN/9+bTH/fm4p/4dyLv+Nci//inMr/416K/+Rgib/jnor/4ZrM/+EajD/p5pe/6aa
+        af+wpH//uLqk/7vIuf/C08L/wNjG/8nm1f/c9+z/4vr1/+Ty8P/p9/X/5PLw/9Dg4P/C0b7/r76M/56l
+        c/+bmXf/mJR3/7a0m/+ztZv/jH1m/51/av+HgGH/kZJw/5eWc/+YmoP/zdPL/8nQ0f/u9vj/6PX2/+7+
+        //+zt6T/rbGf/+rt5/95dFD/fnU4/3NtN/95dE3/r62D/398T/9zcUf/kJJY/5+ZX/+el1//kIlQ/4B0
+        Pf+Yi1T/joFL/390N/94by3/nZJX/5eJUf+CczP/gnQz/4FzM/+HeTf/h3k3/4R2NP+BdTT/gng4/5SK
+        Sv+Ui0n/lo1K/42FQf+Tikf/pJha/4N3Ov+UiEv/l41O/4d9Ov+Pfzj/lIU4/5GGO/+qomP/qqNv/46D
+        Tf+Le0T/i3U+/31qMv+CcTn/i3pC/4l2P/+CbTX/emUv/31pMP95aiz/dmUt/3NgL/+Bbzn/fGwz/4V0
+        PP92ZCr/eWYq/3xpLf97aSz/emsu/35vMv+AcTT/g3Q2/4d6P/+soGv/yMiX/8fNoP/S1a//ztSt/8nV
+        p//Fyp3/v8CT/7a5g/+immX/m4hV/4JnNP+BaC//hHM0/4d8Of9/dTP/g3Ex/4RvL/9/byr/hnEt/45y
+        L/+LdSn/jHgq/4t3Kv+NdzD/inEy/4duL/+gnW3/paJ+/7a1nP/i69n/3/Lh/9ny3//X797/5PTq/+Tz
+        8P/n9PX/4e/t/97s6v/l8/H/3Ojq/9Le2P++zrv/o62R/6mqiv+8u6P/tbWi/8fQvv/L0sH/tryr/9je
+        1f/DycT/y9HL//P69f/w9PD/p6ml/8LEwP/q/fv/3PD2/+Lo5P/v+/f/3efg/3RnTv91aTf/bWs5/6Gf
+        ff92cUv/in1Z/8vFrf+MkGv/d3RC/315Rv+Gg0//lIdW/4h4R/+Of0//jYBH/4qAPv+HfEH/g3Q9/4d2
+        PP+NfUL/gnE3/3tsLP+GeDX/hXc0/3ptL/+il1z/uK1y/35zNv9/djP/jINA/6mfXf+LfDr/gHAu/5GB
+        P/+YjUz/jINA/4t7NP+UgzX/kYQ1/6SgZv/V17H/raR8/6CTYv98bDH/i3pA/4FwOf/Ar3f/mIVO/6CK
+        U/+plF3/fWkw/3VlKP95aDD/fms6/4FvOf9vXib/cWAp/3xrLv9/biz/gG4t/4NyMP+FdzX/iHo4/4x+
+        PP+LgT3/i34+/6GKUP+5snz/x8uZ/8/Oo//Lz6X/v8ud/8HHmv+7vI//qq13/6CYYv+ahlP/e2Ir/4Vu
+        L/+Rgz3/iH00/35wKv+Fbyr/hWwn/3xrJv+Aaif/iW4r/4x3J/+SfjH/i3Iz/4lwMf+PeTP/j3gz/6+4
+        kP+stJ7/y9DR/+317v/j7tz/5PDf/+Hv4v/q9/H/8vr1//b8+f/o9fP/4O7s/+Lw7v/n9er/5PDl/9zn
+        4f/S39b/1OTV/93m2//O2c7/z+nb/+X77//o/PH/8vz6/4iJg/9uZVH/hHxl/5yXgf+lnoj/s6+Y/8nQ
+        u/+zt67/sa+s/7e+uf/j6uT/39/X/6OqmP/Q3cj/z9bI/3p7ZP+PkHP/0dS//4F+V/90ay//fHdB/5SV
+        Z/+Ri1X/in1H/416Sv+NfU7/kIJJ/5KCS/+XlWn/hoFL/4t7Rv+rpm//nZZj/4h7RP+Jejn/f3Y2/5GK
+        TP+EeDb/e28o/314Lf98cij/kIE5/4V2M/+Iejj/g3Uy/4V5Nf+Sh0H/hnkz/42BM/+OhTT/fHI4/4+G
+        Yf+wrIz/u7eK/5iQW/9/bzH/hnQ2/49+Rf+lo2v/ws2S/87IkP+jk1v/loVM/4FwOP95aDH/eWku/3Zm
+        Kf99bTH/f24v/4BuLP9/bSz/hXQx/4h8Nv+Lfzn/jIA6/4x/PP+OgD//j349/6OYXv+9uIf/zMmb/8nJ
+        n//BxZj/xsSZ/7myh/+zqH//k3xV/5RwTP+AZDH/iHY3/6OSU/+MfDr/g3Mv/4FvLP+Eci//gnQx/4Nx
+        L/+Hbi3/iHAq/5B3NP+dgUf/jnc6/42BOf+OgDr/vcis/9bh0v/e6e3/5PDp/+j04//l8OD/5/bp/+z7
+        9v/j7Ob/3uTf/+v49v/i8O7/4O7s/9Ti0//a5tj/5u/o/97t6P/X6+b/0uDc/+Dr5f/g7+X/2+jm/+Ds
+        8P/z/Pz/19bJ/4t+Xv+KgFP/e3dF/3hzQf93ckT/kY9v/5qbh//Gy8P/2eHc/8vUzv/V3tr/8v77//D+
+        +f/a4t7/oaSc/6auqP/P2NX/lJF6/4R9Rv90bzn/eHVE/314QP+IfUX/kn5P/5F/Uv+JfUz/gnZK/8HA
+        mf+hnGf/jntI/6qlcP+fnGf/jIFK/5GARv+KgEX/iYJG/4Z4N/+Aci3/fXcu/4h7M/+Eciz/g3Qy/4d5
+        N/+FdzX/hXg0/4Z6M/+JfTf/i345/6GSVP+3qHf/uq2I/8vKpP/DwJf/t7N7/419Ov+UgUL/intC/8XC
+        iP+vt3j/oJtf/5+RV/+Rf0j/lINL/35tNf9+bjT/fWwy/31sM/+AbzH/gW8u/4Z0M/+JeDf/inw6/4p9
+        Ov+GeDX/hHY0/4l7Of+CdDH/hXg9/6WZaP+0rX//wL2T/77AlP+7tor/ta2D/7y/l/+im3X/iHRR/3xp
+        OP+ekFT/nY5V/5mKT/+Vh0n/joFD/5WJSv+ViEb/lYNB/4lxMf+Dbiv/k38+/56HTP+GcjT/hXYx/4d3
+        M//J1cz/ydnT/9Xp5v/d8OT/s8Wz/7LGtf/n+u7/6/r0/9/o4v/BxsH/ydbU/93r6f/d6+n/u8m7/7O/
+        sv/X4dz/w8q9/7q7nf+inYP/vLWX/72+mv+yu6j/8v/9/+jy7P/Awq3/i4Fe/31yQf+BeUP/eHA6/350
+        Qv+WjGn/m6CG/8LWxP/1//7/7Pnz/87c1P/j8e3/8Pz7//T6+v/6//3/5ff3/+H2+f/O1sj/jo9i/3Zz
+        Pf96cTP/f3g7/4R5Qv+SfE7/l4FR/5SNYv+Wl3f/n5tx/4BzPv+Tekj/kIVR/3x7Ov94bjL/iHNC/6+h
+        cv+clGD/g3Q6/4t7Pf9/dzT/hXY1/4h0NP+CdDL/gHIw/4J0Mv+GeTT/hHgy/4N3Mf+Iezb/h3k3/4+G
+        Rv+5tnf/s7iF/8bAoP+qqmf/jH82/497Pf+HekH/rJ5k/4x8O/+JfDv/fnEy/3tqMv99bDT/d2cv/3lm
+        M/95ZjT/eGQz/3poLf+EcjD/inc2/4t5Of+Gdjn/gXI1/4BxNP+GeDf/jYA+/4+CQP98azL/i3lJ/7Om
+        ef+7tYv/uLuP/7Gtgf+1rYP/rbOK/7e0jf+nlHH/kYJV/8a+iv/CuIb/mI9Z/4yFSv+7s3n/v7d8/62g
+        X/+ejEv/nYVF/5+PSv+xo2D/gG80/456Pf+fiUT/i3Ux/8LIs//Hyr//3Ozp/+f8+P/J2M3/nqSN/8XM
+        uf/w/vn/7Pfx/97n4v/K19X/1+Xj/9vp5//X6Nz/1OTW/8rc0/+FjXb/hH5Q/4+HXv+CeEj/j4NN/5CN
+        cP/X2tP/xc3L/6eqlv+Jglb/hnpH/3ptPP98cD7/hHdG/5yZb/+9zbX/3O7q/+r79f/j9vH/z+Xj/9/v
+        7P/0/vv/7vDu/93k3//K3dH/t8W1/3V7X/96eU//c2xD/3ttSP+BdUr/gXhJ/4J5Sv+FgEv/mpp0/6un
+        k/+EfFn/i4ZY/417S/+VgU3/kIpQ/3x2Ov91YTb/hn1N/4V6Qf+Kdj3/intA/5CDR/+RgUT/gXEw/4Z0
+        M/+FczL/gW8u/4FyL/+BdDD/gHMw/4Z5NP+Kfjb/gngw/4d/Nv+VjlH/vbmI/6ifY/+JeDj/iXc7/4h5
+        P/+Mez7/loFA/458Pv+Jdz3/g3A3/39sM/97aC//d2Mx/3RgMf94ZDX/dWUt/35wMf+Iejz/fm8z/31s
+        NP9+bTb/g3I6/4t2Nv+Pejn/kn08/456O/96ZjD/m4ZZ/7Cddv+zrYL/r6p+/6Kecv+qnXP/mYZd/4Rs
+        RP+OfEv/npJa/42ASf95bDT/eWw1/46BSv+toWj/kIJB/416OP+Xfj3/hXQw/4FzL/+DdDL/jno5/41z
+        Mf+PdDP/qa+U/5uVh//Fysn/8/////D68/+5t6P/t7al//L89//w+fP/8fv1/9nn5f/N29n/6vj2/+b2
+        7v/h8Ob/6Pju/9bj1f/R2cb/7PTj/7O6p/+Rjnb/sKaQ/4d3Yv+RkYb/7O3a/4aBWv+LgVD/e3A+/3tw
+        Pv+PhFL/o6Z//8PYy//W5ej/6vfx/+j59v/W6+7/2+vo//f/+f/T1dH/fn5x/4eGav+noID/cWdE/3Rt
+        S/+noYb/n5aC/4J4Wf+emHT/iolj/7S6mf+op5P/npZ6/5qXZ/+ak2D/mZNq/7SukP+Wl3z/kZZq/5GM
+        av93dkj/gHM1/4t0Ov+Ddzz/jn1F/4d3Ov+BczH/hXQy/4RyMf+Bby7/f28u/4FzMv+EdjT/iHo4/4h6
+        Of+HeTj/ink5/52OSv/DwoD/ppZf/4Z0O/+LfED/iXk+/419Pv+TgUH/jnpB/4p1P/+Hczn/hHA2/4Vx
+        Nv9+azX/eGUy/31qN/93aTH/fXM3/5WLUP+RhUr/emkw/4RzOv+Hdjz/jXc4/4t0M/+JcjL/kH46/4x6
+        O/96YjL/knpR/66edP+ooHX/q6Z6/5uGV/96YzP/hW9A/5aETf+EdDf/hHM4/4RzOf+Idj7/gW83/4Jy
+        Of+JfT7/mYdI/39mKf+DcC3/lIQ//6KSTP+PfDn/kXs7/413Nv/n9e7/1tDM/9fUz//2/vb/9v74//P9
+        9//2/fn//Pz7//3+/P/4+vf/6vf1/+Pw7//v/fv/9Pz6//T6+P/1/Pr/+f7+//v////2/v7/3efp/+75
+        +v/W2ML/mZNp/6uqhv+3uJz/qqmV/4J5Vv9+cEH/eW1B/5qMYP+6tp//wtHT/9Pm3f/0/PP/8/z6/+r3
+        +v/f7ev/6PDq//b49v+uqZr/gnlc/4iDbf+hnoz/fHhn/4F/af97e17/c3FN/5KPdP+Rjn3/yM7I/729
+        rf+Pil3/hZBY/42HVf+UlXb/vMe8/5aYiv9tb0j/jo1i/46OWv97bjL/hW82/42BR/+KekL/g3M2/4V3
+        Nf9/dTL/fXMw/3dtK/98cC3/fnAu/4FzMP+Iejj/iXs5/4p8Ov+MfTr/joI4/4+RSf+roF//kH5D/45+
+        Q/+Le0H/ino8/457O/+Pe0H/iHM8/4l1O/+IdDr/iHM6/4Z0Ov+EdDn/g3M4/4BzOP+PhUn/tatv/5OH
+        S/9+bi//iHg5/4x8Pf+NfT3/jX07/4l5OP+KfDP/koI7/4VwOf+DbD7/lX9X/6ucc/+xpnz/hW04/3lf
+        Kf+Mcj3/iHQ8/4l6P/+Xh0z/hHM6/4l4QP+KeUH/fm41/4iARf/FuX//gm83/4NxL/+Nfjj/m4tG/5B/
+        PP+ZiUf/i3s6/93o6f+7trf/5eHf//j/+v/i7Oj/5vHw//D17v/Lybz/wsK5//z79f/p+fT/4PDs/+n2
+        9P/0+/r/+P38//r+/v/7/fz/+/z6//r7+f/y9fP/2OLe/77Htv+1vaL/nJ11/4aFZP/f3s//ycOs/31y
+        Tf+Nflf/o5Rt/7ayp//o8/j/6/rv//j78//3/Pj/9v38//L8+//z+/n/+Pz7//358//j3dH/4OPh//H4
+        /v/Z19D/ycmz/6Olh/+IiGT/y8ux/93c0v/F0c//nKeT/46Oaf+2xaD/sbaT/5efiv+8ycP/xMKy/35w
+        P/96bCv/eHU7/4Z8P/+HdDT/j39C/45+RP+FdTj/gHIz/393NP99dTL/enMv/3tvLv9/bzD/iHg6/5CB
+        Q/+KfT3/in09/41/Pv+PhTv/iYpB/5WKSf+cik//j35E/5KCRv+RgUH/koA//5SBRv+MeED/iXY5/4h1
+        Of+MeT3/jX0+/4h6Ov+Gdzn/hHY5/42AQ/+Rg0f/jH9A/5GIQv+RiEL/k4lD/5eMRv+ViUP/joE+/4t/
+        Nf+Mfzb/jn0+/4l1QP+SflP/koFU/4h5SP+IcDb/lHpB/4xyOv+EcTf/jX9D/4p7QP+IeT7/h3g+/3dm
+        Lv+ommP/y8uT/8fAiP+CcTr/gnEv/4h5M/+MfDf/jX46/41/Pf+GeDX/pJ+T/6+spP/k5OD/7Pn6/9Pg
+        4P/f4Nn/0cq1/6Ohgf+TlID/6+Xa/+v/8v/h8uv/4+7t/+n48//z//n/+P75//n++f/4/vn/9/34//r/
+        +P/x9+r/1d3U/8HHw/+orIv/j5Jq/4SGZf+qqJD/sq6U/5qQdf+QinD/xsvK//v/+//z+fT/+P34//n9
+        +P/6/vj/9/38//X9/v/0/fr/9v38//3+/v/9//n/+Pz9/7q+s/+MkXH/o6GI/4B9XP+IjGv/nKSN/9nk
+        0/+4wq7/tr+f/6msgf+cmGr/srSX/9bg1v/T59X/q6B3/35wQ/+Cf1f/enQ3/4F1LP+Gci//iXs6/4l5
+        Pf+LekL/jINB/5KJRv+JgT3/kYND/4RyOP+Qe0n/lYNP/46DRv+Vik//lIlM/5CKR/+ZklT/pp1k/6qZ
+        Yv+TgEf/lINF/5SFQf+WiEP/l4dI/459Qf+Kezn/j389/5ODQf+Qgz3/hnk2/4R1Of+Jdjr/k34//5B7
+        Pf+Xh0X/oJ9T/5GQRP+Uk0f/mpJA/6OYSv+6rGb/in87/4uEPv+MhD3/jodF/7Oqdv+Thk3/ink7/4p8
+        O/+LfD7/hnU+/4h6Qf+Og0f/i4BE/7ClZ/+Wi03/koVO/62hbv/Fy5X/j4pR/3tnK/+CcTH/hXc2/4p8
+        O/+MfDv/iXc3/4d2Nf+NiHH/h4Ry/6Wll//X4Nn/8v7t/8O/s/+ekpL/iYB2/5+Sif+xqp//3eLX/+Xv
+        6f/l9PP/5PXw/+z58//1/Pf/+f75//j++f/5/vr/+P73//n/8v/u9ez/z9XQ/7zFpP+cpH7/kZh5/4B5
+        Yv+emIT/3ufb/9De1P/u8/H/9vz2//b8+P/o9vX/5fTz/+Py8f/u+fj/9f76//D68f/W5t7/wNbF/5ys
+        iv/DybH/1+Xb/52tk/+5wav/uL6m/6yxlf+ytpv/m5t5/5CLWv+blVn/kYlF/5GHRv+GfEb/kYha/7C+
+        lP+JjG7/sa6e/7CylP+SjmD/gXRA/4NyMv+EdjT/i3s//4x7Q/+HfTv/kIdE/4yDQP+Jfz//hntA/5KE
+        Uf+Je0b/ioBD/5qOU/+ek1b/lY9M/6WeX/+5sHf/qp5n/5aLUP+Uikv/kYpE/5eQSv+XjU7/kohL/4uC
+        P/+PhkT/lItJ/5SIQv+OgD3/i3tA/4p8O/+PhDz/k4hB/5WLQ/+XkEX/mZFG/5uTSP+XkUX/nZZO/6KZ
+        Wf+OhUP/m5NN/5ePSP+im1r/qqFt/46BSP+OfT//j4E//5aGSf+OfUX/jX9G/46ER/+PhEj/j4RJ/39y
+        O/+unm//tqZ6/3dsOv98bzf/gHE0/4FxNP+Hdzv/lIRI/4V0Of+LeD3/jno//9ff1f/d6OH/6ff1/+fz
+        7f+1wJ7/g3tq/4Fuf/+KeYD/m4WD/4yKff+poZj/1tnU/9Hk4v/R5N7/2ubg//H48//4/fj/9fv2//D2
+        8f/u9O3/7vbo/9/n3f/b4d3/vsS1/8HFt//IzMT/6+fk/+Tk3f/x/fP/7v3x//b7+P/4/vj/7vXx/9ft
+        7v/T6+3/0Ojq/+n49//1/vb/vsu//5SbhP+TlGr/gYdb/8TIsv/j+PL/0uvT/7jJt/+lsqL/pq6U/6mp
+        if+Ylm7/lZZk/5WTVf+Vkk//iYdN/4mCSv+HekX/lYxX/6Kbev+joH3/jZFm/5uXe/+Ximj/in0//41/
+        Pf+Le0D/jn5G/4R6OP+Gfjr/h346/4R+Pf+KhEj/jIRQ/4qASv+Og0b/joJH/5aMT/+Zk1D/nJVX/6qh
+        af+0rHT/nZdc/5iTU/+ZllD/nJlT/5qVVf+Uj1H/jYpG/5SRTf+TkEz/l41H/5SGQ/+RgUb/jYQ//5GN
+        Pv+UkEP/l5FE/6CTSf+ilUv/o5dN/5mVTf+UkU7/rads/6ScW/+jm1T/pZxW/56WVf+YkFz/hHc+/4h3
+        Ov+WiEb/nY1Q/5OBSv+Thkz/loxP/4uARP+Ogkn/jX5N/5GAVf/Gs43/i3JC/4t4Qf+JfUD/iXlB/5B+
+        R/+Me0T/kn9I/5R+SP+LdkD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+</value>
+  </data>
+</root>

+ 161 - 0
shell_ui/Program.cs

@@ -0,0 +1,161 @@
+using CefSharp;
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Timers;
+using System.Windows.Forms;
+
+namespace felixyin
+{
+    static class Program
+    {
+        private static ApplicationContext context;
+
+
+        // Will attempt to load missing assembly from either x86 or x64 subdir
+        private static Assembly Resolver(object sender, ResolveEventArgs args)
+        {
+            if (args.Name.StartsWith("CefSharp"))
+            {
+                string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
+                string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
+                                                       Environment.Is64BitProcess ? "x64" : "x86",
+                                                       assemblyName);
+
+                return File.Exists(archSpecificPath)
+                           ? Assembly.LoadFile(archSpecificPath)
+                           : null;
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+
+            //Application.SetCompatibleTextRenderingDefault(false);
+            Application.EnableVisualStyles();
+            Application.DoEvents();
+
+            AppDomain.CurrentDomain.AssemblyResolve += Resolver;
+
+            MainForm mainForm = new MainForm();
+            mainForm.Show();
+
+            context = new ApplicationContext();
+            context.Tag = mainForm;
+
+            Application.Idle += new EventHandler(Application_Idle);
+            Application.Run(context);
+
+            // AutoStart(true);
+        }
+
+        private static void Application_Idle(object sender, EventArgs e)
+        {
+            Application.Idle -= new EventHandler(Application_Idle);
+            if (context.MainForm == null)
+            {
+                SplashForm splashForm = new SplashForm();
+                splashForm.Opacity = 1D;
+                splashForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+                splashForm.Show();
+                splashForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+                splashForm.ShowIcon = false;
+                splashForm.ShowInTaskbar = false;
+                splashForm.ControlBox = false;
+                Thread.Sleep(3000);
+                splashForm.Close();
+            }
+        }
+
+        public static void showMainForm()
+        {
+            MainForm mainForm = (MainForm)context.Tag;
+            context.MainForm = mainForm;
+
+            /*
+             mainForm.Opacity = 0.20D;
+              Thread.Sleep(100);
+
+              mainForm.Opacity = 0.40D;
+              Thread.Sleep(100);
+
+              mainForm.Opacity = 0.60D;
+              Thread.Sleep(100);
+
+              mainForm.Opacity = 0.80D;
+              Thread.Sleep(100);
+              */
+            // Thread.Sleep(5000);
+            mainForm.Opacity = 1D;
+
+        }
+
+        private static bool isShow = false;
+
+        public static void toggleDevTools()
+        {
+            MainForm mainForm = (MainForm)context.Tag;
+            context.MainForm = mainForm;
+            if (isShow)
+            {
+                isShow = false;
+                mainForm.webBrowser1.CloseDevTools();
+            }
+            else
+            {
+                isShow = true;
+                mainForm.webBrowser1.ShowDevTools();
+            }
+        }
+
+        /// <summary>  
+        /// 修改程序在注册表中的键值  
+        /// </summary>  
+        /// <param name="isAuto">true:开机启动,false:不开机自启</param> 
+        public static void AutoStart(bool isAuto)
+        {
+            try
+            {
+                if (isAuto == true)
+                {
+                    RegistryKey R_local = Registry.LocalMachine;//RegistryKey R_local = Registry.CurrentUser;
+                    RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
+                    R_run.SetValue("佰安客工厂管理系统", Application.ExecutablePath);
+                    R_run.Close();
+                    R_local.Close();
+                }
+                else
+                {
+                    RegistryKey R_local = Registry.LocalMachine;//RegistryKey R_local = Registry.CurrentUser;
+                    RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
+                    R_run.DeleteValue("佰安客工厂管理系统", false);
+                    R_run.Close();
+                    R_local.Close();
+                }
+
+                //GlobalVariant.Instance.UserConfig.AutoStart = isAuto;
+            }
+            catch (Exception)
+            {
+                //MessageBoxDlg dlg = new MessageBoxDlg();
+                //dlg.InitialData("您需要管理员权限修改", "提示", MessageBoxButtons.OK, MessageBoxDlgIcon.Error);
+                //dlg.ShowDialog();
+                MessageBox.Show("程序未能设置随系统自动启动。\n可能被360、腾讯管家等软件阻止,\n或者需要管理员权限,请尝试右键以管理员运行", "佰安客科技提示");
+            }
+
+        }
+    }
+}

+ 36 - 0
shell_ui/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("佰安客工厂管理系统")]
+[assembly: AssemblyDescription("http://www.qdqtrj.com")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("青岛前途软件技术有限公司")]
+[assembly: AssemblyProduct("佰安客工厂管理系统")]
+[assembly: AssemblyCopyright("Copyright © QianTuRuanJian 2019")]
+[assembly: AssemblyTrademark("BaiAnKe")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(true)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("32371a8f-70b0-44cb-b28b-7b941f5b87aa")]
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 93 - 0
shell_ui/Properties/Resources.Designer.cs

@@ -0,0 +1,93 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace felixyin.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   返回此类使用的缓存的 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("felixyin.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   重写当前线程的 CurrentUICulture 属性
+        ///   重写当前线程的 CurrentUICulture 属性。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap loading {
+            get {
+                object obj = ResourceManager.GetObject("loading", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap loading1 {
+            get {
+                object obj = ResourceManager.GetObject("loading1", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Icon logo {
+            get {
+                object obj = ResourceManager.GetObject("logo", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+    }
+}

+ 130 - 0
shell_ui/Properties/Resources.resx

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\loading.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="loading1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\loading.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>

+ 26 - 0
shell_ui/Properties/Settings.Designer.cs

@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace felixyin.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
shell_ui/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

BIN
shell_ui/Resources/$this.Icon.ico


BIN
shell_ui/Resources/Icon.ico


+ 64 - 0
shell_ui/SplashForm.Designer.cs

@@ -0,0 +1,64 @@
+using System;
+
+namespace felixyin
+{
+    partial class SplashForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashForm));
+            this.SuspendLayout();
+            // 
+            // SplashForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+            this.BackgroundImage = global::felixyin.Properties.Resources.loading1;
+            this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+            this.ClientSize = new System.Drawing.Size(1268, 790);
+            this.ControlBox = false;
+            this.DoubleBuffered = true;
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(6);
+            this.Name = "SplashForm";
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "启动中请稍等";
+            this.Deactivate += new System.EventHandler(this.SplashForm_Deactivate);
+            this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SplashForm_FormClosed);
+            this.VisibleChanged += new System.EventHandler(this.SplashForm_VisibleChanged);
+            this.StyleChanged += new System.EventHandler(this.SplashForm_StyleChanged);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+    }
+}

+ 49 - 0
shell_ui/SplashForm.cs

@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace felixyin
+{
+    public partial class SplashForm : Form
+    {
+
+        public SplashForm()
+        {
+            InitializeComponent();
+        }
+
+        private void SplashForm_FormClosed(object sender, FormClosedEventArgs e)
+        {
+            //关闭定时器
+        }
+
+        private void SplashForm_VisibleChanged(object sender, EventArgs e)
+        {
+            this.ControlBox = false;
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.Show();
+        }
+
+        private void SplashForm_Deactivate(object sender, EventArgs e)
+        {
+            this.ControlBox = false;
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.Show();
+        }
+
+        private void SplashForm_StyleChanged(object sender, EventArgs e)
+        {
+          
+        }
+    }
+}

+ 1253 - 0
shell_ui/SplashForm.resx

@@ -0,0 +1,1253 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABILAAASCwAAAAAAAAAA
+        AABFJg//SisU/0orFP9MLRH/UDER/1MzFP9SNBT/UTUW/1E1Fv9UOBn/Ujcb/00yF/9bQCX/XUAk/1Y4
+        Hf9aPCD/Wz0i/1o8If9XOR7/WTsg/1k+I/9dQif/XUIn/1xCJv9gRSn/YUcr/19GJv9eRSL/XUUi/11F
+        JP9fSS3/YUsv/2lUNv9oWj7/c11M/4NsTv+IdE3/iHZV/4+CZf+Cc1H/dF86/2JPNv9DMCD/TkI3/15Q
+        TP9OPkD/NSQk/yoYF/80IB//Qjs4/5KYk/+Yjov/VkRC/z80Mf9iUlH/NyIh/y8cG/8uHRz/MiAf/zAf
+        G/8rGxX/Nych/1pKRP8wIBr/NiAb/zwhHf9AIh7/Oh4a/1pEP/+CeG7/b2VY/15COP9fQTz/RTEw/z8q
+        Kf9AKyr/PCcm/zsmJf87JiX/NiUj/zsnJv9AJSX/QCUl/zomJf87JiX/PSko/z0wLv9pXVv/WEtJ/1BF
+        Pv9fU0//dWZp/5WKiv+MhH//WUtD/0g4K/9PPi//QjAn/3FeWf+Yjoj/TUA6/z8tJ/9FMi3/QjAq/z8s
+        J/89Kyb/Oyko/z0rKv9aSEf/VEA//zsmJf89KCj/Oygm/z4sK/89KDD/PSkw/0AtMP9EMTT/RTI0/0Mx
+        L/9EMTP/Pyoz/11NUf9oW1z/PS8y/0w9P/9QPEH/RC84/00sD/9SMBT/VTMY/1k2FP9bOBL/XzsV/107
+        GP9bORz/Wjga/1k4Gv9QNRr/YEYr/2VLMP9bQB7/Wj4b/1o+G/9ZPBz/Wjwh/1o8If9aPCH/XUEn/2BF
+        Kv9gRCr/YUgn/2JKJv9iSib/Ykgq/2JHLP9eQyj/fWNI/3VfQ/9fSS3/Xkkr/087IP9QMyT/a00v/3di
+        Of95ZT3/e2E0/3pgLf92XzH/Vjsm/zMXE/8nFgj/KhgO/y8aF/8wHRz/NCMi/zUiIf93bWv/ZGJf/zwr
+        Kv9JNjX/ZGFd/5mQjv80JST/MyAg/y0bGv8uHBv/MiEd/0c2MP9HNzH/QTIs/y8fGv82IBz/PSEd/0Ij
+        IP8+Ih//SjQw/3htY/9tY1b/UDcs/z0iHP9SPj7/Qy4t/zomJf87JiX/PSgo/z4pKP84JiX/OSUk/z4k
+        JP9BJif/OyYl/z0oJ/9BLSz/Rzo4/15RT/9zZmT/dmpj/3hrZ/+MfIH/loyN/5CJhf9rXVb/cGFT/4V1
+        Zf9TQDf/aFVR/5+clP+Ig3v/XlBK/0o1MP9eRUD/WD87/0UuK/8+LCv/QC4t/15MS/9MODf/OiUk/z0n
+        Jv85JiP/Py4t/0cyOv88Jy7/Pist/0AtMP9DMDL/QTAt/0EuMf9BKzX/QTI1/0k8Pf9AMzT/STk7/0cz
+        OP9ELzj/XjYZ/184Gf9kPR3/ZkEd/2Q/Gf9kPxn/Yz4b/2E9Hf9hPBz/YDwc/1k6Hv9lRir/YUMm/1Q5
+        F/9XPhr/VjwY/1c7HP9bPSP/Wz0j/1o9Iv9cQiP/X0Yn/2FHKP9iSib/Yksl/2RNJ/9jSyn/Y0kq/2VL
+        L/9vVTn/emJG/2lQNv9bQin/X0Ys/1g6Jv9aOyD/b1kt/3dgL/+BXS//g2Iu/29YK/9BJBT/NhoV/zMg
+        EP80Ihb/MiAa/zIgHv8xHx7/NSMi/0EvLf82JSL/UUNA/4F3dP/Hwr7/bGRg/0c7OP9PQT3/Xk1L/0cz
+        Mf9URED/X1FL/1JCPP8zIhz/NyYe/zYiG/87Ix3/QCQe/0MoIv86Ix3/UTYu/5Z8cv9kU0f/NSMb/1Q8
+        O/9XPz3/QCgm/0QvLf88JyX/QSwq/zsqJ/87KCX/QCYk/0MpKP8/Kyr/Qiws/0AtK/9ANDD/c2dl/4J4
+        d/93b2r/d21o/4l8ef95bGj/YFRM/0w9M/9WRTr/XEo//0k2L/9TQDv/jIN9/6Gdlv+OjIT/QTMt/0wy
+        Lv9OMi7/SzIu/0IxLv9BLSv/Qiwq/0AqKf89KSj/Oyoo/zspJ/87KCf/SDE5/0ArMv88KSz/QC0w/0Iv
+        Mv9CMC//QS4x/0EtM/87KS7/Pi4y/0MyNv9ALzL/Qi4z/0QvOP9nPiX/ZT0g/2Q+HP9iPxz/Yj8e/2A9
+        G/9gPRv/YD0b/2A9G/9gPRv/Yj4f/2A7Hf9fOxz/Wj4f/1c+Hv9XPh7/Wj4h/1w9JP9cPST/Wz4i/1xE
+        H/9eRiL/YUol/2NLJ/9hSSX/ZEso/2RNJf9lTiX/Ykkp/21UNP+GbEz/b1Q7/19BLv9lSTD/X0Qp/1U6
+        If9fQyP/fmE3/35cLf9+Yi7/Xkcl/zQZD/8xGw7/MiAQ/zEiF/8qHxj/Lx8e/zAeHf8uHBz/MSAd/zUl
+        Hv8+Lij/U0U+/1ZKRP9TR0D/ua6o/7eup/9qXVf/ZlBL/2NVT/8wJB7/MR8a/0ArJf86KBz/OScc/zkn
+        HP9ELCL/Ri0j/1I5Lv9ONCr/Tzsw/2NbTv9wYln/TzIu/1Q5Nf9GLCf/Qi4o/0IvKf8+KiX/OSkj/z0q
+        Jf9CKST/RSsp/0IuLf9GMC//RjMx/2heVf+JgX7/gn2A/4uGhf+VjIb/eGpf/048MP9NOi//TDov/0o4
+        Lv9FMSz/RzMu/0QwK/9VOzf/n4uG/5SMhf85Lyn/Pism/0gwK/9ILyv/QjEr/0UvKv9JLSn/Qyoq/z4r
+        Kv80KCb/Oikn/z0nJ/8/Ji7/Pygv/zspK/9CLzL/QzAz/0EuMv9BLjH/QS4x/0EsM/9FMDj/RS84/0Es
+        Mv9EMDX/RC84/1gyH/9lQCj/Y0Ek/2I/Hf9hPhv/Xzwa/188Gv9eOxn/Xzwa/188Gv9cOBr/Xzsd/2A9
+        H/9ePiD/XD4f/10+H/9cPh//XD8f/1w/H/9dQiH/X0cj/2FJJf9hSSb/Ykom/2FKJf9jSyf/Zk8n/2dR
+        Kf9wVzf/fWRE/2lSLP9hRyj/XkMo/2NKKv9lTCz/XUQj/1E6F/9pUSv/f2I3/31iMv9TOh3/NhkV/z8m
+        If81IxP/MSIW/ykdF/8uHhz/MB4d/y8dHP8tHBn/Lh4Y/zMjHf9AMSv/VEhC/3FmYP9cUEr/RDkz/1tO
+        SP9iTUj/VEE8/z0sJv89JSH/PCId/zgmG/84Jxz/OScc/0MqIP9FLCP/W0E3/3RqXv+0tKb/jot9/1ZI
+        Pv9KLiv/QCYi/z0iHv82IRz/RzMu/005NP9RQTv/RjQv/0MqJv9JLy3/RzMy/0cxMP9KNzT/jIF5/5KK
+        h/+JhIb/h318/15OSf9XQjn/Tzwx/007MP9LOi7/Szgv/0k1MP9DLyr/RC8q/0YpJf9RMi//bk1K/454
+        c/9XRkD/Qigk/0YtKf9AMCr/RjAs/0wxLf9GLS3/Pisq/zcrKf84JyX/Pigo/zwkLP89Ji3/PCks/0At
+        MP9ALTD/Pywv/0EuMf9BLjH/Piox/0EsNP9CLTX/Qi4z/0UxNv9FMDn/NhUH/0QjEf9XNyH/YkEk/148
+        G/9bOBb/WTcV/1g2FP9aOBb/WjgW/1s3Gf9eOhz/YT0e/2E9H/9gPB7/Yz4h/2BAH/9bQRv/XkMe/2JH
+        Iv9hSCT/Y0om/2NKJv9jSif/Y0on/2hPLP9rVCz/bVYu/450VP9uVTP/aVQo/2hQLP9iSCn/Y0sm/2ZP
+        Kf9iSyX/UTwc/1I9Hf91XDf/d141/0UpE/83GBn/PiUj/z0rHP8zJBn/LiIb/zAgHv8xHx3/Lx0c/y4c
+        GP8uHRf/KBgS/3FjXf+lm5X/bGBa/2xgWv9PRD3/YVJN/0gzLv8wGxX/OSId/1U4NP9cPzr/OScc/zkm
+        G/86Jxz/QSke/0kwJv9uVEv/emxg/4V5bf9eRDr/Riki/0gtKf9RNjL/X0VA/15KRf9DLyr/Qi8q/0k5
+        M/9PPDf/SzMu/1A2M/9IMzL/RC8u/11LSf+ckYn/lo2L/4mChP+Nfn3/alRQ/080LP9LNCr/RTQq/0Uz
+        KP9FMin/Qy8q/0EtKP9ALCf/OSwm/z8tKP9CIyD/RS4q/2lYU/9NNDH/PSUh/z0sJv9CLSj/SjAs/0cv
+        L/87KSf/OCsp/zgnJf88JiX/PCQr/z0mLf88KSz/QC0w/0AtMP8+Ky7/QS4x/0AtMP88KC//Piky/0Es
+        NP9DLzX/RjI3/0QvOP8uFwz/LxII/zUSCf8+Hhj/Rike/1IzF/9PMRD/TS8S/04wEv9QMhT/VzMU/1s2
+        GP9eOhv/XDoe/1o5Hv9dOyL/YEIh/11EGv9fRhz/Y0kh/2VKJv9tTib/ck8k/3JRKP9yUiv/dVUs/3FU
+        Lv98YT7/e188/3RZNf94YTv/aE8v/2JHLP9hSSb/ZU0p/2NLJv9bQCf/UTQh/1Y7If9mSDP/QSAX/zcb
+        Ev80HhT/MCEV/zIkGP8yJBn/MyEX/zMhFv8zIBb/MSEW/y4gFf9IOzD/f3Rq/15UTv9vYVv/bVtV/0At
+        KP9qVlH/YU1I/zMcFf87IRj/PSQb/29WTP9dRTv/OSEX/z4mHP9BKB7/Qikf/0IpH/9EKyH/RSwi/0cs
+        Iv9DKR//RCsi/0owJ/9gSD//c2Nd/35taP9KOjT/RTMq/0g2K/9aRz3/Y09G/15JRP96Z2j/koSH/4uC
+        g/+CdHb/dmNm/4JpZv+Famb/UDQw/0EqJf9ALSf/PSkk/z0pJP9ALCf/Pysm/z8qJf9BKiX/QSgk/0Mp
+        Jf88JSL/NyIh/044N/8+KSf/OSYh/z4qJf9AKyf/QzAv/zknJv9CMTD/PCwn/0EwK/86Jyr/Oycs/zon
+        Kv8+Ky7/Pisu/z0qLf9ALTD/QC0w/zwpNP86JzX/Oig0/z8rOP9GLzz/RjA9/ywWC/8xFQv/OBQM/zES
+        C/8zFg3/PRsK/0QhDf9FJRL/SikX/00sGf9QLxb/UzIY/1c2HP9VOB3/Uzgd/1U6H/9ZPR7/XUId/19E
+        IP9gRSH/ZEkl/3JSKf96Vir/fF4q/3dcJf92WiL/cVUq/3NXNv9tUS7/ak8s/2hRLP9mTS7/YUYs/1xD
+        IP9kTCj/Zk4q/2RLKf9ZPiL/TTEZ/1IyI/9DIhr/OR4U/zchFv8xIhb/MSMX/zIkF/81JBj/NSMY/zUj
+        GP81Ixj/NSMY/0s4Lf9MPDL/OSok/zomIf88Ih7/OiQf/0QwK/9WQz7/QCkh/0AnHf9LMyn/SzIo/1Y9
+        M/9fRjz/Qikf/0IpH/9AJx3/QCcd/0EnHv8/Jhz/Pycd/z4mG/9AJx3/RSwh/0MqIf88KCL/VEA7/3Ne
+        Wv9xXlX/YU9E/2FPRP9lU0n/dWVf/4+Cg/+KgIP/iH+B/4x9gP9eSUz/RSsp/0swK/9UOTX/Qism/0Et
+        KP8+KiX/PSkk/z0pJP86JiH/OSUg/z8kIP8/IyD/PyQg/z8nJv86JST/PCcm/0o1M/88KCP/Oyci/z0p
+        JP84JiX/Oyko/z0rKv87KyX/WkpF/zsoK/86Jyv/OSYo/zsoK/88KSz/PCks/z8rL/9ALTD/PCsy/zop
+        Mv9BMTn/QzA7/0QtO/9GLz3/KxQK/zQYD/88GBD/NxoO/zUZDv86FA//OhIO/zoVDv88FxD/QR0V/0Qm
+        Ev9GKRP/Sy4Z/0w2G/9RPB//Uj0h/1Y+If9bPR//Wj0f/15CIv9mSib/cVEo/3xZLP98Wy//gGE1/39f
+        M/9wUyz/bVEu/2pOKv9pTir/Z1Aq/2dNLv9kSS7/W0Mf/15GIv9oUC3/aVQn/2FLIf9XOyT/SCcc/0Eg
+        GP88IRf/OCIX/zIjF/8wIhb/MCMW/zQjF/80Ihf/NCIX/zUgFf86IRf/OB8V/zghGP86JCD/PyQg/0Qk
+        If89JiL/NCEc/zgkIP9LNCz/WkE2/z8mHP9kS0H/ZUxC/082LP9MMyr/QSge/0IpH/8+JRv/QCge/z8m
+        HP89JBr/PCMZ/zohF/89JBr/RSwj/0guKf9NMi//X0RA/0k1LP9INiv/QS8k/2RUSv99dG3/hH5+/4uG
+        iP+VjY7/nY+R/31pbP9LMS//TDEt/2BFQf9FLin/Oygj/zwoI/85JSD/OSUg/zgkH/83Ix7/PCIe/zwh
+        Hf88IR3/PCQi/zgkI/82IB//OiUk/0s3M/88KCP/NSEc/zglJP86KCf/OScn/zkpJP86KiX/OCYo/zom
+        K/8/LC//Oygr/z0qLf8+Ky7/Pywu/0AtMP8+LjH/OSst/0k7Pf9RQEf/QSo4/0UuPP8wEw7/NhcT/zcX
+        E/83FxL/OBYS/zwYFf89Fxb/PhgW/zwVE/86FRL/NhkO/zQYDf82GQ7/OB0Q/zofEf88IRP/PyIU/0Qi
+        Ff9EIhX/QiAT/0cqG/9KKxv/SSoZ/1M4Jv9MMyD/aVA9/0wxH/9DJhT/RSkW/0ktGv9RNyP/WT8o/2FI
+        Lv9XRSX/VUEe/2RLJv9qUSn/alAq/2RHJ/9TNhj/QyYV/z0fHv85IRv/MyMX/zIhFv86Kh7/OCYb/zQi
+        F/8zIRb/MiAV/zEgFf8yIRb/NCMZ/zQiHf85Ih7/PiEe/z8mHv89JRz/Qioh/0UsI/9QNy3/XUQ6/zwk
+        Gv9iT0T/bltQ/1A8Mf9FKx7/QCUY/0InGv8/Jhv/PSQa/z8mHP88Ixn/OiEX/z0kGv89Ixr/QCYd/040
+        LP9kSkL/SzQn/0kyJv9NMiz/emVi/4R9ef+Ih4T/k5KQ/5WRkv+cj5H/jnZ6/00xL/9LMCz/RSkm/0Aq
+        Iv86KB//OSUh/zUgIP80Hx3/NSAe/zUgH/82Hx7/OCIg/zghIP82IB//NSAf/zkkI/82ISD/PSgn/1Q/
+        Pv9KNTP/OyEh/z0nJ/87KCf/Oyon/zwrKf89KC//NSIn/19RT/9OQD7/Nign/0AsMv9ALDP/QS00/z0s
+        Nf87KjX/OCgx/zwrNv9BLjr/QC05/zITEP81FhP/NBYT/zcVE/86FhP/OxgV/zwZFv89Ghj/PBoX/zwa
+        F/84GhP/NhkQ/zgaEv84GhT/NhgS/zgaFf84GRP/NBML/0gnH/9UNS3/MRYO/1tBOf9vVU3/RS0j/zkh
+        F/9ONiz/Qike/0YsI/8/Jhv/PCIY/zshFv88JBP/SDIb/1A+JP9TPiD/X0Uj/2lOK/9rTyz/ak4r/15E
+        Hv9KLhj/PB4c/zoiGv83Ihf/NyIX/zsmG/84JRr/MyEW/zIgFf8xIRX/LiEV/y4hFf8xJBn/NSUf/zkl
+        IP8+JCD/QCYe/z8mHP9BKB7/PiUb/z4lG/9HLiT/RC0i/0o4Lf+Ne3D/STcs/1c8Lv9XPC7/QSYX/z8l
+        Gf89JBr/PSQa/zsiGP88Ixn/PiUb/z0kGv8/Jhv/SzIo/3tiWP9SPS7/Pyoe/2NLRf+WgX//mYiH/6WX
+        lP+empf/hIKC/5WHif92XGD/Si4s/0sxLP9CJyP/PCcd/zcmG/84JCD/NiEh/zciIf82ISD/NSAf/zYh
+        IP85JST/NyMi/zYhIP81IB//OSQj/zkkI/87JSX/OyYl/1M+Pf9FKSn/PSYl/zsoJ/87Kif/Oyko/z0o
+        MP8zISf/al1c/1dKSf80Jib/QCsz/0ItNf9CLTX/PSo2/zwpN/86KDb/OSc1/zwqN/87KTf/NRYT/zcY
+        FP84GRX/OhgV/zoXE/88GBX/OBgV/zMYFP8zFxP/MhcS/zUYD/82GRD/ORwT/zgaF/85Gxr/OBkY/0Il
+        IP9KMSf/YEc9/1c/NP80IBX/ZlJH/2JOQ/85IBn/Qygi/zMYEv9ELCb/RTAq/0cxK/9GMCr/PSch/006
+        Lf82JBP/Qi8b/043H/9ZPSL/ZUko/2pOK/9nSyr/ZEsk/1E4G/88IRj/OCQV/z0kGf8+JBr/PCMY/zgk
+        Gf81Ixj/MiAV/zMjF/8xIxf/MCEV/zEjGf81JB//OiQg/0AlIf9BJx//PyYc/0AnHf9CKR//Qikf/0Am
+        HP9GLyT/ZlVK/29dUv84JRn/RSod/1k+MP9NMiT/QCYb/zwkGv88Ixn/PCQa/z0kGv87Ixn/PiUb/z8m
+        Hf8/Jhz/Y0pA/2ZWRv9bSz3/lYN7/4Jvbf9hNjr/YDA1/5SJiP+mpqb/u6+x/25UWP9JLSv/RSsn/0Yq
+        J/8+KSD/NSQa/zcjH/82ISH/NSAf/zUgH/80Hx7/NB8e/zgiIf83IiH/NyEg/zciIf83IiH/NyIh/zsm
+        Jf85JST/QCsq/08zM/87IyP/Oykn/zsqJ/9KODf/Qiw0/zUhKv9OP0b/UUFI/zgoLv8+KTH/Qi02/0Qv
+        N/8/LDj/Piw6/zooNP9EMUH/Pyk//z8pP/8xExL/NBYU/zcZF/87Gxn/OxkY/zoXFv81FhT/LRQQ/zAX
+        E/8wFxL/MhYQ/zcaE/87GxT/Phoa/zwYG/8+HB7/UDQv/15IPP9kTUP/Uzwz/1M/NP8/KyD/Mx8U/zkg
+        Gv89Ih3/PCIc/zYeGf8zHhf/NB4Y/zUfGv81Hxv/Pysh/zknGP86Ixj/QCQT/1M0Hf9eQSH/Z0sl/2xN
+        Jv9qTyP/Vz8e/0csG/8+JBX/QBwV/zcXEf89GBP/SDAn/2BPRP8/LCL/MiIW/y8jFf8vIhT/LyQX/zMm
+        Hv83JR3/PCYf/0MqIf9CKR//Qikf/0EoHv9AJx3/QSge/z8mHP9CKiD/fWtf/009Mv84IBL/QCUX/19B
+        NP9FKB3/PyMa/0EkG/8/Ixn/PyQY/0MnHP9HKyD/Riwh/0QqH/9PNSn/dmdY/4mBd/+Rh4H/SDMr/1Iu
+        Kf9qREH/kXV0/8W5uv+Hc3b/TTE1/0csKP9AJh//Rywn/0ItI/81Ixn/OSQh/zkjI/85ISH/OSEh/zgg
+        IP80Hh3/NiEg/zQfHv80Hx7/NB8e/zYhIP84IiH/PiYl/0EpKP9BKSn/Ujo3/zkjIv89KCr/Oiko/zkr
+        Kf9FNTj/PCov/zkmK/89KTH/QCw1/z8rMf9ALDH/Qi40/0AvOP9DMj7/TzxK/088Tv88Jz//QS1E/zQY
+        GP81GRn/Nhoa/zcZGv85GRr/ORkb/zYYGP8yFxP/MhcT/zEWE/8vFhL/NxkW/zsWFP84EQ7/Tikl/0go
+        Jf9CJx7/RzAi/081L/9LMCz/XEI4/0wzKf8/Jhz/OB8U/zsiGP86IRf/OyIX/zsiF/84HxX/OR8W/zsf
+        G/84HhT/OSEU/zodGf9AJBn/UjYl/1xEJv9eRiD/Zkke/2ZKHv9fSCT/Uzce/0MhFP9VNzP/cGJc/1g+
+        Ov9dRj7/UkE1/zsoHv85KRz/MyUV/zEjE/8xJRX/MCca/zcpHf85Jxv/Qiof/0MqIP9AJx3/QCcd/0Eo
+        Hv8/Jhz/Qicd/z0eFf95Ylj/a1tP/zMeEP9FLB7/Sysd/0ooHf9JKB//RCIZ/0UkGv9MLB7/Ty8i/1Iy
+        Jf9MMCL/SS4g/1E1J/+NeWz/trCu/6+pp/9zWkr/fnRe/1pTRP9UKSX/eVta/3VZWP9DJyb/RCoi/z4l
+        G/8+JBr/OCQY/zooHv88KCT/PSYm/0MmJv9BJCT/PyMj/zcgIP85JCP/OCMi/zYhIP8zHh3/NB8e/zoj
+        I/9DJyf/RCcn/0QoKP9JNi//OSQj/z4mLP87KSr/NCcl/zYpJ/9MPDn/RjEv/0MsMf9GLTb/Qi8y/0Eu
+        Mf9FMjT/QjI3/0o5Q/9JNkb/RDFF/zgnPP82JTr/NRoa/zUaGv81Ghr/ORob/zsaG/85GRr/ORsa/zQZ
+        Ff80GRX/MxgU/zEYFP85Gxf/OhUT/3BQSP94XVL/SDMo/zsmGP9CKh3/QCYf/0EmIv9CKR//QSge/zoh
+        Fv85IBb/OiEX/zkgFv87Ihj/OiEX/zgfFf84Hhb/Oh8b/zohGP88JRf/OiEW/4Nzav+rop3/jYNy/3Rk
+        R/+MeFn/gmxF/2xXLP9fRSj/Sy4c/3lvZ/+us6r/eHFq/z4rIv82JBn/Oigd/zooG/86Jhf/NiMT/zUj
+        Ff81Jhr/OSUa/0EmHP9CJx7/Qikf/0UrIf9GLSP/Qikf/z4lG/8+JRv/PyQb/1AwJ/+DYFf/QCoc/0gv
+        IP9YNyr/TSsh/0sqIf9KKCD/Ti0j/08vIv9NLSD/Ty8i/0wxI/9OMyX/VDkq/082Kf+Ac3L/opWU/0oz
+        I/+Fd2L/SjUp/0koIv9zWVP/iG1n/0AmIP9LMSj/RCwh/z8mHP86Jxr/Oige/zomIv86IyT/PyMj/z8j
+        I/8+IyP/OCIi/zomJf86JiX/NSEg/zUhIP82IiH/OSIi/0ImJ/9FKSn/Qicn/0w5Mv9DLi3/Pygt/0Aq
+        LP9DLy3/Qi4t/2VQT/9POjn/Qiox/0kwOv9EMDT/TDk8/1I/Qv9LO0D/RjU//0Y0Q/9EMUX/OCc8/zcm
+        O/84Ghr/OBoa/zgaGv85Gxv/Ohsb/zcYGP85HBr/OB0Z/zgdGf83HRj/Nh0Y/zkcF/9GIh7/aUxB/2BK
+        O/9DMSH/NCES/z4lGv9BJiD/SS4q/0MqIP89JBv/OyEa/zshGP85IBb/OSAX/zsiGP86IRf/OSAW/zgf
+        Fv86IBr/OyMX/z4nFv82IRL/bGJZ/52enP+WlIz/nJKA/6WZhP+aiWT/blcn/15FIP+HbFD/nYyE/5CO
+        hv+Zko3/SDcu/zckGf8/LCH/Pigc/0AmGP9AJxj/PSYY/zomGv89JRn/Qycc/0AnHP9DLCH/RS0i/041
+        Kv9NMyn/PCIY/z4lG/8+Jhv/Px0V/1kwKv9JMCP/Riwe/1k6LP9uTkP/UzQq/04vJf9QMib/UjMl/1Ax
+        JP9QMST/TjIi/1Q5Kv9aPzH/Qykf/4Bubf9sV1b/VT8x/3BfTf9OMif/TzAp/1tCN/9iS0D/Ri8k/000
+        Kf9HLCP/RSkh/z4nHf86Jh7/OyYi/zsjI/8/IyP/PyMj/z4jI/86IyL/PCUl/0ApKf87JCP/PCUk/z4n
+        Jv8+JiX/Qycm/0QoKP8/JCL/SjQu/0gyMf9BKi//Qist/0YvLv9IMTH/SzU1/086Ov9BKjD/WUFJ/1dC
+        Rv9LODv/XEhL/1FARf9HNUD/RDBA/z8rP/89K0D/PCo//0MdH/9CGx7/QRoc/zobGf81Gxf/NhsX/zgd
+        Gf86Hxv/Oh8b/zogG/85Ihj/Ox8V/2NAOP9UNi3/dFdO/0otI/85HBb/PyUh/0QpJf9EKiT/PyYc/z4j
+        H/87Hh//OiAZ/zkhFv87Ihj/PSQa/zsiGP87Ihj/OyIY/z8oGv9BKxf/PysT/zQkE/9MQDD/l499/5mT
+        i/+Ykon/oJiD/4Z3V/9eRyD/Ykwl/2tVL/+VfW7/aV5U/73Buv+Bdmz/NyAV/0MpH/9CJRr/RSoc/0Qp
+        G/9EKhv/PioX/z0pF/8/Kxj/QCsb/0k0Jf86JRb/OiAT/0svI/9JLSL/PSIV/0UtH/9pT0n/QiYk/1E2
+        Kf9KLyH/QicZ/1pBM/9sVUb/RzAh/0w0Jf9QNCb/TjQm/1I3KP9aOij/UTQm/0YtI/9jTUf/oYaC/1Yz
+        MP+FZmH/dV5T/00tJP9WMyv/TTAm/4t0af9NOi//SDIn/0gqJf9MJSb/RiUl/0AmIf9BJiL/QSUi/z8j
+        I/8/IyP/PyMj/0ImJv9GKSr/SCss/0QoJv9FKib/SC0p/0csKP9FKib/RSom/0UpJf9TNzL/Vz8+/z0p
+        Lv9ALC3/RTAv/0gzMv9UP0D/W0hM/0c0N/9QPD//Uz1B/1E6Pv9iS07/UDtA/003Qv9FLT3/QSk+/z8q
+        QP8/KkD/PRsd/zwbHP89HB3/ORwa/zYcGP82Gxf/OB0Z/zsgHP86Hxv/Oh8b/zkiGP89IRf/Sygg/1w9
+        NP+IbGP/Rikg/z8iHP9BJiP/PyMg/z0jHf9EKyH/Qykk/zkdHv87IRr/OiEW/zsiGP87Ihj/OyIY/zwj
+        Gf87Ixj/PicZ/0EsGP9ALBT/PikZ/zMiE/9TRzb/i4J3/56ViP+fk3n/pZd5/5SIbP+Xim7/kYNn/5yH
+        cP9YSDb/aF1Q/3NjWP+Aal//QCUb/0QnHP9CKBn/Rise/0UrHP9HLRz/Ry4d/0oxH/9JLh//YEU3/2dM
+        Pv9cQjL/Riwb/0sxIf8+JRP/Qy0b/1Q8MP9DKSL/ZUo9/0QpG/9KLiH/QSgZ/1M9Lv91Xk//TTUm/1E1
+        J/9PNCb/UDUn/1M3Kf9XPzT/dF9a/5V9ef9YPDj/Tioo/3VWUP9iS0D/UDAn/1c3Lv9JMSf/c1RL/4Z0
+        af88LSH/RCwl/0gnKP9FJib/Qicj/0EmIv9AJSL/QCQk/z8jI/8+IiL/PyMj/0YqKv9ILCz/Rywq/0gt
+        Kf9GKyf/Risn/0YrJ/9GKyf/SzAs/0w2MP+AbWz/Sjs//0MxMv9MNzX/TDc2/1VBQv9VQkX/Szg7/1RB
+        RP9WP0P/UTo+/2ZPU/9VQEb/TDdC/0kyQv9ELUH/QCtB/0ArQf84Hh7/OR4e/zkeHv84HRr/OB0Z/zof
+        G/87IBv/OyAc/zofG/85Hhr/OCIY/0AkGv9DIBj/OBoR/3ZaUf9GKSD/QCQd/z8kIP8+Ix//PSMd/0An
+        Hf9BJiL/Ox8g/zshGv86IRf/OiEX/zohF/86IRf/PCMZ/z8mG/8/Jxn/QCoX/z8qEv9DKBn/PCQW/zon
+        GP94alv/hHZj/5KBY/9vXDb/loFb/5WAWv+ZhV//oI5q/2pTNv9cPij/Yk1B/4x3bf9AJRv/UDIo/3FW
+        SP94XU//TTEj/1MyI/9GJhX/YkIy/1c1KP9HJRj/XDou/2BEMf9XQCj/UTki/0IsE/9XQyn/j3ln/3FZ
+        S/9ILSD/Qyga/0gtH/9DKhz/dl9Q/4t0Zf9SOSr/UDUn/1M4Kv9TOCr/SzMo/4FuaP+cjIv/h4N9/4J+
+        dv9VSUP/QC0m/3BYTf9YNy7/VDcu/1I+M/9YLCX/oZGF/4aAcv85Jh//RSsq/0YqKf9GKyb/RCkl/0In
+        JP9BJSX/QSUl/0ElJf9DJyf/Rioq/0gsLP9LLy3/Si8r/0kuKv9EKSX/Si8r/1I3M/9TOTX/TDs0/4+D
+        gP+AeHv/TDw9/1A6Of9WQUD/Uj0+/1E+Qf9VQ0X/WUZJ/1xGSf9VPkL/Vj9D/1A6QP9LNUD/STFB/0Ms
+        QP9BLEL/OSQ6/zojGv83Hxn/Nx4d/zoeIP86HCD/Ox0h/zodH/88IR7/PCIb/zsiGP9BIRz/QSIe/0ww
+        K/9nSUL/Z1FG/0koH/9LJiD/PyUi/z8jIP8+Ix7/PCEc/zwhHf86Hxz/OB0Y/zsgG/86Hxv/OiAZ/zkh
+        Fv86IRf/QCcd/z8oGf9BKxv/QSoZ/0kqHP9IJh3/VEE5/3h1bv+KhXb/ZVM1/2ZNJP9pTyH/alIg/25Y
+        Iv9rVSb/Ykcj/14+Jf9nVUb/r6OX/46DfP9ENDD/MxsT/0UpHv9jSTv/tqye/5SOgf9fRDn/dFtO/4Jp
+        W/9hPDD/WjAh/1oyIf9sSjn/bVE+/19CL/9tSjr/Yzwt/00wIv9JLiD/SS0f/0w0Jv+IdWn/koJ6/4Fw
+        bP9xXFr/cFxZ/2dTUP9oWlP/iHp3/5SEiP+Oko3/nKeg/6u3t/9pa2j/XVBG/3FeVv9ILif/VDEp/0op
+        IP97al//raGS/1NCN/81IRz/Qikm/0QpJf9FKib/RCkm/0ElJf9CJib/Qycn/0IoJv9LLiv/UC0s/08x
+        LP9LMyr/SzIp/0gvJv9LMSn/VDoy/1Y9NP9JNy3/h3Vw/5SCgv+Abm7/eWRj/1U7O/9QNzj/Tzs+/1A7
+        Pv9OOj3/TDs+/0o5P/9OO0b/TjtH/0g0Qf9CLTz/QS8+/z8xP/9fUF7/PSIa/zwfHP88HSH/Oxwh/zga
+        IP86GyH/ORsg/zseIP88IR3/PCEa/0MgHf9CIyD/PyYi/5+Fff+OfnL/Rige/00oIv9BJiP/PyMf/zwh
+        Hf87IBz/PCEd/zgdGP81Ghb/OB0Z/zofG/86IRn/OiEW/zsiGP9AKB3/PygZ/0EpG/9AKhv/Rywe/0cm
+        Hv97bGb/jI6M/4SAd/9POyP/bFIs/3JaLf9zXSr/dF8o/3VeLP9sUSz/X0Ao/0c0If+ekoP/dW1i/3pv
+        af9aSEL/MxsR/z0oGv8+OSz/QTcr/1s+Nf9FNyj/Y1pJ/2xbTP99aFj/dFtJ/2NAMf9vTT7/mop4/31m
+        Vf+BZFP/eVVI/3ZSRf9gOy7/UzUl/2lQQv95Y1v/iXZy/45+ev+Qf3v/kIB8/5SJgf+ShoP/lIWJ/5WT
+        j/+gpaH/pq+y/7e9vf99d3H/kYaC/5GAe/9qXFD/V09C/4B7bf+BcGH/cFlO/2xVUP9ILir/QCUh/0Yr
+        J/9GKyf/RSkp/0QoKP9CJyf/QCck/0suKv9XMS//UDEr/0cvJP9JMCb/STAm/000Kv9ONSr/Tzcs/0k2
+        K/9oVE7/WkRD/1dBQf+Db27/Y1BP/2RTU/93Zmn/i3p9/4l4e/+KfH3/jX6F/458if9+bnn/YlRd/3Rm
+        b/+DdH7/j3+L/6SVof9CHR3/Qhsh/0MaJf87GSH/Nhkd/zgaH/84GSD/OBkh/zkcH/86Hh3/Qx8c/0Ul
+        Iv84Hhr/Y05F/5+Xiv9MNiz/RyYg/0MoJP9AJSH/PiMf/z0iH/88IR7/OB0Z/zgdGf83HBn/OR4a/zwi
+        G/87Ihf/PSQa/0EoHf8/KBn/PicY/0ArG/9BLh7/Qysh/4R/df+Wmpv/ioJ//3ljUP96Xz3/b1co/3Zf
+        K/91Xyf/b1gn/2xRLP9fPyj/SzQd/0IzHf9BNCP/XFJH/3JmX/99bGD/U0Y3/zowI/9dOzP/PRsS/0Ak
+        F/87IxT/QDEh/2VXRf+AcV3/ppWC/2tYRv9QOij/cFNC/49rW/9xQDX/cT40/3E+NP9rPy3/Yz8q/2RC
+        NP9eRTv/Vkk+/3RlW/+YioD/mo+H/5WJhv+Zio7/jIeE/5WVkf+XmZ3/m5+i/5eXmP+flpr/n5eW/4qN
+        fv+WkYT/lYh8/11GN/9TNy3/b1FN/3xgXf9lS0f/Qygk/0gtKf9HKyz/SCws/0gsLP9BKCX/SS0p/1Yx
+        L/9RMiz/UDgt/1I5L/9VPDL/TTQq/0owJv9WPTP/Wkg9/0QxK/9OOjr/Vjw9/25ZWP+MiIT/l5WT/56U
+        lv+Mg4X/dGts/3Vnaf9xYWn/nIqY/6OaoP+cl5n/n5qb/21gaP9nTl3/fWZ0/0IeI/9DHiX/Qx0m/z0b
+        Iv86Gh//Oxsg/zsaIf87GiL/PBsh/zwcIP8+JCH/OyEd/1k8Of96a1//dmtb/0kvIf9MKyP/RSgm/0Un
+        Jf9CJSH/PiUd/z0jHP88Ixv/OR8Y/zkfGP85Hxj/OiEY/zwjGf8+JRz/QCcc/0EoG/9FLB//Ri4h/0ku
+        Iv8/HBb/ZVNP/46SjP+Pi5H/kXVw/29NL/93Xzz/blsx/31uPf98Zjf/c1kz/2lNL/93YUL/g25V/2JM
+        O/9MOS//QTQq/0k4LP9eUEP/WUw//1Y+NP99Z13/VjQs/00sIf9JNCP/SjMi/0szI/9iUUD/mIV0/3pW
+        SP+CXk//YTwu/3lFPf+AS0P/fkhB/3RIO/9vSjv/bUE2/35fVf+Uh3v/hnVm/4Z0Y/+RgXr/iHd2/498
+        gv+OgH3/jIB9/4uDiP+TjZD/ioB+/4B1dP+Gd3T/fWZc/3VZUP9jQjn/VDUo/1k5L/9SLyz/TzAt/3te
+        Wv95XFj/SSwq/0YqKv9FKSn/RCgo/0MpJv9TNTH/WjMx/1Q3Mv9WQDn/VDgy/1Y8Nf9mVkr/dGRY/4p6
+        bv+Kem7/a1dO/1tDPP9QMzD/j3h3/52Vlv+OiYv/kISG/15OUP9OPD//UEBC/005Pv9oT1f/iXx//4qC
+        gv+dlpb/b19j/1E3P/9WPUX/Px0k/0EgJv9AHiT/Ph0i/z0bIf8+GyH/PRsg/zsZH/89GiH/PRwh/zgj
+        H/86IBz/Wjk2/31pXf9QOy7/TzEl/1Y3Lv9MLSn/Rykk/0MmIP8/Jhz/PiUb/z0kGv8+JRv/OiEX/zwk
+        Gf88Ixn/PyYc/z0lG/9DJx7/Tigj/1MtKP9RLSf/RSYe/1EwLf+EcHH/iouD/5ado/+SjIn/WkYh/3li
+        Of+PfFr/nIxr/6SXaP+bjWH/oJBp/5mGYf9uWDz/SS0d/zUcEv8yIBT/LhwR/zspHv9YSj7/Sj0x/2RY
+        S/+NbGb/WjUt/1EvH/9TNCX/Vzst/1I1J/9OLyL/Xjow/3lbT/+UfHD/kop//5OMgf+MhXr/i4B2/416
+        cv+JbWb/jXVt/4d5bv93ZFb/cVpH/2xaRf9sWkn/b1pQ/3hhWv+Jcm7/hHN1/3hhYv+CYVv/dlhS/2FB
+        O/9XMyr/US8m/1Y0K/9dPDD/WTgv/1o3M/9WNTP/UTIv/3tbWP9kRUP/Si4u/0grK/9TODf/UDc0/00x
+        Lf9ULy3/TzUx/0o1Mf9UNjP/VTk0/1JDN/9QQTb/XU5C/2VTSP9UPTL/aktB/2lMRP+IcW3/nI+Q/52S
+        lv+PgIL/VT9C/19GSv9XREf/XERH/10+Qv9RPUD/VERH/5KChP+Jdnn/XUVI/1E5Pf9AHiT/QR8l/0Ig
+        Jv9AHiT/Phwi/z0bIf88GiH/Px0k/z4cI/87Gh//QSUi/0kpJf9OKCb/SSMf/0UlH/9MLyn/WT01/1g8
+        Mv9RNSv/RSkf/z8mHP8+JRv/PSQa/z4lHP89JBr/PiUb/z0kGv9AJx3/PiYb/0YpIv9NKCf/VS8u/2I9
+        O/9wXFf/kY2L/5GRk/+VmZr/oLCt/6axpv9fUi//dVsn/3VgN/+Ld1L/hnlE/3NkM/9uXTH/ZFMp/1NA
+        Hv9TOyT/QCoc/y8eFP8xHxT/Lh0R/y4hFP89LyP/MSMX/4JtZf9qS0H/TiYX/1cwIv9WMyf/VTIk/188
+        Mf9cOzb/XkI8/3JbVP+BcGz/kYB7/5mHg/+Ph4H/lpKM/5yQi/+gkoz/lod8/4NxYv96Y0//cF0+/3Je
+        Rf9uWEX/bE5B/39gV/9+ZWL/d1lW/2pDO/9pQzv/ZUI5/2JIPv+HbWP/ZktB/1I0J/9YNy7/Wjcz/1My
+        MP9QMS7/UjMw/1EzMf9OMjL/Sy8v/15DQ/9kUk3/aVVP/2lMSP9VPTj/XUdC/11BPf9hQj3/YUU7/1xA
+        Nv9XPDH/WD81/2FEOv9gPDT/Z0g9/2pVS/+UioT/opmZ/5OFiP9ZREf/XkZJ/1ZDR/9ZQkb/YUNI/1U9
+        Qf+BbG//pI6R/6eTlv+ml5n/jHt+/0AfJf9AHiX/Phwj/z4cIv8+HCL/Phwi/z0bIP89HSH/Px8j/z4e
+        If9EJSL/US8s/2A5N/9eMzL/SiAf/0gpJ/9UOzP/XEAw/1U5K/9HLB7/PSUa/z0lGv88JBn/QScd/0Mp
+        H/9CKB//Qige/0QrIf9GLyT/STQr/1lISP91ZWb/loaH/6eenv+frKv/oK2v/6iytf+Vo5r/ZlhI/1Mu
+        Ff99XTP/e2Aw/4FqNf+Lbjb/hWYy/39fL/9xXCz/bFkx/11FKP9NNSL/Oyca/zQgFf80IRf/MiQY/zAi
+        Fv8yJBj/Pjwv/352aP+Da1v/YUEy/1Y1KP9vTkH/bE1B/4NqZf+OeXP/jHt0/5iHhP+WhoT/loaG/46C
+        f/+HeHT/gmtp/4FsZ/+EdGn/jnxu/415Z/96YU//bFBC/2BBOf9nQTT/aUM2/2I/Of9ZOzL/Z0w9/25R
+        Qv9fQzb/Ujsw/1dANf94YVb/bE9B/2NCOP9UMS3/TCsq/00uK/9KKyj/Vjc1/19BQv9bPT7/TTEx/0o4
+        NP9ZRUH/alBN/3xnY/+UgHv/YkNA/146Nv9cODH/Ui4o/1UyLP9VNy7/VDMq/2M8Nf9YOy7/YVFC/56W
+        i/+RioX/dWdp/1hDR/9gR0z/WkZJ/1tFR/9eQkb/WkBF/2ZNUv9vVlr/a1ZZ/2dZWv+Cc3X/Ph8l/zwe
+        JP85GyH/Ohsd/z0dHv9AICH/QCIh/zogG/89Ih7/PiMf/0IjIP87HBn/fF9b/7KZlf9KIiD/Sikn/041
+        Lf9ZOSv/Ty8i/0krHv9BLB3/Pyka/z0oGf9DJx3/RSgf/0ksI/9IKyL/Si8m/005Lf9YSD//e3Rw/5SP
+        kf+joqj/r7q7/42Rjv91cGv/WFVD/0E3Hv9zVED/dFE2/2dKJf99WjH/hF4x/4VoM/+GajT/g2Yw/3hh
+        LP97Yzb/cFMz/1w+Iv9ONBr/PiQY/zcgG/8yJBj/MiQY/zYoHP8wJBX/MSIS/3FbTf93Y1T/ZFVF/39v
+        X/9dTT3/XlFB/3xvX/99b17/fGdY/4x6bv+QgXz/emth/1lGNf9kSjv/ZEk8/2hRRv9+bWH/iXtv/4hz
+        Zf96X1L/Xj0w/1s4K/9aNyr/Yz8y/25PQf9iSDr/Xz4w/3BNQf9vUkn/Vzox/00xKP9fQDP/a0pB/188
+        OP9dPDr/TzAt/0gpJv9QMC7/Vzc4/1IyM/9VNTb/bEtN/3ZWV/9gP0H/Uj06/3dkX/9iQT7/ZkM//1w/
+        N/+DZGL/hWVn/3NfVf+FcWb/ZVFG/3FgVf+UiHz/kYt+/4N+cv9TR0L/XEdJ/15DS/9dR0f/XEdG/1tG
+        Rf9bREj/W0RJ/1U+Q/9SPD//VkE//1Q+Pf89ISD/Ox8f/zwgIP88Hxz/PiAb/z8hHP8/Ih3/PyQg/z8k
+        IP8+Ix//RCUi/0AhHv9LLCr/VTo2/3piXv9qUk7/TjIq/08vIf9QMSP/Ti8i/0swIf9JLR//Rysd/0Yp
+        IP9GKSH/SCsi/0srIv9QMCf/VTkv/2BLQv9xaWX/kIqM/5ybn/+IlIX/QDon/0AlEv9WORn/WUIf/3BZ
+        RP+2o43/bls5/4ZtSf98YDf/dVkk/35iLP+BZS//fWgu/3hiL/90WTP/Z0sp/1U9Hf9IMR3/NSEW/zMl
+        Gf8wIhb/NScb/zcrHP86Kxv/NiAR/z0pGv94aVj/dmdX/0IyIv9FMyP/QjAg/2tYSP9bQC3/Ry4e/2pV
+        S/+Le2//fmtc/2FIOf9eQTX/aUtD/2hQRv9oVkv/eGNU/3JXSf9YNyr/Xjsu/1s4K/9YNSj/Y0Q2/2FH
+        Of9TMST/WTMo/1YzK/9jQTj/Z0Q8/1g4K/9QLyb/VDEu/2ZFQ/9gQj//Siso/1AxL/9TMzT/UzM0/08v
+        MP9RMTL/UzM0/1MzNP9RNTP/aU9L/2hPS/94YVn/YEs7/5R9c/+AaWT/jYR4/3JqXP+JgXT/mYyA/5qO
+        gf+dl4r/lI+B/3FoW/9VQj7/WUJD/1ZBQP9YQ0L/XUhH/15JSP9iTUz/XklI/1lEQ/9ZREP/VkFA/0Em
+        If9BJiH/QSci/z8jHP8+IRj/QiUb/0AjHP9AJSH/QSYi/0ElIf9EJSL/RCYi/0QlIf83Gxf/h3t0/5B+
+        ef9RMCr/UC0h/1QyJv9TMST/Ui4i/1IuIf9SLiL/TzAl/0stI/9JKiH/Tyoh/0wnH/9QMCj/Y0pD/3Rt
+        av+Wk5T/kI2R/1JGLf9LOBj/UzsZ/1c8Hf9WPB3/VzwY/2xZN/+SiGr/p5h3/5iFYf+KcDz/g2gy/39j
+        Lv98aCv/e2cv/3ZdMP9zWjH/XUgh/1I9I/9ALR3/MiMX/zQlGv80Jhv/MycY/zkqGf9CLB3/Pysc/08+
+        L/9yYlL/Tz0t/042J/9MNCb/UDgo/2VJMf9PNR//SzMj/2BOP/9/bFz/Vz4v/1Q1Kf9WNCv/UTQq/0sz
+        KP9cRjj/a1BB/1QzJv9aNyr/Wzkr/2ZBNf9cOy7/W0Ay/1EwI/9rRTv/VS4n/1IsJP9dNi7/YUA0/2FA
+        N/9XMzD/RSMi/0ssKf9VNTP/Ty8u/1ExMv9OLi//Ty8w/1Q0Nf9OLi//TS0v/1QxMf9MLSn/fmpm/5OF
+        e/97bVj/l4d3/2ZUSf9YQTf/WkM5/5N8cf+lk4j/n5OH/6Cajv+tqJn/l459/1RCOf9YQT3/Ujw7/1ZA
+        QP9bRUT/W0dC/2BNRv9bSEH/Uj46/1VAP/9XQkH/PyMj/z8jI/8/IyT/PyMd/z8iGP9AIxn/QyYf/0Mk
+        Iv9EJSL/RSYj/0cqIf9HKiL/Rikh/082LP9NMy3/UzEx/1cxM/9TLSz/Tigj/0wmHv9RKSH/VC0l/1Qs
+        Jf9PLCD/VTMp/04qJv9QKSP/WkQ8/4+Cff+jlZP/l5mW/52gnv+Zmpf/cWNN/0UxGP9UPSb/TzcY/1A4
+        Ff9XOx//TzkU/0o9EP+Of2T/o5OA/6ybcv+gi13/h249/3hjLP98ZzD/fWcx/3lnMf9rXSz/WUYi/1dB
+        J/9DLBr/OSEZ/zchI/8zJRr/OSoZ/0IsHv9KMiP/RzEi/084Kf9hSzz/TDUm/002J/9ONyf/bl5D/087
+        JP9XPC7/cldI/1g/Lv9RNyf/WT0s/1k7Kv9VNyf/VTcn/1Q3Jv9wUkH/bE09/1I0If9ZNyj/XTQs/2Y8
+        Nf9cNy//SCgf/00wJv90U0r/UzEo/1s5MP9dPTP/Xjw2/2xISP9rR0n/UCst/1UwMv9RLi//Sior/0kp
+        Kv9MLC3/UDAx/0wsLf9KKiz/SCgn/1Y5Nf9eR0P/kH53/5WFeP9+aF3/YUU8/19COf94W1L/g2Vb/4Ru
+        Z/9/bmj/h3dx/6CLhf+Mbmr/Vjg0/1c5Nv9RNTX/Uzg4/1g8PP9WQT3/WkdB/1pGQf9WQj3/WURA/1xI
+        Q/9AJCT/PyMj/z8jI/9CJSD/QyYc/z8jGf9BIx3/PyAd/0IjIP9DJCH/QyYe/0UoH/9JLCP/Vz80/2xK
+        Rf95XFv/l4uL/3p2cf95bGP/ZVNI/3RjWP+Lem//loV6/3trZ/+BcHL/iHV9/4l3ef+ampL/m6CV/5+Z
+        j/+PiH//cmxj/3x1av9pXUf/STYf/083I/9QNxj/YEgk/1U6IP9WPhz/Uj8T/0c1E/+Kel7/gXFJ/3dk
+        Nv+Dazr/g204/3xnMP+CbDb/fmsy/3hoMv9uWTD/YUgq/1k+KP9BJxv/OyEg/zgpHf87LBv/Qiwe/0kx
+        Iv9NNif/Ri8g/1U+L/9ONyj/SjMk/003J/93Y07/SDUj/3BeU/9lTkD/Uzgn/1Y8K/9bPy7/WTsq/1M1
+        JP9QMiH/Vjcm/1k7Kv92WEf/YkIv/1Y0JP9iQjn/WDQu/1MsJP9RMSn/QiYc/3xcU/94V07/aklA/00s
+        Iv9KJyL/TCgp/1YxNP9RLC7/Tyos/04qLP9JKSr/Ryco/0goKf9KKiv/SCgp/0YmJ/9ePz3/el5a/1U/
+        Ov9ZRT//YktF/1M1MP9aNzP/Xz83/1c3Lv9WNi3/YkU//2hOSv9hRkL/Wj05/1M0Mf9QMS7/TzAu/1I1
+        Nf9SNjb/WDw8/11HQ/9aRkH/V0M+/1xIQ/9cSEP/X0tG/0InJ/8+IiL/PiMj/0MnIv9EJx7/QyYd/0Ek
+        Hf9AIR//QCEe/0AhHv9DJh3/RCce/0gsIv9IMif/Xzcy/3xqZ/+Xp6L/pbSs/4mCeP9eTED/ZVlN/3lt
+        Yf97b2P/cWhc/21jXP+Jfnz/q6Gm/6Wop/+Ki3v/XUw5/1Q/Lf87JxX/ZlJA/5eJcv9fTDX/VT0o/0sz
+        FP9hSCX/SzEW/1c7HP9ZPxf/TDgO/21cMf95aT7/fGg7/4lwP/+Icjz/gm42/4FsNf+FcTf/gWwx/4Fo
+        O/9zVjP/Y0Uq/1w+Lf9DJR//NicZ/zssHP9BKx3/Ri4f/0o0Jf9KMyT/Tzgp/1pDNP9GLyH/XEQ2/3FW
+        SP9RPjL/pZ+Y/2VVSP9RNST/TzUk/1A1JP9QMSD/TjAf/1I0JP9UNiX/VTcn/1U3J/9mQC7/US8f/3Fe
+        U/+QeHD/TSUd/1AyKf9LLyX/US8m/1IxKP9MKyL/Ti4k/08tKP9NKCr/TSgr/1QuMP9QKiz/TSkq/0kp
+        Kv9IKCn/SCgp/0kpKv9JKSr/VTU2/2hIR/9XOjb/Qy0o/0gzL/9NLi7/WjY2/182Nv9dNzD/WzUt/144
+        L/9qQz//dE1M/2dAPv9cODb/Wjs4/04vLP9MLSv/TTAw/1U5Ov9TNzj/VD47/1tHQv9ZRkH/XElE/15L
+        Rv9hTUj/QyUj/0IlI/9FJyb/RSkh/0MoG/9DKBz/QyYc/0EkHf9AIxz/QCIc/0MmHf9GKSD/RSgf/1Q+
+        M/98WFv/bmdo/5iooP+BgXj/QS8o/z4iGf88JBf/PCQX/zwkF/9BLh3/RC8f/0sxI/9TOzT/TTsz/1I8
+        LP9QNSL/TTUf/001H/9XQSr/aVtE/0IwGf9fRzL/Ri4S/2JMLP9oUDP/SDAS/045Ff9MOhP/UkIZ/4l5
+        Vf+hj2T/kXtI/5B5RP+Sekb/iXE+/4lzPP+Ecjf/gWs7/35mO/9vVTH/Ykct/1w+L/8/KiD/Pywf/0Es
+        HP9FLh7/TDUm/002J/9aQjP/ZU0+/0UuG/9nUDv/c1dG/3dlWP/Dw7//sqSZ/1g8Kv9KMSD/TTEg/00v
+        Hv9RMyL/UzUk/1U3JP9VNyT/XkAt/2tHM/9ZOCX/Xkc6/7Sekv9cNSz/Vism/1YyLv9TMyr/UTAn/08u
+        Jf9PLST/Tioj/2E8N/9SMS7/RSgm/0gpLP9EJSn/RiYn/0cmJ/9HJyj/SS0t/00xMf9KLi7/Ryko/0Um
+        Jf9JLSz/UTQ0/1YyNP9bNDj/WzM2/1k1Lf9YNSz/WTUt/1s2L/9bNTH/Xzg3/2A7O/9bPTn/Ti8s/0wt
+        Kv9QNTL/XEA+/1k+O/9WPDb/W0I6/2NJQv9jSkL/ZkxF/2dNRv9HKCT/SCkl/0kqJ/9HKyH/QygZ/0En
+        GP9BJRn/QCMa/0AjGv9AIxn/QyYd/0QnHv9EJx7/Ry8j/4Ztcf+cmpz/jpOH/z4vIv9KMSf/Ty4k/0cr
+        Hf9EKRr/Risd/0QtHv9ILyH/US8i/04wHv9ONB7/TzUh/1Y+Kv9OOiP/TTgi/0g1Hv9oWkP/XUoz/0cv
+        Gv9QOCD/Xkgu/4JrUv9lUTX/RTQW/0U0Ff9JOBr/iHhZ/4JwSP+Gcj7/ln9M/5uEUv+UfUv/inZB/419
+        Rf+FckL/f2o8/3tnOv9uVjP/ZUkx/11DM/9ONif/VD0t/002Jv9MNSb/WEEy/1tFN/9uWUz/bFlG/2JQ
+        OP9ROCf/ZlNH/5mRi/+ajX//Zk88/0ouHf9RMiH/UDIh/1Q2Jf9TNST/VDci/1E0Hv9yVUD/hWVO/1o5
+        JP9cPjD/l4Bx/4NiVv9pODX/Xjc1/1k4L/9UMyr/UzIp/1QvJ/9ULib/VC4l/0kqI/9EKib/Ryot/0Ql
+        K/9GJif/QyMk/0YnJ/9HKir/TTEx/0wwMP9OLzD/VDQ1/1AvMf9XNTf/WTQ2/1MuMP9RLS7/VTQs/1o6
+        Mf9aOTH/WDgu/1IxKv9VMTH/WDU2/1Y3NP9OLyz/TC0q/1Y7Nv9fRED/XEE9/15BOf9gQjj/Y0U8/2VI
+        Pv9oSkH/a01E/0orKP9JKyj/SSon/0crIf9FKxz/QicZ/0ElGf9AIxr/PyEZ/z4gGP8/Ihr/QiYd/0cq
+        If9DJRT/X1JN/5memf98eGj/Ri0b/1UvH/9WKx3/RCkc/0QpHP9FKhz/Pyob/0IpG/9RMCT/VTol/1A6
+        H/9QOR//UTsh/045JP9OOST/RDAb/1hLNP9hTzj/VT0n/2lPPP9ONCL/Ry4a/2lSPf9nUj3/STUd/11J
+        MP+FdVf/dmU7/4l0QP+Sgk7/lohU/5eIVf+UhE7/koFI/497S/+Ic0T/gm87/39pQP93XED/dVw8/2xR
+        N/9nRjz/Wj80/1tFNf9fRzj/cFpN/5qIgv97a17/WEk5/2NLRv+QeXD/gWtc/4yBbv+ilIH/VS8f/1w0
+        Jf9SNSP/UzQj/1I0Iv9TNSH/UTQf/1I1IP+GZU//jm5a/10/Mv+TgHL/jnRn/3NKRv9ZOjf/WTgw/1U0
+        K/9QLyX/US0l/1UvKP9RLCT/TSok/0spJv9MJiz/SyUs/0UlJv9DIyX/Ryco/04qK/9SLS//WzY4/18+
+        P/9aOjr/TCss/04sLf9RLC7/Tikr/00pKv9RMCj/VTQr/1c2Lf9UNCr/UjAq/1ItLv9PKy3/Ti8s/00u
+        K/9NLyz/TjIv/1Q5Nf9ZPzz/XkE6/19COP9fQzn/YEM6/2BDOv9iRTz/Siso/0coJf9EJSL/Rigf/0cq
+        HP9HKhz/RCca/0AkGf8/Ixj/PiIX/0EkGP9CJRn/RCYa/z0gD/9yZVv/mZWK/0EzJP9LMB3/WDMi/1cv
+        Hv9KLxv/SS4c/0ksHf9EKxz/RSwc/0wtH/9RNyH/UTsf/085Hv9SPCH/Tzoh/1E8Iv9JNBv/WUgz/3Je
+        Sf9DLBf/Xkc3/3liU/9ONCX/WD8u/2ZSPP9SPSf/gWxV/3NhQf98akL/fWo6/4+ATP+XiFX/n5Bd/5+P
+        Wv+aiFL/lYJR/5J+Tf+PfEn/inVI/4NsRf94YTb/eF48/2pJOf9WOi3/Zk8//2tUR/+Gcmj/mY2D/5SJ
+        fP+LgHD/lIF7/6KJiP9qTUL/WEo2/62gjv9dOyz/WzUn/1Y4J/9VNyb/Vjgn/1c5Jf9VOCT/Vzom/2A9
+        J/9tSzX/bU8+/454Zv9xW0n/ZEE4/4FgWf9rST7/cE5G/2pLRP9gPTP/Uy4m/1UwKv9RKyf/Tigl/00n
+        Kf9LJyr/SSgn/0cmJv9IJyb/TCYo/08pK/9SKy3/VTM1/0wuMP9GKiz/Ryss/0wrLf9OKi3/TSgq/08u
+        Jv9RMCf/UC8m/0ssIf9NLiX/Ti4o/1EyLf9RMy7/TzEr/0stJ/9NNCv/TDIq/00vKP9TNi7/WDsz/1w/
+        N/9cPzb/X0E2/10/Nf9IKSb/Rygl/0UnJP9HKB7/SCga/0koG/9FJxn/PyUW/0AlF/9AJRb/QyYU/0Yo
+        Fv9HKRf/QSkb/002Kf+hiHr/emRW/0o1JP9LMCD/UTIf/1E2Gv9NMBn/SSsa/0csG/9JLx7/SS8e/0sy
+        Hv9NNSD/TjYh/1E5I/9SOyD/UDoe/002G/9NNiT/ZU8+/0gyIP8+LBz/oY+A/2lPQf9AJxX/UDwk/1lF
+        Lf9LNx//eGNF/4VyTv+LelH/jHlI/5mFUv+lkl//q5hl/6CNW/+di1f/moZU/5SAUv+Pe0z/iHRE/4Rx
+        QP97ZTz/d1xA/21SPf9iSjn/bVhM/56Og/+fl4b/nJWD/5qSgP+dkoH/e2Zl/0oyKv86Jxb/b1xN/1pC
+        NP9XOyz/Wjwr/1c5KP9UNiX/VDUl/1Y4J/9aPCv/Z0Eu/2pFMP9xUTv/cVc//4BpUf9zUUP/gFxR/5B4
+        af9mRj3/YDU0/3RORP9aNi3/VjAt/1cuLv9WLiz/Ty0q/0stKf9OKyj/Tiso/04rKP9MJyn/Tyos/1Es
+        Lv9RLzD/TjEw/0YuLP9DLiz/RSsq/0sqKv9QKir/Ti0l/1IxKP9SMCj/TjAk/040Jf9MMSL/SzAj/1Az
+        Kv9OMSj/TjIo/0gzJP9MMiP/UzEk/0ssI/9KLSX/TzIq/1o7Mf9iQTT/YkI1/0gqJ/9IKSb/SCkn/0gp
+        IP9IKBr/SCgb/0UoGv9CJxn/QCUX/0AlFv9DJRX/RigX/0osG/9JLhv/QicV/1Q5Jv+YgnD/cFtK/1E1
+        JP9TNCD/UTcb/04xG/9LLRz/SC0c/0owH/9JLh7/STAb/0szHP9NNR//Tzgi/082IP9PNiD/SzMe/1A6
+        J/9lTz3/XUc0/z0rG/9+a1z/b1VH/0QpGv9JMyH/RC4c/0kyIf9UPSX/WEMk/4h1Uf+UgVH/k4BM/5+M
+        Wv+rmGX/qJVi/6GOW/+ijlz/mYVW/5J+T/+Kdkf/iXdB/4JuP/94Xj7/eF9F/3VgSf9nVEL/m4x9/6GZ
+        iP+clIL/mJCA/6GWhv9xYlH/Y04+/21aS/+Zhnf/XUM1/1I0Jf9ZOyr/WDop/1U3Jv9RMSX/UDAl/1g4
+        LP9oQTP/bEU2/2lHOP+Jb1v/cVtD/2xJO/9uTUL/aFtL/51+dv9/S0v/Zz41/2E+Nf9WLy3/WjIx/1oy
+        MP9SMC7/Ti8s/1EuK/9RLiv/UC0q/04pK/9RLC7/Ui0w/1QvLf9RLyv/Sy4p/0cuKf9GLSf/Sywn/00o
+        JP9NLCP/Ti4k/1AvJv9QMif/UDUn/04zJf9LLyP/UTQr/0wvJv9NMSf/RTAh/080Jv9QLyL/TTAi/0sw
+        Iv9LMCL/WTwu/2NCNf9iQjX/Ti8r/0wsKP9IKSb/Sioh/0srHf9IKBv/SCoc/0ctHv9GLB3/Rywd/0ks
+        G/9LLRz/TTAf/0wuGf9OLxn/SSoT/0UrGP90YE//XUIw/2BALf9ONBj/UTQe/00uHf9JLh3/SjEf/0gu
+        Hf9GLxr/SjMd/040H/9RNiL/TTMi/00zIv9OMyL/SDEf/11HNf9nUD//RTMi/0w5Kv9eRDb/VTos/1Y/
+        Mf9SOy3/Tjcp/1Y9Kf9QOB//b1k6/4x5Sv+Kd0T/l4RR/6eUYf+vnGn/o5Fe/6GPXf+fi1z/mYVV/5N/
+        UP+LekD/h3VA/35nQf95YkL/dWFD/2FQN/+Dd2T/qaGR/6qikf+flYX/npF//6WZef+Ld2D/dWFT/4Fu
+        Xf+Ue2z/cFND/2FDMv9YOin/Vzkp/1IyKf9cOjP/Wjgx/2I5MP9hOS//Xjsx/1g8K/+ZgWr/kG5g/1o1
+        Kf9ZOyz/m3px/6aDgP90UUb/ck1E/1IrKP9bMjD/WjIw/1MwLv9PMC3/US4q/1AtKv9QLSr/Tioq/1Et
+        Lv9RLC7/VC0q/1MvJv9OLyb/Si8l/0QuI/9OMSf/UzEo/00tI/9NLSP/UC8m/1E0KP9PMyX/TTIk/0ww
+        JP9NMSf/TTAn/0suJf9GMSL/UDYn/1c1KP9VOij/UTgk/1Q7J/9dQTD/YEA0/19AMv9TMiX/UzEl/1Au
+        Iv9MLR7/TC4d/0osG/9MMB//SjAf/0owIP9KMB//SDIg/0UwHv9IMyH/UjYk/04vHv9MLh3/SysZ/1Y/
+        Kv9sW0T/Xj8q/1E0Hv9RNB//TC8a/0gvGv9HMBr/Ri4Z/0IwGP9HNB3/TCsd/1IwJf9NOSr/Uzkr/1o7
+        Lf9OLiD/Y0c5/5N6bP9LMSP/TTMk/080J/9VPir/dmZJ/2pXQf9ZRjL/WUYv/1c8Lf9qTzL/mIFY/5R/
+        Uv+NeUj/noxZ/5+RXf+elmH/m5Nd/6SSWv+dilf/moVY/5F9Rv+PeUT/hm5B/4RqO/90XjP/cGRI/5+b
+        i/+uqJn/k4F0/2FEN/9iSC7/a1I1/2tRNf9WPyT/YEsw/39pTv+NdVv/fF5K/2lJO/9TNCn/VTws/2dK
+        Ov9SMCD/VjQn/1c3Kv9YOCv/Wjkr/189K/+MalT/iGhP/3RWQP+kinj/moN3/1s+Mf9/XE//Yjku/1oz
+        J/9SLiT/VzAt/1QuLf9RLyf/US8n/1EwJ/9SMin/UjAr/1EsLv9SLyv/Ti0j/00rIv9LLSP/RC4j/0s0
+        Kf9ONiv/Ti8j/08uIv9RMST/VjMm/1MwI/9OMST/UDYm/1A3Jf9PMyj/Sy4n/0YwIv9MMSP/XDot/1o7
+        K/9ZOyr/WDsp/1w/MP9aPzH/WT0v/2pTRP9bQzT/WEEy/1s/L/9PMB//TC4d/0wwH/9JLx7/SS8e/0ow
+        H/9MMyH/TDMi/0syIP9MLx7/TS8e/0suHf9RMB7/Tjch/4BwWv9QMRz/UzUh/1AzHv9OMRz/TC8a/0su
+        Gf9ILBf/TCsV/1U4I/9xY1P/fndp/3ZuXf+Uhnb/Xkk6/1hFNv9LNCb/Vjst/1Y7Lf9iRzn/SS4h/041
+        Iv9UPST/Ujgn/1Y8Lf9SPiz/Wz42/1w+J/+AaUH/q5Zq/5SAUP+WhVL/pplk/5uUYP+fmWP/p5Zd/6SR
+        Xv+ch1r/nIdR/5J9R/+Pd0r/jHFA/3ZgNP9+c1f/r6ua/7Cnk/9WPy7/Ty4e/1o9Jv9YPCX/XUAp/2dM
+        Mv9pTjL/cFU6/2hOMv9dQij/YUQv/14/Mf9cPy7/Wzoq/3NLPP9cOiz/Wzwv/1k5LP9ePjD/X0Au/1Az
+        G/95YEX/u6mQ/5+HdP9jQzf/Sise/1c0J/9oPzP/cUs8/2tKOv9ZNCv/VjAr/1MyKf9SMSj/UjEn/1U0
+        Kv9TMSz/UCwt/1EvK/9QMCb/UC8m/08vJv9HKyH/Vjox/1xANv9PLyL/UDAj/04uIf9TLyP/VDEk/1Az
+        Jf9YPi7/WD8s/1A0Kf9QMyz/Uj0u/1xCNP9WNSj/UzQk/1M1JP9TNST/VTgo/1xBNP9eQzX/t62d/6uh
+        kf+PhXX/ZU49/1ExIP9RMyL/TzIh/0wyIf9KMB//TjQj/1EyIf9RMCD/UTEg/00uHv9MLh3/TzIh/0op
+        F/9mTzn/jHxl/00tGf9WOCP/UDMe/1AzHv9RMBv/TywY/0onFP9JKhT/SjUf/2RbSv+urJ3/sbal/3Z0
+        Y/+Ffm7/sLCe/1tNPf9SMyb/UDIk/5B1Z/9iRzr/TTAh/1Y2Jf9VMyn/UzEp/1M8MP9TNTL/Vzcm/2VN
+        Jv+TflL/n4pa/5mIVf+uoW3/sqx3/6egav+unGT/qpdk/6CMXv+ahU//l4FM/493S/+LcED/lH5S/6+j
+        iP+uqpj/joFn/1Y8Jf9XMx7/UjMi/1c5KP9XOSj/X0Ap/2VFKv9rSjD/fWBC/3ZePP9vVDn/YUMv/5Bu
+        Xv+Wb2D/bD4w/2A9MP9dPjH/VTUo/19CM/9gSTX/g2xT/5+Ocv+AeF7/UDgl/1guJP9XNCj/VTMm/1ct
+        Iv9ZNCH/Wjsk/1c1Jv9fPDL/WDcu/1U0K/9PLyX/UC8l/1c1MP9SLS7/WDUy/1o5L/9OLST/UC8m/08r
+        I/9RLiX/akg//0wsH/9RMST/UDAj/1MvI/9TLyL/UDMm/1M5Kf9VPCn/Uzct/1I2Lv9QOiz/XEI0/1Qz
+        Jv9SMyP/UDMi/1AyIf9hRDT/gmha/4twYv9zY0z/fWhV/21RRf9UNyr/UzUn/04xI/9ONCT/SzQi/00w
+        H/9TMiL/TzAg/04vHv9OLx7/TjAf/00vHv9MLh3/Sy4b/083If+Fb1r/ZUo1/1MzGf9WNh3/VTUc/04x
+        F/9MMBb/Sy4U/0UtE/9FLxn/Ry8h/1E8Lf9RSDD/dnJf/3V0Zf9fUUH/blpM/2FJPf9ZQTP/sKKS/4l3
+        aP9WOCn/Zks6/1E0Jf9OMyX/SDQr/1M4Lv9WMyP/Vz0j/4d0Tv+cjVn/qZxi/6OVX/+9sXv/vbJ4/6me
+        Xv+omGb/t6J+/72wh/+mm2j/moxS/5qMXP+9sYv/r6WC/6KYdv+MfFb/Z00u/2pILv9SNh3/UjQj/1Mx
+        K/9UMyX/Vzoi/10+Kf9gRCr/YUcq/21SN/9bQSb/gGtQ/6aKdf93VET/UjIi/1I0JP9XOCj/TDEe/1pD
+        Lf94Wkj/aUg8/0YpI/9OMCP/Xz8r/1w8KP9RLx//VC8k/1MwJf9RMST/UC8k/1QyKP9TMin/Wzox/2hH
+        Pv9ePjH/VzYu/1QwLv9cOjX/Wzow/08uJf9QLib/Tywl/0wrH/+PcGD/UjIl/0srHv9QMCP/UDIl/08y
+        JP9LMCL/TzUm/1I3KP9XOy7/Uzgs/1A2KP9PNCb/UTQm/1M1Jf9TNST/UTMi/1EzI/9WOSj/UTQk/3pn
+        Tv9UOif/WTUr/1Q3K/9ROCr/TzUn/0w3J/9PPSr/UTgm/1EzIv9OMB//TjAf/04wH/9OMR//TS8e/0st
+        HP9PMyD/RS0X/2dPOv+SeWL/aEsw/1k8Iv9SNRr/TTIX/0sxFv9KMBT/Ri0T/0cuGf9JLiD/Sy4f/1Ay
+        Gv9PMyL/SzIn/082KP9ROCr/TzYq/21WSf+gmIf/Tj8v/1o7LP+njnz/W0Iw/0wzIv9ONSz/UDUp/3FT
+        Qv9SOCX/c18//5eIVv+pnWP/qp1l/6WYYP+ypmv/raRk/6OVX/+unXL/urOF/8G7iP+kmF//k4lb/7Kq
+        hf+9tI3/saZ9/5mJW/91XTf/dFY3/2VLK/9cQCj/VjUs/1c4Kv9ZPSf/Wj0p/2JGLv9hRiv/bFA2/3th
+        Rf94aEr/qJJ5/45uXv9QMSH/VDYl/1IzIv9UOib/eWJL/189Lv9LJR3/VDEq/1IyJv9SNCP/eltD/108
+        KP9YNif/US4l/1EwKP9RMCf/UjEo/1EwJ/9OLST/WDct/2RFN/9cOzH/WDUx/1UzLf9VNCv/VDMq/1Ix
+        Kf9PLSb/SSoc/2dJN/9aOiz/SCgb/0wsH/9LLiD/TTIk/04zJf9KLyH/TTIk/080Jv9SNyj/TzQm/1I3
+        Kf9PNCb/TzEh/1AyIf9RMyL/TzEg/08wH/9TNSP/bV1D/1Q8Kf9XNCn/Ujos/3FfUP9/bF3/gXNi/2db
+        SP9XRDL/Ujko/1I1JP9QMiH/UDIh/1AyIf9PMSD/TzAg/080If9ONyD/STEc/z8nEP9wWkD/cVtA/0cx
+        Ff9ONRr/TTIX/0ovE/9GLRL/RCwW/0QpG/9CKBn/QCsS/0wtHP9LJBv/Ti0h/1EyJP9JKRz/aE5A/6GY
+        h/9KOiv/SSoc/1k/L/90Wkn/VDgp/1c0Lf9bPjL/r5uJ/3BYR/9UPSL/loVZ/6qdZv+rnmb/raBp/62g
+        Z/+lmlz/qZ5h/6ecYP+al1r/ubN7/5yLXP+omnL/w7uW/720j/+9tYv/mIpX/4FrQP+EZ0H/dl85/21U
+        Nv9fQDH/WDkp/15BK/9eQSv/YkYt/2JHK/9gRSn/kXdb/3ZmSP99Zk7/XTwr/1EzIv9ZOyr/UDIh/3NY
+        RP+Ba1P/UzEj/1YxJv9RMyD/UjMl/0knIP92WD//fmBE/2RDLv9NLB//UjEp/1EvJ/9XNi3/VDIq/1Av
+        J/9OLST/TCwf/1QzKv9VMi//VjQv/1QzKf9RMCf/US8n/1EvKP9LKx7/X0Ev/08vIf9KKR3/Siod/0cq
+        HP9EKhz/TDEj/0guH/9ILR7/SC4f/0gtH/9FKhz/SS4g/00yJP9NMB//TzAf/00vHv9QMiD/UzUk/1c5
+        KP9oUDr/W0Aw/1s7Mv9QNyr/V0U1/3RjVP+0qJb/oJR+/4Z2Yf9iTTn/UDMg/1AyIP9QMiD/UDMg/1Az
+        IP9PMh//UjUh/1A0H/9UOSL/Ujkf/1ZBJv+Ld1z/UDwf/1A0Gf9QMxn/SjAY/0kxHP9GLh3/Risf/0Es
+        Hf83MBf/PSsb/21USv9FLB7/TjEj/08sH/9uUUX/1s2+/5WEdP9MLhz/Ujok/1lAK/9aQSz/VTUo/15D
+        Nf99alz/Tjcp/084IP92YT3/rJpo/6qaYf+cjVH/w7Z9/8G1h/+vo2v/q6Bf/6KgY/+2sn//tap//8O4
+        j/+3rYT/zb+a/7epgP+Jfkj/iHVG/4pwSP+CaUL/fGFB/29QO/9gQi3/XUAq/2NDNf9iRTP/XEMr/1s+
+        J/91V0D/j3le/1tBLP9kRDX/WToq/1g6Kf9RMiL/Ykc0/1g+Kf9PLx//VjQl/1E0H/9RMiP/Ty4n/1I0
+        Hv9hRCv/WDcm/04tIP9NLSH/Sise/1AwJP9XNyr/UTAm/1QzKv9SMyT/UTEl/1EuKf9RLyn/Ty4l/1Av
+        Jv9UMyr/UTAm/0coG/9aOyv/XT8w/0UmGf9JKh//SCof/0grH/9GKBz/RCcb/0YqHv9ILCH/Rysf/0cr
+        H/9EKBz/Risf/0gsHf9JLBz/Sy4e/08xIv9VNib/Wzwt/2pXQv9qWkr/lYl//5+Uhv9bSjr/VTgr/1o9
+        Lf9XRC3/Uz8o/005Iv9PMx3/TzIc/1AzHv9TNSD/Vjgj/1Q2If9YOSb/Wzko/1k5If9cQCT/SjQY/4l0
+        WP93Ykb/UDIW/1g5If9PNSL/SzIl/0kxJP9IMCP/RS8g/0AvG/81IxX/aFdO/3NnWP9DLyD/XkEz/3Nh
+        Vv+8v7D/mZWC/0o1Hf9fSSz/XUgr/19JLf9ZRSz/Yk05/29WSv9QOiz/VkAp/2FIKP+bhFf/qJde/5mI
+        Sv+bjlD/vriK/9fPof++sYT/vbeM/8XCl//Ny5//xL6O/8K1hv/BqoT/nIVe/4d/Sv+KeEv/i3FL/4hs
+        Sf+BZUT/fl9E/25RNf9hRS3/Wzkx/1k6Mv9ZQS//XDwt/1g0JP9fQSv/YEEw/2dGO/9iRDT/UzUk/1M1
+        JP9OLx7/Ti8e/1I0I/9RMyH/UTMi/08xHv9QMh//UjQi/0wuH/9KKCL/TS4h/0suG/9GKBf/SSsZ/1Ez
+        IP9NLSH/UC8n/1EzIv9RMiL/UTAo/08tJv9MKyL/Ty4l/1ExJv9PLyL/WDgr/2JCNf9YOSb/Sioc/04r
+        Jf9LKSL/Sikg/0spIf9IKSD/RCce/0UoIP9GKSD/Rikg/0UoIP9DJh3/Qygc/0ctH/9JLiH/TTAi/1Ew
+        JP9SMiX/ua+Z/7avnv/Gwbb/3drM/6ufj/9ePjH/VzMj/1M5I/9QNR//TjId/04wG/9PMh3/UjUg/1Uy
+        Hv9bNiL/XDkk/104Kf9WMSf/US0c/00tFv9ROh7/alQ4/3FcQP9TNRn/Vjcf/1I5Jv9MNiP/SjUf/0o1
+        IP9MNyL/TTcj/0w0J/9ONCz/WUc4/3tsXP+lmon/ycW5/7nCs/+tsZ3/Z1Y//2ZPMv9mUDT/Y00w/2JQ
+        Mf98aU7/noh0/21ZSf9kTjf/kXhW/31oPP+nmmf/sqdw/6mgYf+imlj/w7+O/9DPsP/T0av/1dOm/8vJ
+        nf+moW3/nZNd/56LXf+hjWD/l45a/459T/+Lckv/i3JG/4huRf+CZkT/eWA8/2pRMf9iQzP/VDYq/0w0
+        I/9ZOir/Xjsq/1c6I/9TNSP/TS0i/04vIP9VNyX/VTgn/1U3Jv9UNib/UzUl/1I1I/9QNRz/YkYt/1Y7
+        Iv9KLRf/VDUl/08tJv9NLSH/TC4c/0osG/9KLBr/TC4b/04uIv9QLif/UTMi/1EyI/9QLyf/UC4n/1Av
+        Jf9OLST/Sysh/08vIv9WNyr/UjIk/1QvHf9VLiL/Uykk/04qIv9KKSD/TCsi/0orIv9GKiD/Rikg/0Yp
+        IP9GKSD/RSgf/0QnHv9FKRz/Risd/0YsHf9QMyX/VTUo/1Q0J/9uUj//bVRF/2RMRP9gSTz/eGJS/3xn
+        Wv9ZQTH/UzUg/1I0IP9QMh7/TjEd/0wwHP9QNCD/WzYk/1syIP9oQS//ZEEz/45waf+SdWv/moJx/2ZX
+        Ov9kTzT/a1E2/1w/JP9fQSr/VTYk/1A3I/9LNx//UDoj/1Y+KP9aPi3/XD8z/2hJQP9gRzn/mpKA/4qK
+        d/92alv/iXxv/66fjv+NdV3/alY6/2NOM/9mUTX/a1k4/499YP9vXET/ZVA+/19JMv9rUjT/j35X/8S/
+        j/+xqHL/ppxi/6GXYv/MyZf/xMma/8PBkP+1sID/wLmQ/7y3hf+poGj/sJ5t/6mWZv+clF7/m4pb/5Z9
+        VP+MdUj/h29D/4NnQf98Yzv/eWI9/3JVPf9iSDL/Ujoj/1MzIf9dOCn/XD4n/1k6J/9XNin/UzUl/1Q3
+        Jv9WNyb/VTYl/1c5Jv9TNSH/TzIb/0wwFf9pTTP/hmpR/1Y3KP9HJxr/TSwj/0wsH/9MLh3/Ti8f/0wu
+        HP9LLhv/Ti4i/1AvJ/9RMiH/UDIi/1AvJ/9QLif/Ty4l/00sI/9PLiT/Ti4i/0srH/9NLCD/Uy0c/2lA
+        NP9mOzP/SyYg/0cnIP9LKyH/SCog/0UoIP9GKSH/Rikh/0YpIf9EKCD/QyYf/0YrH/9GKh3/Rywf/0os
+        IP9TMyb/Vjcq/1lALP9aPjD/WDoz/1E5Kf9JNSL/Uz0z/3NbUP9mTDv/TDMi/00zIv9SMSH/UjAg/1Uz
+        I/9bLyP/ZUM2/7CfkP+Rinj/tLal/7/Euv++x7v/kpN5/1I8Jv9pQC3/X0Uq/2FFLP9cMCH/TzAh/004
+        Jv9UNib/XTwt/108MP9bOy7/XTsu/19AL/97c1//f3pm/2pgRP9wYk//mYt4/52SdP+Ke2L/hHZd/3Vm
+        Tf9vV0H/gGxV/4p8Zf9uW0X/cl5H/4VvWv+vpof/ubuM/5mLUv+ol13/tLKF/7Wrd/+zo2f/tK1o/7ix
+        dv+3qID/ycCW/7mzgv+xo3X/saJx/6iiZ/+llWL/o41g/5WDWv+MeE//h2xE/4JoQv94YT3/d147/3Jd
+        NP9qUyr/ZEIq/2A2K/9dPSP/XD0m/1w6Kf9QNiX/TjQj/1Y0Jf9WNCH/cFI2/3FUM/93Wzf/cFQw/00w
+        Ev9VNh//imtZ/15DJ/9OMB3/TCwg/0wuHP9MLh3/TC4c/04wHf9PLyP/Tiwl/04vHv9OLx//UC8n/04t
+        Jf9OLST/Ti0k/04tJP9OLST/Ti0k/00sI/9MLCD/YEAz/2dHOv9eQjT/TjIo/0QmIP9IKSb/RSYk/0Yn
+        JP9GJyT/RCgk/0MoJP9CJyP/RSkh/0otJP9ILCP/SCoh/1EwKP9WNS3/WkEt/1g+L/9ZPDX/Uzgp/1E3
+        Jf9PMin/TzMo/2VLOv9XPSz/UDUk/1oyI/9cMyT/aD8w/10rIP+Nf2//0t/L/5ujjf+mq5T/tL+u/6qy
+        ov9wY0z/Uzkk/2E9Kf9cPyX/SzAX/3lcTf9uV0f/QSsZ/1AyIf9ZOCn/Wjot/3dYS/9gPzL/Vzsr/8Sz
+        oP+wqpb/fX9i/9zcx//Awaz/iolr/52Rfv+XjXn/i35r/3xlT/98Z1H/lYZv/5iKc/+voYn/uquV/7Sm
+        iv+LfVX/loVT/7Wmbf+2rXn/joRQ/7ive/+1sHb/u7iA/8G6i/+1tIH/s7N8/7OseP+3rHf/sKpv/7Gh
+        bv+ok2b/oJNp/5qLYf+Re1L/i3NN/4FpRf9yWjb/dV45/3VdOP9uTzH/a0Us/1w9Iv9ZOSP/Xzws/1M5
+        KP9RNyb/VTMj/1UyIf9VNR//Wzwi/3FVMv+hiln/iG9E/0swDP9rVyT/p5dd/1A2GP9OLyD/TjAe/0st
+        Hf9LLRv/SiwZ/04vI/9OLCX/TzEg/08xIf9QLyf/Ty4m/08uJf9NLCP/Ty4l/08uJf9PLiT/Ti0k/1Av
+        J/9QLyf/RyQf/1k/Kv9+ZVD/TSwv/0QiKP9GJyP/Rygl/0coJf9CJiL/RCkl/0csKP9HKyP/SCsi/0cr
+        If9JKiP/Sygl/0wpJv9dRDD/XEAy/1k7NP9ZOyz/VTUk/1c0LP9VNSv/TzYk/1I4J/9PNST/WUIx/3dh
+        T/9uV0X/mH5v/8TUv/+xyLP/dG5Y/2NQN/9+cWD/dmlZ/1o/Kv9bPSj/XT0o/109I/9NMxr/YE48/6CP
+        fv9AKhj/UTQj/1ExIv9YOCv/WTks/2VHOv91XUz/k3dm/7exnf9qaUz/lod0/5iLd/+AeF7/lo+A/5CJ
+        ef+Ti3r/k3tm/5aBav+Rgmv/jYJq/5+Vff+zqpL/f2xT/2VHKP+Xg1f/xbZ+/7eobP+nnWn/ubWI/7y6
+        iv/Dwo3/xsaO/73Dh/+zun3/srJ3/7q1e/+4sXb/tKRx/7Sfcv+clWr/oJds/52NY/+Ufln/h29M/39n
+        Q/96Y0D/c1o4/3ZYNP94VjH/Zkcr/1o6JP9WMyP/Ujgn/1E4Jv9VMyL/VDAg/1U0I/9VNR//UjQX/1Y6
+        Fv9gQiT/Vzgh/1A3FP+Vg1D/cFox/0wvGv9TNSX/UTMi/08xIP9fQS//Ti4i/04sJf9NLx7/TS8f/00r
+        JP9PLib/UC8m/08uJf9SMSj/UC8m/1AvJv9QLyb/UC0q/1AtKv9UMC7/TS8l/1tANP96XFb/aUpH/1g5
+        Nv9HKCX/Siwp/0gsKP9ILSn/SS4q/0gsJP9HKiH/Riog/0srJv9MJyn/Syco/19JOf9aRDX/Vj8y/1k9
+        L/9YOiz/UzUo/1Y3Kv9WNij/VTQm/1U1J/9aRjP/o5mG/8fFsf+qr5n/vciy/7W6pf+bj3r/aFI6/1A7
+        Jv9YQiz/XUEm/11CJ/9eQif/YUYx/1E3JP9MNCL/hHlo/1E8LP9aMyb/XjIn/1guIv9WLx7/fF9N/6CL
+        f/+Gb17/v7ab/7KmjP+Fc2H/nY98/8rKtv+1uar/s62f/6GWiP+Ninn/kYh4/49+bv+Ng2z/opd//7Kj
+        jf+CbVP/Xkcm/4x8Wf+9soj/qZ1m/8m+iv+nnmz/sK97/8rLlf/ExY7/v8KI/8DDiP+7voP/vr2B/8K6
+        ff+8sHr/tad2/6ijcP+jm2j/pZhm/6aTYP+bhlP/jHVJ/4VvRP+Aaj//e2A0/39gM/99XTf/cE0x/2M8
+        K/9QLx//Ty4g/1MuJf9PKyL/Sysd/00tHv9SMSH/VzQh/1IvHv9XMyP/UzIe/1k7IP9tTzT/UTMZ/1c5
+        H/9VNCH/TS0a/2lNN/9fPzT/Sygl/0wtIP9MLB7/TS0h/08vI/9RMST/UTEk/1QzKP9SLSf/Uy4o/1Qv
+        Kf9ULSn/Tiom/1Y3Mv9MLCz/Sisr/1Y5Mv9kRz//WTo3/0gpJv9MLSr/Wz43/1I2Lv9NMCj/Ty4p/00r
+        J/9MKib/UCsq/1IoLP9VKy7/Ykk7/1tDNP9dRTb/Y0o8/21VRv+Ca1z/Zkw+/1o7Lv9ZOy3/WDks/2A6
+        K/9pRDX/e1tL/2xcSf+Qf2z/eF9N/2lRPf9xW0X/XEcx/1E6I/9XOyP/VDgg/1c7Iv+Rd2T/alBA/0cr
+        Gv9nU0P/Xzsu/1cnHP9cLCP/i2hf/3tURv+beWj/t6mb/6mejf+blYD/1dG8/7ewnP+XjXn/q6mU/6Op
+        lP+tpJL/opGA/5OOe/+Ti3n/nI59/5ySfP+onIT/loNt/2VPNv9bRyn/fm9T/8e8mf+/tID/tap2/7On
+        c/+ioGn/vL2H/8TEj/+/wIf/wsSJ/8DDiP+/wIT/wb5//8C7g/+5s4D/rqt1/7Coc/+pm2f/qZpi/6iY
+        YP+di1v/jHlL/4VwQP+IbkD/gmM2/4BhM/9+Wzj/b0gy/2A9Kf9UMiD/UCwh/04rIf9OLiH/TS0h/0oq
+        Hf9MKhz/Sikb/0sqHP9QLx3/UC4c/08tHP9UNB3/UjMa/1IwIP9QLR//UzQk/1o6Lf9UMyr/TCwf/00t
+        IP9PLyH/Ty8i/1AwI/9QMCP/VDMn/1MvJf9SLiT/Uy8l/1MsI/9YNiz/dlpO/4JlYP9ZOjj/Wj40/1M1
+        Lf9LLCn/TC0q/1AxLv9PMin/UTQq/1E0K/9TMS3/Uy8t/1EuK/9ULy7/VC0v/1cwMv9qSTz/ZEQ3/2RD
+        Nv+Aalv/q56O/72woP+1ppf/gGpb/15IOf9ROiv/XDws/2Y9Lv9sOSv/a04+/2VOPP9jQzP/XDwq/1g6
+        Jf9bPSj/WDsm/1c5J/9dPy3/UzUi/1c8Kv+Daln/gmhW/5aBcv+Ja17/imxe/6CQg//I0MX/wbep/7Ol
+        lv+urpj/qKeZ/8LCvf/L1cb/mqKL/7Knlf+3rpn/nJ2C/3NmTv9lTzn/Y0w1/3hqUv99d13/cGhP/2RX
+        P/9lVD3/Y002/2FKMv+FdV7/taqK/7ardv+tom7/vrOA/7q4gv+urnf/wL+J/8PEjP+/wYb/wcOH/7/B
+        hP/CxIT/w8OK/8TCj/+6t4H/tKx3/7Cibv+nm2P/qKFo/6OYaP+dj2L/nYZZ/5B2Sf+ObkD/hGcy/39e
+        Nf97Vjv/bEwy/2FDKv9ZOCb/Ty4g/0kqHf9KKh3/SSoe/0QoH/9AIxv/QSUd/0gmG/9SLiH/Uy8j/04t
+        HP9MKxn/TSke/0wnIv9KKCP/SSkb/19CLf9LKx3/Ty8i/1AwI/9RMST/UTEk/1ExJP9SMiP/UzEf/1Ew
+        Hv9UMyH/VzMi/1EyIf98ZFD/o4l8/2JGPP9qUT//XUI2/1M0Mv9QMC3/UTMv/1Y5Mf9TNi3/UzYt/1Uz
+        L/9UMS//VTIv/1UzMv9TMzT/VTU2/2xLPv9oRzr/Z0Y5/2pNPv9tUUH/dFhI/4NoWf+Galz/j3Rm/3ld
+        T/9fRTT/Wjwr/3BLO/+uoo//cWRR/1Q2Jv9eQSz/Vz8k/1s9J/9cPCr/WDst/15AMv9dQDL/UjUm/1E0
+        Jf9yU0X/j4Jt/7u2n/+Sinf/tbWn/7vQzP/S4dj/j4l//56Vgf+kopH/lJyO/7zGr/+YnYD/nZmA/6eh
+        g/9nYj7/VEUo/1pEKf9XQif/Xk0z/4d8Zf+zs5//sKuZ/6OTg/9uVkT/WkQu/4hvW/+VfmT/oJdn/6uk
+        bf+1sHL/0NKd/87Wqv+ztoP/w8KH/8PGjP/DyJL/v8WN/8DFhf/Fx47/y8yY/8bIk/+9u4f/ubB9/6yj
+        bf+somv/taVy/66eaf+rnGT/oY9b/5R+T/+Nc0n/gmk9/35mN/96WjT/bkgq/2xAKP9mOyn/VTAi/08p
+        Hf9PKiL/SSok/0MlH/9EJiD/SScg/0soIf9NKiP/TCke/0woHP9NKR//TCch/04tJP9GJxn/Zkg2/2lL
+        Ov9MLB7/UTAn/1ExJv9TMyb/UjIl/08wIv9SMSL/UTEh/1AvIP9YMCL/VC0e/1w3KP9sTUL/XkI4/3dW
+        Sf9yU0f/VDgw/1U3NP9VNzX/WDsz/1Q3Lv9TNi3/UzQt/1IzLf9UNC7/UzUx/1M4Nv9VOjj/bU1A/2pK
+        Pf9mRjn/ZUM0/2ZCMv96VUX/kHRk/4p6av+Bb2D/fmtc/2RGNf9bPSz/l3tp/6aahv+BcV7/VzYn/19B
+        LP9YRSn/YUg1/11ENf9XPjD/VDos/1U8Lv9ZOy7/Vzcq/1IxJf9eRTL/jHtm/5iJev+spZv/wc/M/8HM
+        xP+po5n/vMGw/6KijP9xZ03/f3VX/4V+Xv+Ujm//a2VB/11RKf9gTC3/X0cs/1RBJP9WQin/Zk89/3Ry
+        V/+DgGL/b19D/19IL/9ZQiz/gmpU/3xjS/+DbUj/t6V1/7ipbf/BwIr/5vLM/87Vqf+3uYP/vcON/8HH
+        kv/Kz5f/x8qK/8TFi//Hx5P/xcyV/8fLlP/FwYz/vLd//7Gpbv+0pGr/uqpu/6+lZ/+rn2j/opNj/5iD
+        Wv+Kdkj/lYNO/5B+T/+Nd07/dVY1/2lEKf9kPib/Yjgo/1MqH/9KJh7/Syce/0klHP9RMCf/gGFY/3pa
+        Uv9TMSb/Tywf/04rHv9MKhz/TS4g/04uIf9RMSX/WDoo/1M0JP9RMCn/UTAm/1AxI/9RMST/UTEk/1Ex
+        Jf9OLyL/TSwg/1QtIf9YMCT/Viwh/1c2LP9uUUn/dE1H/4FeU/9fQzT/Vzgx/1k5Nv9XOjL/Vjkw/1M2
+        Lf9TNy3/VTgv/1U4Lv9UOTH/Vzw4/1k+Of9qSj3/bU1A/2ZGOf9gQzP/XUMy/19DMf9zW0r/xLeo/7+y
+        ov9hUED/YUMy/15ALv9UNiX/W0Av/1tAL/9eQTD/X0Iv/1pCLv+JfG3/uK6j/4d1Zv95Z1j/a1pK/1s+
+        Mf9bOy7/XD0w/1c4Kf9zXU7/tq2i/8fPxv/U6uH/ycu//7u/r/+10sf/kpWC/31iRP9oUC3/Wk0p/1xM
+        KP9iVC7/Y1Is/19FJ/9ePyX/WD4i/1g9Jf9dQTD/YEkv/11IKv9dRyn/XUQq/25VQP+IfWX/YFc+/25V
+        O/+plHD/tKNz/7evdP/g6L7/5PDL/87ZrP+2v47/vb6F/8nGhv/Lzo7/w8SM/8jIlf/AyYz/wceJ/8jG
+        iv/DxIT/vL17/6+oaP+soWL/vLBz/7apcv+tnmz/rZpn/56JWv+Ickj/gnhH/6Saaf+llGz/dFk1/21J
+        J/9oQyb/ZD4p/1AqHf9TLR//Uy4f/1AwIf90Vkf/mHlq/2dHNf9PLhv/UC8c/1EwHv9QMCP/UDAj/1Ax
+        I/9PMR//UTMj/1AvJ/9OLiP/UDAj/1IyJf9VNSj/VTUo/1MzJv9RMST/UzEk/1g2Kf9cOSz/WTsw/08y
+        Kf9iPTb/gVxP/3VVQf9eOi//YT01/1o8NP9dQDf/bVBH/11AN/9dQDf/XUA3/14/Of9iPz3/YD47/29P
+        Qv9vT0L/ZUU4/2NGN/9oTz7/dV9O/5yGdv+Da1z/noZ3/7CYiv99YlP/Zkc3/2I+Lv9hPS3/Xz4u/1xB
+        MP9bPSz/kXlp/6Wcj/+dlYn/loNz/4p2Z/+JdWX/X0E0/1w7Lv9bOi3/XT8y/5+Wif+0wrj/n7Sp/622
+        pf+yrpr/uMCp/8XWyv+kooz/Y04q/3FXMv9rVTD/alMu/2dSLf9fSif/X0Qo/18/J/9bPiP/XD0m/1w8
+        K/9hPC7/YT4u/15ALv9cPyv/hmxW/66ljf+3t6H/q6aR/6Shg/+zsor/qqVo/8fNn//r99n/4O/K/9Ti
+        tP/Dx43/wcN9/7zBgP++wIT/w8SK/8bOjP/Gyor/ycSJ/8DEg/+9xID/wb9+/7Wub/+so2b/tahy/8Gy
+        gP+zpGv/rZpq/6OLZv+Lekf/fWo1/4RoPf+EZTv/eVsv/31eN/9jQSL/aUMs/3RMN/9bMB7/VTMf/1U3
+        I/9UNyT/Wz0n/1g4H/9UNBz/VDUg/1EyJf9SMib/UC8k/1EyIf9RMiP/UC4n/1EwJv9VNSf/Vzcq/1k5
+        LP9YOSz/Vjcq/1U2Kf9cPTD/YUI1/2BBM/9fQjf/WToy/2Q/OP94VUT/gF9F/2hEMv9oQzb/XkE2/19D
+        Of95XFP/dllQ/2tORf9gQzr/ZkZA/2hDQP9mQj7/d1ZJ/2lJPP9mRjn/ZUI2/3hZTP+Uf3D/q6CQ/8G7
+        qv+jm4r/p6KS/8rVx/+8vaz/c2RR/1g9K/9ePy//XkAu/2BDMv95YFD/bFJB/2JJN/9fRzb/d19O/4Bp
+        V/9WNyn/Wzsu/2ZGOP9zUkX/lpCC/7/Rxv+CiHv/SDYY/1FFJ/+De1z/eW9N/11OLf9mUjL/aVEx/2hP
+        L/9mTS3/ZU0t/19KK/9bQyv/Vz4p/1k/JP9bPyj/Wz0s/1s+Kv9cQSj/XEIl/2FGKP9jSS//hm9b/6aW
+        gv+RiWj/dGhD/5eIX/+npW3/qqx7/+bmx//v+tn/4vHS/9rrx//O46r/y9Sa/8PIiv/Bw4H/ubx6/7++
+        fv/HvoL/w8eD/77Jgv/ExIP/xMOE/7y7ff+tpG3/tqd2/7y0fP+zpXL/sptv/6qcZv+YilL/jHNF/4Fo
+        Of97ZDP/qZFm/4VuRf9fRhj/ZEMf/2k9J/9fPB//YkYp/35nUv+OdVn/aU4v/1Q3Hv9bPir/YUg3/1Ix
+        Jv9SKyX/Ti4e/1EyJP9QLif/UjEn/1c3Kf9ZOSz/Vzks/1M4Kv9SNyn/Vjst/2FCNf9kRDf/YkI1/2FA
+        N/9fPjX/YUI0/29ROf97XD7/b042/2xKNv9jSTX/YEU3/1s+N/9mSUD/hmlg/3FUS/9gRDv/YkU8/2FE
+        O/9vT0L/ZkY5/2VFOP9kRTj/ZUY4/2tKPf9hRjj/f21d/7qnmP93ZVb/bWRZ/56ThP9/cl7/Vjwq/10+
+        Lf9gQjH/X0My/1U7Kv9fRDP/hnFf/7u4o//KxrH/kYx3/49+bv94Y1T/gGtd/21gTP9eW0b/pKma/8vX
+        xf+NkHX/XEw1/14+KP9qWTn/aFQ0/2ZMLP9lSyv/ZU0t/2ZNLf9lTyv/ZVMt/2BLLf9aQyj/WkAk/1o+
+        J/9bPCz/XkEt/2FGLf9iSCv/YUgm/15FJf9xXUP/f2xR/3VdM/9oTR//fV4s/6edY/+xsnn/t7mD/93n
+        wv/0/fD/6fHn/+Tx1//m9ND/5u/I/+bswf/Z4rL/ztag/8TJiP+4wHz/tsB6/8HFd//FyHz/xsaD/8rD
+        hv+7rnb/q6Vm/7qvdP+4o3D/qZxk/66haf+mjmH/kXhJ/35oNv94XjT/k35T/7Okbv+QeE3/a0cr/3BQ
+        Lf9rUC7/gmxQ/5mFZf91YUH/ZE40/453Yf9sVj3/UTIh/1YxJP9QMxz/UTQf/04vIf9PLyP/Vzcq/1s7
+        Lv9YOiz/VDkr/1Q5K/9XPC7/YkI1/2VFOP9iQjX/Xz8y/10/L/9jRjH/alAz/3JaOv9rUDf/Zko1/2NK
+        Nv9iRzn/YkU+/2FEPP9jRj3/fmBY/3daUf9zVk3/bVBH/3NTRv92VUj/YUE0/2JGOP9oRzv/ckM4/29D
+        OP9fQjX/YkI2/3NSRv9oPjf/Xzku/2hJOP9gQjD/Wz0s/10/Lv9ZPCv/Y0g3/4NpWP9oUT//hXZj/4R3
+        ZP+Zjnr/p52M/7arm/+Eemv/Rjoj/1U4Iv9jRDX/cmVU/4V/av+cinf/X0Mw/2RNL/9+ZEX/a0wu/2FF
+        Jv9jSyv/cFc4/2ZQK/9jUif/ZFAs/11HJ/9bQCT/Wj4m/1s9K/9gQi7/ZEgu/2JHKv9mTSn/Y0sl/25b
+        Ov9/b1H/blw//2VQL/9lTCf/in1H/7y4ev+8vnn/u8iT//H96f/0+vH/6vXm/+Hy4f/j8Nv/6PLa/+r4
+        1//u+dr/7fDY/+HhxP/MzaP/wMCG/73Aef/Cxnv/x8OA/83Chf/Cvnr/sado/72qc/+1qG//pJZe/6uT
+        ZP+mjV7/k31M/35kOv9zXjH/iX9D/6+da/94Wzf/dFcu/3RbNP+IdlX/oZJx/3pqSv+Ug2n/nYty/1hD
+        Jf9ZPCT/VzQh/1I3G/9QNhv/UDIf/1M0Jf9aOi3/XDwu/1o8Lv9YPS//WT4w/1k/MP9hQTT/YUE0/2BA
+        M/9gQTL/Wj0o/2ZKMP9uVzj/c19A/2lTOv9hSTX/Ykk2/2BFOP9nSkL/Z0tC/11BN/9hRDv/aEtC/21Q
+        R/9vUkn/dVNG/25LPv9hPzH/YkE1/147MP90ST//hV9W/3FVTf9uSUP/gVlS/2VHN/9hRTT/XUEw/15A
+        L/9aPCv/dlhH/3NYR/9yX0z/l4p3/3FkUf98bFr/iX1p/6+nk/+bjHr/gW9d/2tZR/9dQi3/Xj4p/1c7
+        Lf9YQjL/WEcq/3lhRv9vUjj/XTwm/21LNv9pRTD/W0Ep/6uafP+AcEz/Yk4r/2ZLL/9kSi7/X0Up/1lA
+        IP9cQiP/X0Um/2RHJv9mSSb/Zkgm/2pRKv9lVCj/bVg1/39tTP9vZT3/YlEq/2lTLP9lVCf/qZ9s/8PA
+        hf+6vov/5fDa/+/38P/5++//7vjp/+336P/y/Oz/9f7u//L77P/u9+r/9f3t//f/7P/p89//0tu3/8HH
+        jf+6voL/wMB//8nHh//JwYb/uap0/7uudP/CtHn/taBm/6mVYP+cjVz/mIJS/4dtO/95YCT/e2Aq/35g
+        Mf90WzD/lYRg/6CVe/+BbFb/h2tT/5Z9Yf+BZ0n/a04z/1w+I/9XOR7/Uzgb/1I2Hv9TNiP/WDkp/1g6
+        Kf9ZOin/Wz8v/1hCM/9YQjP/V0Ex/15BL/9ePzH/XTw1/149M/9gQTH/bE85/3VaRP98Zkv/eGFG/2JG
+        PP9jRj3/Y0Y8/3teVf+WhHL/d2RT/2BEO/9nSUH/Z0pB/2RHPv92UkX/jWpd/3NQQ/9mRzj/loBv/5uR
+        ff+uqZb/o5aH/6WShP9mTUD/aEs6/2ZHNv9gQjH/XT8u/1w+Lf9jRDP/e2ZU/5WRfP+urpn/rrKc/6qr
+        lf94a1j/bFRC/2lPPv9gRjT/WT8u/11DLf9uV0H/ZFFB/19PP/9qXEL/dmJJ/3lgSP9jRTD/XT8q/2lK
+        Nv9ZQir/t6iL/3lqRv9bRyX/YUUr/19EKf9cQSX/XEMk/15FJf9fRiX/Ykkm/2dOKv9vVTH/alYv/2FT
+        LP+Fc1T/loRl/3BgNv9xWzH/dVkx/2hRJv95aTn/vrV9/7m1ff/k7M7/7vvz//X78//2/vL/9v7z//f/
+        9P/3//X/9//1//T88f/z/O//9P7u//P97//1/e//9Pnk/+Tswf/Fzo//ur99/8TFgf/Kxn//vbh5/7ev
+        c/+/sHX/t6hu/6mdZv+ijln/nIVP/5eCRf+Ndj//gGc2/4F+U/+0ron/hGhH/3dYNv9xVTP/d1k8/5J0
+        Wv9sTTL/Wjsg/1w+I/9VOh3/VDgg/1Y4Jv9ZOir/WTsq/19BMP9dQTD/Vz0v/1c9L/9YPi//ZUg1/14/
+        Mf9ZODH/Xj00/19AMf9yVED/gGZO/5F9XP+Tf17/ZEk7/2NGPf9cPzb/aUxD/6qZhv9+bFr/VDgv/2JE
+        PP9jRj3/Y0Y9/25MP/94Vkn/bkk9/3heSv+Zh2//cWBI/25eR/9qV0T/dltJ/29PPv9nSDf/YkQz/2JE
+        M/9gQjL/WTsq/19AL/9gRzX/hnlm/8jBrf/Dwaz/saqX/7Sql/+Lf2z/XUIx/14+Lv9ePi7/WUEr/2pa
+        Q/+GeGn/kYd4/6+olP+kl4X/hnJg/1lBLP9gSTP/fGNN/1dBKP9uXD//f3BL/1tGJP9eQij/XkQp/11C
+        J/9eRSX/X0Ym/15FJf9iTir/Z1Qv/2tXMv91ZUD/ZFk3/6WXfv+nl37/bFYt/3tgOf96WDL/dFgu/2dT
+        I/+hk1z/wbp4/9rgtv/s/vT/7/35//f99//z+vT/9vz2//j++f/3/vj/9vz3//b+9f/2/vP/9Pzx//D6
+        8v/s+e//8v3n/+731v/Y2a//w8OM/8C/e//Ew4P/v7x//7asb/+wpGj/sadq/7KfY/+jjlH/lYRH/5aE
+        Tf+bh1b/qKaA/5aQaf+Kc0T/dFgk/3ZYKv9uSy7/YDsn/4BjSP+Mb1P/ZEcr/1c9IP9WOiL/ZEY0/2VH
+        N/9fQTD/YkQz/2ZHN/9ZOCv/YkE0/1w7Lv9WOCX/Wzst/108Nf9aOTH/WTkr/3NWQf+HblT/m4hi/6aS
+        bP9cQi//XD82/1g7Mv9XOjL/bl5L/21bSf9uUkr/X0E6/19COf9fQjn/dk0//3VSQ/+Td2f/nop1/2tW
+        Pv90VD//dlY//21QOP9sSzf/dFBA/2lLOv9hQzL/Y0U0/2tMOf9rSzj/YEAt/2BDL/9cRC//ZEk1/4Fm
+        Uv92Xkb/b1pC/2hYP/9jRjL/Y0Iv/2NCMP9rTTj/WkUv/1xQPP+Demb/qJeD/5N/a/9oUT7/XkYx/1ZB
+        LP+Ofmn/qJl+/4V0U/9kVi//YU8r/19DKP9iRCn/ZkUr/2FEJv9gRCX/Ykcn/1xJKP9rXTj/koRc/66l
+        gv+tpIv/fGxO/5eDX/+CaT3/d1ou/3xZLv95XS//dF4t/3hjMP+9r3P/1tqv//H78P/1+fn/9/73/+73
+        8P/s9/D/+P74//f8+P/4+/z/9/z5//b99v/3/ff/9f31/+/77//t9+z/7fXq//L55//n7tL/ztGt/73D
+        iv+9wIP/yMON/8S7gf+poWL/pZtl/62ibf+lml3/lIVL/6SQWf+ci1z/e2k8/4FtPv+Wfk7/clQp/3VQ
+        Mv9xSDP/akcu/3JOOP9hPCn/XDwe/1c5Hf93WkT/dFZE/1c4KP9bPSz/WTsp/1w9Kv9xUEL/ZkU5/04v
+        IP9oSDv/clFH/1U3Jf9ePy//d1lH/494Wf+ajF7/t6x//2hYPv9QMif/Vzgu/1s8Mv9WPS7/f2VW/4dp
+        Xf9pSUD/YUE6/18/OP99WUn/kHNi/6eQfv+Rfmn/bFdA/3JVQf9yVj3/cFY6/21RPP9pSzz/aEo5/2RG
+        Nf9iRDP/YUAs/2pJNP9vTTn/cFM+/15HMf9kRC//aEYw/2ZKLv9mSi7/bVE1/3BVPv9wVkH/ak85/2lP
+        Of9bQy7/VkYu/1hIMP9hSDH/ZUw2/2RMNf9jTDT/bFpA/3JlS/+0sZv/qqmT/314Xf9mWDr/Y0Yr/2ZF
+        K/9pQyn/ZUco/2JFJv9kRif/X0sr/2FRLv9qWzH/cWQ//3ttT/98aUT/hnJH/3hmOP+Baz7/hGg8/3pi
+        Mf93YS//dVwq/5eNXP/M1qz/3erU//X7+P/2//T/6/nu/9zs4f/s9ur/9/73//P5+P/2+/n/9fz2//b8
+        9//3/fb/+P/2//f+9f/y+vH/6fjr/+n15P/s8t//3ui//9DYqf/NzaL/0c+d/8LAiP+xrn//sKp7/6ie
+        Yv+rnGH/moRK/5eCR/+jjFb/eWAx/5uEWP+DaUD/b0sq/3RML/9pRCn/XDQg/1oxIf9cNxr/XDsg/1w+
+        Kf9nSjj/YkQz/1s8LP9bPSr/aEw1/14/L/9cPDH/UTEl/1U1KP9tTUD/YUUt/2VHNf9yU0P/loFd/6Gb
+        Zv/Cwo7/sayM/04xIv9cPC7/WTkr/1w7L/9cOy//YEAz/2BANP9jQjn/YkE4/5SGdP+Yg3L/gWRU/4t1
+        YP+OeWT/e15K/3RXP/94XUH/b1I9/2dIOP9kRjX/ZEY1/2BCMf9gPyz/Xz4q/2RCLv9kRzL/X0gy/2ND
+        L/9mRS//Ykct/2VLMP9xVjz/lYdv/6Oag/+AdV7/ZFpC/1xMNf9eRjD/X0Qv/15GMP9dRS//XUUv/2dR
+        M/+Pfl//m49v/8bLsv+3vqf/fG5U/2dPM/9kSC3/ZkUr/2lDKv9mSCn/Z0sr/2ZIKf9mSiz/Y0oo/2NP
+        Jv9lTyL/dFot/5uHYf9yZUL/m5hx/6Wcdv+UhF7/gGo6/3RdKv94YCz/o5dx/7Cwgv+/xZr/8Pvw//n/
+        +P/p9uz/wtTI/8ndyP/Y6dj/5PTq//P79//x9fH/9Pr0//n/+//6//7/9/z7//f8+//w/PX/7vbr//H0
+        5f/t+Of/6vfh/9ffvv/Y4bn/y9Sn/9bTpP+2qnb/ppxf/6WWW/+ok1n/modI/6WTVv+eiVP/fmg1/3FY
+        KP9vTiX/bUck/25MKv9pRCj/XTcf/1ozG/9aNiL/Y0I1/2JDNf9sTz7/Wz4t/1U4JP9rTzf/ZUY2/1My
+        J/9RMiX/TS0g/0srH/9nSzP/XT8t/21NPv+Vg17/qqxw/8TKkP/c3bb/YEQu/1g7J/9fQy7/XT4v/1Iy
+        Jf9VNSj/Vzgp/2NFNP9wUkH/hHJc/7qlkP+UfWj/lIFn/5WBZf+McFX/d1xB/3NcQ/9tUTz/Zkc2/2BC
+        Mf9hQzL/YEIx/10+Kv9ePir/Y0Mv/2dLNP9kSzP/Zkgx/2pMM/9uVDX/eF5A/3RaO/+Dd1z/pp+G/7Gp
+        kP+Wj3X/hXpg/2xVPf9jSTH/Ykoy/2JKM/9jTDT/ZE8u/2pZNf9mVjP/jYpm/6KffP90XTf/YUMh/2FF
+        Kf9lRSn/ZUMn/2NGKP9lSSr/Y0cp/19KKf9mTiv/cU8r/2tJIP90XS//moVc/3VnPv+DfEz/h3xT/5yY
+        dv+SgFf/fmc6/3xqOf+Bbkj/dGE0/5WIWf/d3Mf/+P/6//T+9v/c6Nv/s8e2/7PIt//Q5dP/5/no/+Tw
+        5P/s9e7/+f38//v9/v/7/f7/+/7+//f9+v/2+/P/+Pru/+v68P/j8+f/6fTe/9nmzP/M2bn/0NGh/8nB
+        h/+3rHH/rp9l/6qUW/+nlFb/pZJV/6eSWf+TgUX/hG82/3dVJ/+BWTL/bk0m/21KKP9mQib/Wjci/1My
+        Iv9VNCv/TzEf/2RGL/91VUb/UjIk/1w/K/9pSjr/UzMm/1IyI/9RMCH/XDwt/4FjTP9bPSf/bEw2/5KB
+        Wf+3vX3/yNaT/+Tvwf97Z1H/UDEZ/1w8J/9UNCb/UzMm/0wsH/9ZOiv/XD0t/2RFNv+FalP/iHNc/62i
+        if+Og2T/dGJC/39mRv97Y0f/Z1Q+/2hMN/9oSTT/YEIx/2BCMf9gQjH/X0Iu/2JFMP9kRzL/Zkoy/2VK
+        Lv9mSzD/a1Ez/4BoRP9wWDP/blcy/2hUNv9kUTX/bVo+/3RhRP9xYEL/Y1I1/19NMP9iTDD/ZE0y/2RO
+        Mf9jUCv/bls1/2pWMP+BdE//e29M/2dVMP9kTCr/ZEYn/2RHKP9fQyT/X0Um/2FIKf9fRif/X0om/2NL
+        J/9nRCL/a1At/2dbNf+JdEn/gGs4/3RiJv+Aajv/iYlj/52Zdf+Wh1//f2k9/3dgMP+Idkn/hHNM/8G7
+        l//q9uL/9/v2//r/9P/D0cz/wtTI/9Xr0f/M6cj/0urS/+Xz6v/2+vr//fz8//7+/v/+/v7/9/j0//X3
+        7v/4/O7/7P3r/+n76v/p9OX/5/Lk/+n13//W3bP/wcGJ/8G7gv+7sHj/tqVt/6+eZ/+unmb/nItU/6CU
+        V/+Uhkj/iGc1/5hvQ/+GZzr/a0oj/3NRL/9vUjn/VDYi/1o5Lv9bPCT/Vjgb/25LO/9QLiH/VDYk/1c5
+        J/9RMyD/VjUf/1Y2IP9zUz3/cFA5/2BDJv94Wjj/loRZ/73Dgv/M3Zn/7PzR/4qAb/9eOiH/Zjwv/08v
+        IP9NMBz/XkAt/15AMP9OLSL/Vzcr/4+LeP+3sJ3/p5uJ/5SKcf+cj3P/emVK/3VfR/9rV0L/Z0s2/2pL
+        Nv9mSDf/YkQz/2FDMv9kRzP/ZUgz/2RHMv9lSTL/aE0y/2RILv9qTzL/c1s3/29XM/9rUy//ZU8s/2ZQ
+        Lv9pUzD/alM0/2NKL/9iSS7/ZU0w/2NQLP9kUS7/Y1As/2dVKv9sWzD/bVww/3NkPP9nVjL/Ykol/2VJ
+        J/9iRif/Y0Yn/2BDJP9dRiD/YUok/2JLJf9mRCL/fF88/6mbdf+qonv/jn9Y/2RPJP+Cb0D/alko/4Ro
+        O/+ll2v/hYZY/3NpOf96Xy3/fmEt/4BpN/+QfE//g3dL/8rMqv////r/8vzz/+v78f/o++n/2vHS/8jk
+        w//I4Mn/1OHZ//n9/f/6+vr/+vr7//z9/f/t9O//7fbs/+756v/q/Ov/7P3t//L87P/u++v/5PXh/+zx
+        1//c3bf/vcOG/76/hf+8uH7/xsCN/9LLmv/Bu4j/mJFd/6GVX/+Xf0f/h2gw/4ZpNv9zVCb/dVUs/3FQ
+        Mv9iQCf/Xjoo/1UzIf90VED/Wzsk/1k7I/9LLxf/TzMb/1A1HP9fQSb/dFU6/3xeQv9pSjH/YkQp/3ha
+        Ov+OfU//v8aC/9DcpP/y/eH/lYl5/1k2Hf9SKhz/a006/25TOv9aPib/Wj4o/1E0If9YOif/v8e1/7a1
+        pP+1qZr/pZyH/6yjjP+HeGL/c2FK/2tYP/9pTjn/aUo2/2dJN/9jRjT/Zkc3/2hKNv9mSTP/YkUw/2ZK
+        Mf9oTTH/Z00x/3JYOv91XTn/bVUx/2xUMP9sUy7/bVQu/2xTLf9qTy//Z0sw/2ZJLv9oTjD/Z1Qt/2tY
+        Mv9rWDH/a1wt/2xdLf9sXS3/cF41/2hQLv9pSyj/a0sp/2hKK/9hQyT/YkYm/2FKIf9kTiT/Z1En/3xm
+        Qv+smnX/qJdy/31uSP9yZD3/bFcs/3ZkN/9uYDX/gmQ3/4BpN/9xYTH/c2Qx/3NmLf95Yyr/emAq/3li
+        Mv9yYC//jIhc//j47v/w/Pb/4vTm/7zTu/+1z6v/wd67/8Xcxv/R39X/9vv5//j49//t7ez/9vj2/+r1
+        7v/l9Oj/3u/f/9zw3//a7Nv/5/Hi//H/8P/o/Or/6/Di/+3v1f/Z6K7/vceN/7e7f/+7u4n/ysqb/76+
+        j//EwZP/qqFw/6GOU/+TeTr/gWYu/4ZpN/96Wy//cE0p/2hDJ/9mPij/WTMl/1c1Jf9hQif/XkEi/1M3
+        G/9UOR3/a1A0/35hQv9cPx//YEIi/2BBJv9iRCn/d1k5/45+Tv+9xH//4ey7//r/8f+Lf3D/VTMY/1ox
+        Iv9hRC3/X0Uo/00yFv9SNhz/Uzcf/1o9Jv+ThWv/kYFn/418Yv+woY3/v722/9bazv+KhmH/c2Y5/3Zc
+        RP9xUEL/ZVAy/2hONP9yUD7/bU43/21QN/9qTDT/ZUot/2hQLP95YT7/eF88/2tTL/9vVzP/blYy/2hU
+        LP9sWTD/algv/2lTLv9rUjD/bFQx/29XM/9vWTD/dF41/3RfNv9qXDL/aVwx/2ldMv9uWTb/gGVH/2ZN
+        L/9dPx7/ZUIf/2ZGKP9nSy7/aFIq/2pVK/9uVy7/dWhG/8zKpf+SgFr/XUEX/2tcLv+RgFf/mYxm/4+N
+        Yf94aDr/d1sq/3tdLv95Xi//eF4v/31lM/95YS7/fGQz/31oMf9lWhz/oZ2C//3+/f/c6d//sc65/6rE
+        pP+xxaj/tsy0/83jyv/o9+X/9Pvw/+326f/n8OP/5ffk/9Lo1//H4dT/yuPS/9Xp2v/o8+v/9f74//H/
+        8//2+vH/7/To/+Dz2v/g6sL/zM2S/7++f/+4tnv/trN8/7aqe/++rn//pJJY/6aRUP+McTf/kXRB/5l6
+        Tf94Vin/dU8r/2Y7JP9jOyn/WDMf/1MuGv9aNR//VjIX/2xJKf93VTX/Vjka/1Y0Fv9iOx3/Yz0f/2I/
+        Kf96XED/kIRQ/8XMk//t9tX/9//2/5eRff97Wjn/bEQp/11BJ/9sTzT/XTkf/1MwFv9TNRv/VDYb/4Zx
+        Uf+Cbk3/l4Ni/5uFaf+vppf/urij/5WNY/+GeUz/eWJB/3daPv9sWjT/cFg4/3ZVPf93XkH/oYts/4Vu
+        T/9oUTD/bVUx/3FZNf9xWTX/bVUx/29XM/9vVzP/bVoy/2xbMf9pVy7/alYt/21XLf9vWTD/cVsy/3Nd
+        NP92YDb/dV82/21bMv9tXDP/bl0z/2JVLv9wZ0L/dm1H/4x+X/+HcVj/WUEk/2VKKv9rVS3/bFct/3Nd
+        NP99dlD/r6mB/4VyRv9rVCX/h3dJ/6WVbf+IeFP/c2U6/2tYKv93Xi3/f2o+/5eEWv+Tf1b/fmk6/4Fq
+        OP96ZDP/f2Yw/4luKf9tXyf/xLyo/+/67v+51sT/tsu5/8vbxv+yya//tMux/9vt1v/p8+H/6/bk/+jz
+        4P/T5dD/z+bV/7bRxP/C4M7/2vPj/+Hx6f/p9fD/8v33//r9+f/7/ff/6/bq/+723v/p7sr/xtOW/7jB
+        e//Avnb/sKdm/6mdY/+qmF3/n4lM/6iPUP+fhEv/m35L/3hYJP+HZDn/cUks/2M4I/9pPiv/Wy8d/2U7
+        KP9eOR//aEUl/3FPLv9ZPB3/WDYY/2E4G/9jPB3/Xzsl/3lbP/+Ui1P/19yr//f86v/9//v/hoFs/1c3
+        Ff91TDD/X0Mp/2NGK/9pRSv/XDge/1c5Hv9XOR7/k3lV/5B3Uv+NdE//jnJO/5F/Zf+on33/h3lL/5SG
+        Xf+EcEX/emM2/3JjNv94YTz/hWZI/4RyTv9+cUr/bF84/21bNv9wVzT/cFg0/3JaNv9vVzP/c1s4/3Rc
+        OP9yXzf/cF41/2xaMf9tWi3/blkr/3JdL/9xXC//clwz/3VfNv91Xzb/dV01/3VdNf92XjX/blkw/2pX
+        Lf9pVSj/j4Ro/+Pf1P+3qI3/bFUx/21WLf9vWTD/jnhQ/7u9kf+WiV3/cVop/2pcKf9tXS//a1oy/21W
+        Mv94WTH/dlww/3ReLP+glm7/n5dz/4+HYv+Yhln/hGs4/413Rf9/ZDb/jnE7/52WVf+xrZb/1ePT/8nm
+        1v+7y8n/4vDi/87kyv+80rr/ytzE/9vnz//j79f/4/DY/8zfyf/S6dj/uNLG/7bZxv/G59b/0unf/+Lx
+        7v/r9PT/9vf5//z6+//5/Pf/8/ry/+fy6P/c8ND/xc+e/8a8gf/IwHb/ta9j/66dXv+mj1T/o4xG/6mQ
+        UP+IbTT/gmQr/4FfMP+FXzz/bkEr/2g2Jf9yQC7/WiwZ/3FLM/9nQyP/fVw4/3JVNv9fPR//ZDwf/2I7
+        HP9eOiT/elxA/5mQVv/Y2rH/+fn2//v/+P+Qi3b/VjYV/3dPM/9hRSz/YEMo/2VBJ/9gPSP/Vzof/1Y4
+        Hf+Selb/kXhU/411Uf+Odk3/jHhQ/4V1Uf9/cE3/hnZT/4ZzRf+Ebzv/f2g5/4JwQv+YjmD/iXlN/3pn
+        O/96aDz/dGA0/3NdM/9zWzb/c1o3/3RdNf94Yzf/eGQ1/3toN/96Zjn/dF43/3NeMv9zXy//dGAw/3Rf
+        Mf9zXjH/d2I0/3hjNv93YDf/eWM6/3ZgN/98Yzr/hGpC/4pvRf9rVTT/e25V/+XXtP+Vh17/bVgl/4Vw
+        PP+Ebzv/j4VO/39sQf9vVif/dWAp/3JcLP9yXCz/cFkq/3JYKf9yWin/emQy/4h1Sf+Ackf/pZ1x/52U
+        af+nnHD/jX9R/3prNf+Ffkj/ubiX/6qjd/+BdU3/zNPE/8POz//Q4tT/z+fP/7vNuP/H2cD/x92//9/z
+        2v/V6NL/xt/M/7bMyP/C2tP/5fbp/+n06f/r9+j/7vrr/+357//x+vT/9Pr5//T49//1+/f/9fz1/+T4
+        7f/f8NX/ztCh/8DEgP/LzpD/ycGU/7yvef+iklb/nIlL/6SNTf+Hbyv/gGIt/3hSNv98Ujv/Yjce/3RH
+        Nf9wQzT/Uysb/2Y/KP9lQSX/ZUMi/2NBH/9oQyL/akko/2JFJP98ZkD/pJlg/8nNoP/z+/H////4/5mJ
+        bP9jOxr/bEgk/2RDI/9jQSP/ZEAj/149H/9XOxz/WTwe/412Uv+NdlL/jXVS/494Uf+LdU//koBh/4Z4
+        V/+GeU//hHFG/4RsQP+Db0H/k4NU/3NoN/95aDf/f2o5/3tnN/94ZTP/d2My/3dhN/95Yjv/e2U7/3ll
+        Nv96ZzT/f243/39sOf91YDT/dWA0/3djNP93YzT/d2M0/3ZiM/94ZDX/eWQ2/3ljOv96ZDv/d2A3/4Bx
+        SP+dlWv/l45i/6OYcf+bjGj/inxT/3ZoOv94ZC3/e2Yu/3xnL/+FekD/l4Zd/4JtP/93YSr/dV4s/3Ve
+        K/91Xiv/dV8t/3VfLP96YzH/fGQ0/4FtPP+Hd0X/oKFx/5OVZv+LdkX/i281/4N7QP+jnXr/jXxI/3xm
+        M/99d1n/w8zC/8bdzf/D28T/t8ez/8XWvf+/2Lj/1uzT/9/z4P++2Mn/pru//6/FxP/f7OL/8fvw/+by
+        4f/r+eP/8v/u//H+8v/z/fX/8vrx//f9+P/8//3/8P73/+n45f/p8s//2N+2/9HSrv/b2Lf/xsCU/8rB
+        iP+hlFf/n45L/6WTQ/+Fbyn/im46/3dULv9zTC7/Zj0l/3NJNv9bMyD/YDoi/2dDJv9mQyD/ZUIg/2pH
+        Jf9rTCj/aE8m/4h3SP+jmGD/t76J/+r64f////b/h3FT/2k+Hf9qSB//Yj8e/2M+If9gPB7/WTga/1Q3
+        GP9ZPBz/jHNP/410UP+JcEz/i3FP/4lxU/++qpT/npFv/391Qv+Ebkf/hGlH/4F4Sf+Edkb/fGQ2/4Bt
+        OP99bDT/e2oy/3pqMf95aDH/e2c3/3tmO/97ZTz/fWg6/4BtO/+DdDj/gG82/3pnNf94ZDX/eGQ1/3dj
+        Nf93YzT/dWEy/3djNP96ZTf/emM8/3hiOv94Yzr/eGc9/3ttQv97bUP/mItj/5yQaP9vYzP/c2cy/3di
+        K/96ZC7/eWMs/316P//Jwpn/va+B/3tqMv9yWij/dl8t/3lhMP95YjD/emMx/3xkMv+CZzL/gWo0/5GA
+        SP+gm2b/hH5K/4x0Pf+ObDH/hXA0/31wPP+Gazr/h3U9/4x/Tf+hpo//yODP/8Xexf+tvan/v9C2/7vU
+        tP/C2L//6Pvp/8Tc0v+nusP/nLG1/77Pxv/r+u//4PPh/9ns0//o99//8v/u//H87v/w+uj/9/z5//n6
+        ///3+/j/9v7z/+z36P/p8tX/0t2o/73Hg//Hyoz/trN5/7u0d/+XjEn/qZNL/5yDPv+JcS//kHA//3JL
+        KP9ySi3/Yjkh/2A6Iv9nQiX/a0gm/2hFJP9oRSP/bksp/2dJIP95YTL/k4NO/52SWf+ttnr/2+/J//T4
+        7v9uVzv/ZzoY/2RCGv9fPR3/YTwf/1s2Gf9WNBf/UzYX/1U3Gf+RfVv/loFf/415V/+PeFb/jXVV/4Zw
+        Vv+LelL/gnU+/5KAXP+Yhmn/gnhK/3doOP+Caz3/f2w2/35tNP96aTH/fGsy/31tNP95ZzL/eWY0/39r
+        PP+Cbz3/hHE9/4l5P/+Hdj7/hHI+/3xpOP96Zzb/fGg4/3xpOP96Zjb/emY2/4FtPf98azj/fWc5/4Rm
+        Pf+EaEb/oY5r/4xvR/9rVyv/b2E1/5+VZ/+RiVr/jX5J/4NxOv9/bDL/cmgt/4d8Sv+PgEz/eGYx/3Nc
+        Lv9zXyr/fWky/3tlM/99aDX/fmg2/4BqMf+FbzT/jno//5N/SP+Hcz3/hnI5/4lzOP+Iczf/gXA5/4tx
+        Qv+JdkD/npBR/5edgf+0zMX/x9jK/8PVwv+40bf/xt3A/8bdwv/o/uX/1Ozj/52vu/+cr7j/qsG3/8/l
+        1//e8+H/z+XO/87jzf+/1L//1+rU/+n53f/y/O3/+Pj8//v69//6/fX/9vz0//H18//r8uL/4+zE/9PX
+        q//Av4T/qKNf/7qsa/+dj1L/taJq/6SKWf+bfk//i21A/3BNJP9zTiv/ZUEj/2lGJf9/Xjj/dFQp/2xL
+        Jv9yTTH/YUId/4t1Q/+ej1j/mZBY/6uzdv/Q4bD/4ePR/1U+H/9dNxT/XDsU/10+Gf9bOxj/WjoW/1Y3
+        Ff9SNhX/UTUT/5GBYP+WhmX/mIho/5KBXv+Gc07/hHJN/4FvQ/+Kekj/l41l/4iAXf99bT//fm4//3ts
+        Pf98bDb/fWsz/31rNP98azT/eWgw/3dmLf97ajL/gG82/4RzOv+Idz7/indD/4p2RP+Gc0D/g3A9/4Fu
+        Ov+Bbzv/gW47/39sOP+AbTr/g3E9/31xMv+Aajb/iGU9/39iR/+ln3//eFsx/2tcKv96ajv/e29G/5+X
+        cf+fmGb/joRL/4NyNv+DcDf/fGoy/418Qv+LeEb/dF8z/25cJv91ZSr/e2g1/35rOP99ajf/eWsw/4Nw
+        NP+Mczj/inE5/4t2P/+MdkD/gGs0/4BvN/98aTf/jHhM/5aEVP+bj1H/j5Jz/6O0tv/Aysr/wNXK/7fX
+        xP/Q5M//1uzT/9721//F4M//l6my/52uuf+qxbz/ttHC/9zw3f/I3sv/qsa3/6zIt/+xzbj/0erK/+b5
+        2//3/fb/+/z3//r88v/3+e//8vr1//D89f/x++b/2uHB/8rLl//Gwnr/tKJj/7Wpav+xpm//0cWd/7Wm
+        e/+bh1T/hGk3/3BRI/9zUyr/cVEo/3hYLv+HazX/cVIn/3JMM/9jQyH/inNE/6qZZP+fmGD/ubx//9jd
+        p//AwKH/RzML/1g+Ff9bOhP/WD0Q/1E6DP9QOAr/TzcL/040C/9NNAr/gGxF/35pQf+FcEf/fmxJ/5WG
+        aP+mlnn/rKB//5CHXv+Vh1z/fWw//3tqPP9+bj//fm4//3xsNv99bTT/f242/31tNP96aTH/e2oy/31s
+        NP9+bTX/gG43/4NyOv+HdUH/iHVD/4d0Qv+IdUL/hXJA/4VyP/+Bbzz/gW47/4JvPP+DcDz/hXI7/35r
+        Pv98aEX/kH1e/4aBWf97YS//eWkw/31pNf+GdUb/o5dr/6mhb/+UiVH/g3I1/4l8SP+aj1//mY5e/31v
+        O/+GdD7/e2g2/3NfMP9xXiv/eGQy/31qN/99azf/hG46/4ZqN/+CaTT/g283/4RvOP9/azT/fm00/35q
+        OP+EcUP/k4dV/5aEUP+QiV7/n6ib/8LW0/+2zc7/ucvI/9Hj0//S5tH/2O7U/9ju2f+wvcL/rLm//67I
+        vf/A28z/xtrH/9Ho0v+iv63/qL+4/5mwrP+wzLb/1O/P/+X15P/w+fH/7/ju/+737f/w+/P/8Pv1//j7
+        9f/7+/X/2N2//8PJiv/Fv3//sqJc/7KkZf+ooG//u7OG/7yugf+ijWH/fWE2/3RVKP+AYTT/b1Aj/3pc
+        LP9zVCb/a0se/19BFv94YDL/opJd/52TWf+4t3T/296i/5iVcv9INgj/VTwN/1Q1CP9PNgP/TDcB/0w2
+        Af9MNgP/TTUH/0w0Bf+Ia0H/gGU+/4FmQ/+lmHr/oJh8/5+Scf+imHX/eHFK/4FvQf+IcT//f28+/31u
+        Pv+CckP/iHZA/4d1Pf+DcDn/g3E5/4JxOf+CcTn/f242/4JxOP+Dcjn/gnE4/4RyPf+DcTz/g3E8/4Ry
+        PP+HdT//h3VA/4NwPP+Ebj3/gm09/4VxQf+Bajb/hHNK/7qxl/+rnn3/g3xM/4dyO/+Cczf/inU8/4p4
+        RP+QgU//hX1H/3xvN/+CcDb/gXNB/46CUv+Dd0f/jH9I/6GRVv+ij2L/gGpA/3FfK/93ZTH/d2Ux/3dm
+        Mv98ZzX/f2I2/4BlNP+KdD7/g2w3/31nMf+Bbzj/e2Y2/3pmOf+CdkT/j3pL/4t7Sf+Ni27/pLe9/67B
+        zv+5x8v/x9rP/8fb0P/I3sz/zOHM/97s6P/n8/L/0ebd/8HYyv+/0L7/yeDF/8Pfx/+it7b/kqWv/6jE
+        uP/N7M3/1u3Y/8/f1f/i8eb/6vjt//L99//2/fz/+/v9//r6/v/p9eT/w86Z/7y/fv/ExX//vLd3/7mo
+        cv+mlmr/raB3/5+KYv+ReE3/gGUw/4BkLv9zViD/bU8g/3ZaKP+CaTH/aU8c/35mNv+hkFr/o5lc/7Wy
+        bP/b2Z3/Yloz/0IwAP9ROgb/VTgG/1A4Av9OOQL/TjkC/085BP9QOgf/TzgF/4doP/+ReFz/wK6h/8XD
+        rf9zc07/cmQw/3poMv9+b0D/hW4//4RrPf9+bzv/gXM//4J0QP+Hcjz/iHE6/4lxO/+GcTr/gXE5/4Jx
+        Of+BcDj/gXE2/4V1Ov+FdTr/hHQ5/4R0Of+EdDr/g3Q0/4Z4OP+EdDr/h3Q+/4lyPf+Cbj7/eWc7/3ph
+        M/+qmnX/3Ne8/6CXa/+IekD/gnU+/4FyOv+BcDj/gXA4/4BvN/92bC7/eWkw/4NqOv+Gbjr/hG40/4Rv
+        MP+PfT//hnU//4FtPf95ZDb/d2Uu/3ZlLf91ZCz/Z1Yj/3RfL/9+YDX/fl8x/4RmNf+SdEP/hWk3/3pj
+        Mf96YjX/dlw0/3diNP+CbkD/gWw8/4R0Rv+Nlav/n6O9/6a9w/+zycz/q8LD/7LJx/+2z8b/vtPK/87e
+        1v/o9Or/6ffm/9Lkxv/J4bj/zufG/7PHxf+Vp7X/ore3/8Xhz//D3dH/t87F/93v4//o9uv/9fj1//38
+        /f///v7/+P38/+//9//y+N3/x8aZ/8HDjP/T0Zz/0caU/7GkcP+nl2H/o41Y/4dwOv+Kdjr/fGQj/3xg
+        Hf9qThf/clsm/7Ghav9+aC//pYxS/7OfZf+up2b/s7Rx/8/Gkv9NPBL/SzgG/1M7Cf9UNwb/UjkI/1Q9
+        DP9UPQ3/Uz0K/1M+Bv9VQAn/cl85/6idev+fn3//aGU9/3lvQP9/cT//f3A9/3tsPf9/aDr/g2o8/31u
+        O/+CdED/gnRA/4JyPP+Dczv/g3M7/4JyOv+CcTn/gnE5/4JxOf+Dczj/hnY7/4d3PP+DdDn/hHQ5/4Nz
+        Of+Edjb/iHo6/5GBR/+OfET/gXI1/3FnLf+GfUv/mIRk/8S4j/+gnGf/enI5/4h6Qv+CdT3/gnM7/4Jx
+        Of+Dcjv/gXE4/3pwMv99bTX/g2o6/3poMv+DdDn/j4FB/35wL/9+bjL/fm02/3tnNP98ZS//e2Qu/3tk
+        Lf9hRSL/YUEf/35bLf+AXy7/fmAw/35gL/99YS//d2Au/3tiNv94Xjf/dV42/3ReNf91XjX/a1sv/4yY
+        of+dorz/jZm5/6Grvf/D1ND/u83M/7XQ0v+qwcP/rL3A/7XHu//L38j/0evG/7rUrf+1y7P/tMrC/6a5
+        wv+UprH/s8rE/7nOzv+wxr7/3/Hl//L/9f/4+/j//fz9/////v/7/P7/9ff+//z7+v/u7d//xc2X/8bK
+        kv/Z1KT/yMSJ/6GcWP+pnlv/lYRG/413Qv+GbDH/e14f/2ZMEP96ZSn/koRI/2hTGP+EazL/qZZc/7as
+        a/+5tHH/rJxp/043Dv9ZRhT/UDkG/1M1BP9VPQf/V0MM/1pFDv9bRw3/XUkN/1tIDP+JZUb/kXpV/351
+        S/+GeUX/gXE5/3psO/97bz//fW4+/4FqPP+HbkD/fm87/4FzP/+DdEH/gHQ8/390O/9/dDv/f3I5/4V0
+        PP+Eczv/hnY9/4Z2O/+Gdjv/hXU6/4Z2O/+Hdzz/hXU6/4h5Of+HeDj/j39E/35tOP+Kek7/taqC/8S8
+        mf+ck2r/bWMz/3hsN/+Edz//hnlB/4d6Qv+DdT3/gnA4/4JxOf+Ccjn/fHM1/39vN/+KcEH/gnQ+/5iO
+        Uv+UjEz/e3Iu/31vLf9+bzP/fWky/4BjLv99YCv/f2Mt/3pbMf9nQiD/cEEk/3pVK/9/YzD/fV4t/3tf
+        LP92Xy3/dl0x/3heN/90XDj/b1g0/3ZdOv9gUCT/n6+s/6yyy/96fLP/kZKz/7HAuP/E0tP/psLO/6O9
+        yP+cr7z/qLq9/7fLxP+50r3/v9e9/8vezf+3zsL/rsPH/5qovv+Uqaz/m622/6i+uP/m+ez/6vft/+zv
+        7P/6+fr/+/v7//z7+v/9+/f/+fv2//P57//s8dH/vcKR/7vBfP/DxIX/ubSA/7Cmcf+tnWn/kXlI/5B0
+        Pv+EZiv/dVsc/4FuLv+Kfj3/X0oO/25VHP+ciU//qJxc/7uxb/+OeEb/TTIJ/0w5B/9SOwj/WTsL/1tE
+        C/9dSg7/YE0R/19ND/9fTgz/YU8O/4VoPP+RdVL/tKyU/52Ycf90Zjf/e2k//3djNv99azn/f2s6/4Ft
+        O/9/cjv/gXQ9/4BzPP+Aczv/f3M6/35yOv+Bczj/iHY5/4p2QP+HdED/hXc//4h6Qv+Qgkr/jn5F/49+
+        Rf+Sgkn/jHY5/5V1O/+CaDj/e20//7CpjP/S1cb/iHhQ/3tzO/98cjr/hHI8/4ZzP/+CcT3/kYBM/4dw
+        P/+KbT7/hW86/4JvOP+Hcj3/g287/3dkMv+on3b/o5ln/4d5M/+GeTH/fHE0/3xrMP9+aC7/gmUt/39i
+        Kv9/Yir/fmYu/3VVKv9wQy3/a0Io/29NKf9xTSv/bkwn/3lcMP99XzX/e101/3JaNf93YT3/dFw4/19S
+        L/+YoYj/2uLw/52wv/+lp6n/YE5E/52hj/+yzc3/rcTR/6zHxf+Oqan/jKSl/560r//D1sT/6fvf/+j9
+        7P/F29b/orS//4+hq/+aqrv/rcPA/8LXzP/D0cn/0+LW/+377//0/Pb/+fz5//3+9//6/PX/9fnz/+z7
+        8f/a5Mb/wb+C/8TDif/Y2K//3tm6/8K6nf+hl2z/jHlH/450OP9/aCH/d14h/4BsJv95Yh7/fWco/52M
+        TP+qnVz/t6ho/3VfI/9fQgv/ZE0N/1xMF/9lSxb/Z1YM/2xZF/9wVRn/bVUY/2hXFP9nVhT/hHNH/4xz
+        Uv/Jwan/g3xZ/3JgNv97Yjv/fWU5/4FvO/99ajb/eGUy/3ptNf9/cjr/fXA4/39yOv+Aczv/fXA4/35w
+        Nv+AcTf/gG48/4NxQf+IfET/lIdP/52QWf+Pf0f/koFJ/4d2Pv+AcTz/fWc7/7irjP+rqoj/nJhz/7e5
+        nv97azj/d20z/3puNf+CcDf/gGw3/5B9S/+HdEH/gGo3/4pxPf+Oekj/fm08/3tlM/+Bbzz/jYFN/8G8
+        kf+FfEr/ing2/4d2Mv97cDb/f2wy/4JsMv+BajD/gGkv/4BpL/96Zy//emIz/3lWMv95VDz/ck47/2tG
+        NP9tSTL/dlQv/35cN/+DYjz/fGQ3/3pjNf+IcEL/a1kv/4SBVv/w8vT/jpeC/2ZWLP98WTT/dGc8/7G9
+        p//Y5uP/r8PD/6zJxv+uycX/w9jR/8TWw//Y6s3/0uXX/8HXz//R6eH/sMbE/5+0t/+nwb3/qcG7/7XG
+        w/+/08b/0uXU/+z37v/2+vb//P35//z8+P/6/Pn/7f33//H86P/Z17H/t7t+/8TNjf/GyZn/ycmg/8fD
+        lf+bjVf/knw7/3tkH/9pTRb/hm0r/4FpJP+Aair/nY1L/6eaV/+klVL/dmMf/3RZGf9wVw3/hn1G/41+
+        Tv9vZgz/cWIO/3NbDv9xWRT/aFYZ/2dUFv+lmnr/j3VW/4V2VP93aED/e2M6/35dOP+BZDn/fGs4/3tn
+        Nf93ZTL/dWkx/3xwN/98bzj/e242/35yOf9+cTj/f3Q8/4V7SP+RhFn/mYxh/4x/R/+Ddj7/gnU9/4Fx
+        Of+Abzf/gG83/31wOP+AbDr/pJly/8LGoP+HglL/gXhG/5CDSv+EfEP/iX5F/4d1Pf+EcT3/k4BO/4l1
+        RP+Eczn/hXc4/6OWZ/+5rIb/q51s/6SaZv+opXH/nJ1n/3lyOv+Ldz7/i3g9/310N/+CcDX/iHM5/4Bw
+        Nf9+bjP/gnE3/3ttO/98ajv/gGk2/3thOf+BaEf/emE+/3VZOP91UDT/akUq/2hFJv+Ibjf/lHpA/4Jp
+        Lv+BZi3/e2sx/+nk2f+Delj/a1IV/3NfLv+Fd0z/h39T/6qukv+nsL3/oLq6/7XTxf/L5NX/5/nl/+f1
+        4v/K29X/nrKy/6rAv/+twsX/rL7I/5m3uf+burn/orm8/77TyP/b69v/7/nw//j7+P/6+vf/+vv3//n7
+        9//0/Pj/9f7y/+724//Hz5n/wsqG/9TWp/+2tor/qqZy/6aaXP+WgTr/jXQ0/2pNHP95YCP/iHAt/4Fr
+        Kv+Xh0X/npRN/4+EOP92ZRv/emAY/31iDv+emWH/tLOO/4V+LP9zYRP/d10X/3FXGP9jTxf/Z1Ia/4eA
+        Xv95ZEH/lXtW/3hlQv9xWC7/fFsv/3lgMP9/ai//emcx/3poNP98ZzX/gnA6/3tuNP95bDb/eWs3/3ps
+        Of93azX/fHM7/42CTf+BdUH/gXE5/4FyOv+DdDz/gnE7/35sNf9+bzT/iHUx/4ZzNf95aTX/hXlD/4qH
+        Uv9wZyz/hXo9/4qASP+IeUL/iHM9/4h0Pf9+bTX/fmw1/4FxNP9+ci//eWsx/4d7Rf+Eez//fHE0/4N3
+        O/+LgUP/hnk7/4h1OP+Pe0D/iHg9/4d0Ov+Ldzz/i3Y5/4JuLv+EcS7/f3Ev/3ttK/99bif/eWgn/4Jw
+        Nv+Ne0L/h3A+/4ZkPP+BXzb/c1Io/2RJFP+LcTr/h202/31mJv+Bbyv/j31U/3RiM/92Yij/eGc0/35v
+        P/+RiUz/eHFH/5KPm/+Tqbf/l7Gw/7PEuv/j9eH/1enY/+f08v/E0Nb/iJ2k/6m9x/+vwdD/i6aq/523
+        tf+itLX/vNXL/9fx4v/x/fj/9/36//f+9P/5+/T//Pv4//f99v/1/fP/8vvx/+n02f/K1KP/0tOq/8C9
+        l/+npWz/raRo/5mISv+SeUD/el0q/2hIEv9/Yyj/hGwv/5yFSf+Zh0X/cWQZ/2laEf9vXBP/cWIN/46J
+        Sf+hnnL/kYdF/3FdHP9zVx//bVIe/2RSHf9pViH/bWA6/29dOP93XTn/c2A+/35mOv95YDX/fnBH/3lq
+        Mv9/cDr/f246/35lOf+Cbz7/f3M8/3hrNv95azj/d2k1/3RmL/96bTD/fnI1/4J0OP+Eczv/hHM7/4Rz
+        O/+Bbzn/fWs1/39vOP+BZTb/loRk/8XBn/+dlmf/kItW/3tyOf+NgEP/iH1C/3trMf+DbDT/g3E2/4Jy
+        N/9/bzT/fm8x/4FyMP9/cC3/eWsn/3NrJ/99cC3/iXUz/5B9O/+JdzX/iXc1/416PP+KdTz/hnI4/4hz
+        N/+NdDX/inIv/4dwJ/+CciP/gXQk/4J2Jv+Acib/e2ol/4JvMP+WgUj/l3xJ/5R6Rv+SeEX/gGo4/3dh
+        L/95YzL/dF8s/3xnMP95ZSb/fWwp/4BwLP+Dci3/g3Mu/46KRP+ShVL/lI2F/6Gwv/+twMn/ytjV/8LV
+        yf/N49f/7Pj1//n////a4OD/0dba/8XI0f+ls7//rsDB/97s3f/O6c7/tda7/9Xs2P/b7dz/4/Tj//T8
+        8v/9/fn/9/71//X+8//1/PP/8f3w/+Dty//O0Kb/1dSo/768gv+ro2r/n5Jb/415Q/+Lcjz/bEwX/2pN
+        Fv+FajH/ooVO/5yESP9pWBX/aVgW/2paF/9qXxP/dGkl/6KaYv+VjEn/b18a/3NaH/9wWB//algf/2tZ
+        H/+Ea0f/eGRA/3JkP/90ZD3/d10w/6GQcf/p6tb/jY5q/3duQf+Ec0D/emZA/4x+U/9+d0f/dGow/3lt
+        Mf95bjP/fG4z/4FsMv+BbTP/g282/4JxOf+Eczv/gXA5/4BxNf94ZDD/blQr/5aGcP/R0sn/ys+8/6Cd
+        df+UiFP/fm41/4l2Of98czP/fXAw/4RvMf+CcDP/f280/4FwNv+DdDb/gnQy/39xMP+CdDP/enIv/39y
+        MP+FcTD/loNC/499PP+IdjX/iXY4/4l1O/+JdTv/inQ5/41zNf+PdzT/kXsy/4h5LP+GeSv/hHcp/31w
+        Iv94ah7/cGEa/39tL/+diFb/oYtZ/6WPXf+cjFj/kYJO/4Z3Q/+FcEH/g2o7/39qM/96Zyr/dGIj/3Be
+        H/+FdTT/lYxA/5yPS/+3tZL/w8/P/6W1uP+kubn/rcPC/8vc2f/f7eX/7/ns//f57f/29/D/+/r5/+fy
+        +P/q+fb/7frk/9zu0P+70rj/p8Ot/7jVwv/A1sX/2Ofc//L59P/2/fX/9f3z//b+9P/z/fP/8vfp/9PT
+        rv/Dxov/vbuB/6+nbv+pnGP/lIdP/458Rf92Xyn/aVAY/4NoLv+dgkr/ln9E/2dUFv9sWBr/b1oc/3BZ
+        GP9vXRz/hXk3/311J/91Zxv/emQg/3pgIf91XiD/dF0f/3JXMv+Yg13/k4hi/3NjOv9xWS7/eGpO/7K0
+        pf+prZH/mZRn/4N4QP+Fc0r/0MOc/3VwP/9xaS3/dmwt/3pvL/99bTD/gGsy/4BrMf+Dbzb/gXA4/4Jx
+        Of+Dcjn/g28z/5eLYP+fjHP/zs6+/8DTxv+Mj3H/dWk5/35sOf+FcDr/h3E2/350Mf+AczD/hnQy/4Rz
+        NP+Dczf/gnI2/4R1Nv+BdDH/gnQy/4V4Nv9/djP/f3Iw/4Z0M/+DcTL/h3Y3/4h3N/+HdTj/jXk//4p3
+        Pf+IdDj/inQz/4p0Mf+NeTL/iHou/4Z6LP+Acyb/fnEj/3VoG/91Zh3/b18d/4NyO/+sm2b/sKFt/6mc
+        av+lmWb/n5Fd/5iJUP+Ugkv/k3xS/4NrQf9uWCn/Y0sh/2lSKf+Phjz/pJlO/7q4gP/EyLX/ytPP/5et
+        tf+txdD/usvL/87e1P/s+un/5vfl/9Tk1//c6+P/5/Ts//b/9v/2/PD/9fvv/9Tg1v+nvLf/rcnD/6nD
+        s//P4dX/7fnx//D68P/x+vD/9f3z//P89f/1+fb/4uXD/8DGh//Cvob/s6ty/7Sncf+gk1r/mYhO/3pj
+        K/9xVx//f2Qr/5t+RP+VfEH/gnA4/4NzPv9tXCj/dFkh/3BaHf99biz/enAk/3NmG/94ZCD/eWEg/3Ze
+        Hv92XR3/alQr/4ZwR/+Fb0b/a1gt/35sRP96ZkX/eGJG/4FvS/+Ed0P/fXQz/35sNP+MelD/fnZA/25q
+        Lv92bDH/f3Av/39uMP98azT/fGsz/31sNP9+bTX/f242/4NxOP+Lbz3/1+bc/93u7v+lpJT/nZ5+/6ym
+        cf+Lf0L/hG03/4VvOP+Icjr/gXIx/4FzMf+CdTL/gXMx/4N1M/+EdjT/hng2/4N1M/+DdTP/g3Uz/4J0
+        Mv+DdTP/f3Ev/5ODSv+Pfkf/fGs0/4R0O/+EdTn/hHQ6/4N1Nv+AdC3/fnEv/3xsMf99cCz/fnIq/31x
+        Kv97ayj/eWcn/3RiIv9uXRv/aVcW/3VnKv+qn2j/t7WI/7q4h/+7toP/r7Fx/6ipaf+imWf/l4ta/5KI
+        Vf+FdVP/hnNc/4V/T/+Lg0z/opZb/7Opcv/Avpz/x9Xa/6vD0P/D29X/1+rg/+j57f/q//P/zuPb/7rM
+        y//e5eH/+Pz3//f79//u9O7/7/r0/7XDw/+mubv/vNPO/9fr4f/W59r/vtTG/9jq3v/3//f/8vz1//T8
+        +v/y/OL/zNSk/8e/kP++u4D/ycCU/6ebbP+bilr/jHVG/3BYKP94Xyr/m3tB/6OIT/+DeEj/raqC/6un
+        hf90YSz/bFcg/3ZhKv92ZCr/cWEm/3FhJv9xXyX/cV0j/25bIf90Xzb/gWtC/3JcM/9zXTD/dmAy/3Zd
+        OP90WjX/jHFH/4FnOf+BaTf/gGw5/4N1QP+Mgk7/j4hV/31yPP99bTL/gG40/35tNf99bDT/e2oy/31s
+        NP+Abzf/g3E5/3tsQP+/yL//sLmw/5iYbf98eT7/g3Yz/4h3Mv+CdDf/gnM2/39xNP+AcTD/f3Ev/4Fz
+        Mf+BczH/f3Ev/4FzMf+DdTP/h3k3/4J0Mv9/cS//gXMx/4FzMf+AcjD/iHg9/5SDS/+Abzf/fm00/4Fx
+        Nv+BcTb/gHAz/39wMP99bTH/eGYw/3ZmLP90ZCj/cmIn/3RiJ/94ZSn/c2Al/3FdIP93Xx//bFcd/3Ni
+        LP+1tYP/5eq9/9bduf/F0aD/v8qO/73Ch//BwIf/y8WV/6SdcP+upn//ppx8/4t9Wv9wXjX/jH1I/5aP
+        Xv+3upb/w9PC/8fg3f/Y6uD/zt/S/9Ho2v/A1Mz/pri3/8bV1P/p+Pb/2Ofm/9rq5P/i9Oz/yt7d/73W
+        2f+UrrT/q8HC/7rNy/+owrv/rsW+/9zs5v/z//j/8/z5//j98P/k6Mb/w8KR/8DDh//FxJj/xcWk/6ej
+        gv+Qhmb/hXhU/39vRP+Kc0P/r55v/5WQZv+GflP/yMCU/35pM/98ZzD/fGcw/3VkKv9zYyj/cWEm/3Ff
+        JP9wXCL/cFwi/35mPf+DbEP/dV41/3liMf96YjD/d1oy/21XLP9wZTP/in1Q/4JzSv+DbkH/em8x/3Vs
+        Of9+dEb/jIBO/39uOP+Bbzf/fWw0/3tqMv97ajL/fWw0/31sNP+CcDf/fWoy/6aZfv+bjGj/jYJI/4Z7
+        QP+JbzX/inE0/394NP+Cezf/e3Iv/3ptKv9+cC3/gHMw/4J0Mf+AcjD/gHIw/4FzMf+DdTL/gHIw/4By
+        MP+AcjD/f3Av/35wLv94aC//fm43/4FwOP+BcDf/hXU6/39vNf99bDL/fGwy/3poM/9zXzD/cFwt/3Bc
+        LP9xXS3/cl4q/3NeJ/9yXSf/dV0l/3teH/94XiT/c1sl/3diLv+glGr/5uPJ//r/7//m8tf/2eG8/9TX
+        rP/Jx5j/tbSB/6incf+qpHf/pJhs/419Tv+Lc0v/inZP/5iKW/+9waT/vdbU/8TWzf/E1sn/sci6/8rf
+        1/+1yMb/l66v/63Ex/+qwcT/r8XA/7vSyf+51NL/p8XK/4Sfr/+UrLf/qr/G/4qnpv+atLH/u87O/+z7
+        8f/0/fj/+Pr3/+3v2v/Gypr/wMiM/8XImf+9uZD/p5x0/5mHYP+ViWf/rKWF/4p7VP+glnD/wsCc/4d7
+        Tf+Yilb/hnI7/4RwOP96Zi7/dWQp/3JjJ/90ZCn/dmUq/3FeI/91Yif/eVwz/35hOP+AYjn/emE2/3dh
+        OP9yWDj/b1c0/21ZL/90YDf/g25F/6OLXf96bDb/cm80/3NtM/+RhFf/em88/3xwNf9+bDX/fWw0/31s
+        NP9+bTP/gms0/4ltN/94XiH/kZFk/6qheP+Aazj/iHlB/4ZyMv+GdjH/fHsy/3x0Lf+OgTv/j4M9/3ls
+        Jv99civ/gnMv/4NxMP9/bi3/hG8s/4hyK/+Bby3/gXIz/39wMv98bS//eGkr/3tvPv+kmGj/hXM//4Ft
+        Nv+FdDv/gm8+/3toOP94ZTL/dWEy/3FbMf9sVi3/a1Ur/29YMP9sXCz/alsn/3FbKf90XCj/dF4j/3Re
+        JP99Ziv/iWst/3djKP94cjn/t72d//b78v/9//v/7vjp/+Lt0f/V2bf/wcGU/7i3f/+yqnn/rp13/6aY
+        av+ilWb/nY1j/6mgf//BzsL/ts3P/7fKyv+6z87/uM3N/7vQ0P+kurr/l6i2/5mstf/M4tz/2/Hr/7/Z
+        2P+yztP/nbXB/5eqsf+drbD/pb64/7nQyf/L3Nb/8Pr0//b89//1+/b/+v33/97gyf/AxpT/ycua/7y8
+        kf+dimf/mIZp/46EYv+YkGz/j4Rn/762kf+RiVT/gnI//3lkMP+GdTr/cWIj/3tuKv98cSf/e28o/39w
+        MP9/cDH/e20r/31uLf93YD//fGZF/3VePf9tVzH/cFox/2xTNP9xWDb/d2E3/3FbMv9vWTD/alct/25f
+        MP95bDj/d24z/4t+Uv+Ifkz/d2wx/4BvN/+BcTn/gnE3/4RwNP+AbTz/eWY+/4Z2U/+XmXD/i4NR/4J1
+        Pf9/dj3/gXE4/35vNP90cS3/enAu/4l5OP+Jezr/eWsq/3ttLP+CcTD/gG4t/3tpKP+FcjL/d2Mm/3Vl
+        Lf92aDT/fWw1/4d1Pf99bDT/l45a/4N4Q/96ajH/gnA1/4V0PP98aDj/dGAx/3BdK/9vWy3/bFYt/2ZQ
+        J/9nUSf/bFUt/2tbLP9pWyf/cFoo/3RdKf9xYCX/dmUr/4BuM/+Iby//iHM2/4JyOf9qXCX/hHpP/9DQ
+        vP/6//n/8/70/+377f/i7t3/0NOw/72/jf+4unv/trR2/66qdP+zrHv/s6+E/8jXwv/B197/rb7H/7PG
+        y/+wxMn/pbm+/7HHxP+DlZ7/p7vA/+7/9//q+/D/yuDa/7fQ0P+mwMX/k6ip/5iqpv+20MT/4/ru/9bo
+        3P/n8On/9fr1//f9+P/4/fr/6e7f/8XOov/L0KL/wcKZ/6qXdv+pmX7/qZ+A/4F3U/+GfVb/xb+Q/4uB
+        TP9wYCz/fWg0/4Z2O/96bCv/g3cx/4R6Lv+DeC//g3Qz/4FzM/+CdDH/hHY0/7Gjjf+8r5n/t6uW/3Be
+        O/9qUyn/dVw9/4x0Uv+Ldkz/bVcu/2xXL/9jWjT/bFwz/4BmOv99cDj/dWk9/4d8Sf+MgET/gnA4/4V0
+        PP+HdDn/jHY2/3JjNv+Vi2//ycbA/8HDn/+Tikz/hoJC/4aGSv+voXT/r6F1/3x3Ov95bTH/fGou/3Zm
+        Kv94aCz/emou/31sLf99ain/f20r/3pnK/+Wg1P/xrmM/6Wbcf+AbTz/gGw7/35qOv97czz/eHA0/4F0
+        Mv+BcDD/f283/3RgMP9uWiv/bVon/2tWKP9nUSj/ZU4n/2dRKP9qUyv/a1ss/2xeKf9yXCn/dmAs/3Jo
+        LP91ay//eG4x/4NvL/+NdDj/iGk0/4RqMP9xXiP/bVor/52ScP/j5ND/+/3y//z////5//P/6vDU/8DG
+        mv+8v4D/vL5+/769hv+ztoL/wNK1/7bK1f+tucz/o7S+/7LEzv+0xc//wNfS/6O4vP+1zMv/6vzr//L+
+        7//p+vD/tczH/4mlpf+etbH/tMe//6fEs//T7dz/5fnn//L88//4/fn/9/74//f9+//v+Oz/zNmx/8bP
+        pv/JyqH/tqOB/6KRdv+onoT/qJ99/5WSXv+vrHT/g3lG/3NjMP96ZDL/e2sx/35wL/+CdjH/hnwx/4B1
+        LP+DdTT/hXY2/4Z4Nv+Mfjz/iH5Z/4d6Vf+HdVL/emU9/3NdNP9wVzf/bVQz/2lSLP9xWjT/b1kz/2lX
+        Mv9sWjL/fWs9/31tN/99bz7/mY5g/31zPf9/cTf/fm87/4RyOf+Ebiv/fndR/83TxP/NzMX/oZ17/396
+        PP93bDL/cmUx/3hqMv97bTT/e281/3JiLP90YS3/blwm/25dJv9xYCr/dmYp/3pqK/92ZCr/fG03/6uh
+        cP92aTn/dmc4/3JfLv9sWSf/cF0r/3VhKf95aC//g3dA/46BSv90YS3/b1ot/2hTKP9lUCP/ZE8k/2RO
+        Jv9mUST/bVkq/25ZK/9tXS3/bl8t/3VeLv94YjD/dGow/3ttNf+Abzf/gG0t/4lzNP+Lcjb/fmcp/39o
+        LP9/Yyr/bVgj/3FpO/+TjGj/w8Gn/+Hozf/6/uz/+Pvy/9bhtv+8x4z/wsiH/9DQkP/O2Ln/qL7G/5Ol
+        tv+Rpbb/nLC9/6rAzP++08f/3e/l/9To5f/W6N7/1uXX/83d0v/j9ez/0Obc/9Po2//N4dL/tc+7/8Pb
+        yf/j+On/9v74//7//f/9//z/+v79//D88v/W4sT/wMuj/8nLof+ypoD/rZt4/5WAXf93ZDj/hHo9/42J
+        SP9+dj3/fW82/4NvOP+DcDT/hHIy/4h4Mv+IeDL/iXg0/4t5OP+NfTz/joA+/5GDQf+MglD/hXZF/39o
+        OP99Zzr/c1w1/3NZOf9yWDj/eGA8/3JaNv9uVjL/alEs/3BeNP92bD3/dWMx/4FwQP+Th1//a18x/31w
+        Of91Zzj/dmM1/2pVJP/AuaT/6Ozv/5CLd/95b0f/fnc9/3tqNf91YDD/eWgt/3NjJv9vXSb/bloq/29Z
+        Lv9qVib/a1cm/25ZKv9yYSn/bFwi/3BcLP+jlGT/ZVwn/2JRHf9wWib/bFkm/25bKP9vXCn/dl8o/3Zg
+        K/9uXS//f3BA/29bKf9jTiL/X0gh/19IIP9gSSH/ZE4l/2ZSIf9tWib/c2As/3JjL/9wYi7/eGIw/31n
+        M/96bTP/hXI6/4t0O/+FcjL/gnEv/4BwLv99aCb/fGIk/3peKP9/ZCn/hGwn/31mKP99aTD/iH9C/56X
+        ZP++uJP/19a7/9fXuP/Py6D/2NCW/8zMov+osr//jZm6/4WdtP+JoLL/nK60/5mfh//M1L3/1+nf/9To
+        3//W59z/xtfN/8DRxf/i8+P/4vXj/+H04//r9uf/5Ozi/+Xs6P/7/f3//v7+//7+/v/5/fz/8f71/+Pu
+        1v/I06r/xcqa/7Wvgv+rmW3/n4ZY/3ljL/+LfUL/oJpc/5ONUf+Aczf/hnQ5/5N/Rf+KeDn/jn05/417
+        Ov+LeTj/j307/5KBQP+PgkD/joA+/4yCUv+Nfk7/inNE/35nO/9xWzP/cVg4/25VNf91Xjr/d2A8/4Nq
+        Rv9/Z0P/gG5F/391Rf9wXC7/cFw0/4Z2Vf9xYzv/inpI/29dNP9wXjf/fW9H/7Cnkf/b19L/kYpn/4yA
+        Tv+KekX/gW84/3JgLf9vWi//a1Yr/2hVJP9jTiT/YUom/2NOJP9oVCj/b1ow/3NgLv9sWSX/inRK/3to
+        PP9kUh7/cFgl/3VYJ/9sWCX/aVcj/2xZJv9oXSP/alwl/3JZLP9tVSX/ZVMh/1xHG/9aQxz/XUce/19K
+        IP9lTyb/alYm/3JfLP91YS//dGcv/3NoLP99ajD/hXA1/4Z1Nv+Odjj/kXU3/457Ov+HdTT/gG4u/4Fr
+        Kf+BZin/gGUv/4dnMf+PbjH/kXc0/5eDOf+Vfzb/i3kw/4V6L/+EezD/j4k9/6ChVf+pqV//sKdr/7Kv
+        of+vudP/eo6u/3+Zuf+fpKD/jHtY/6ajg//E2cH/utDB/9zr4f/l9er/2Ore/83f0P/B1cT/1+ra/+n3
+        7f/1//z/3Obm/+Xt7f/4//7/9f38//P9+//0//j/4u7T/87asP/HzZn/uLOA/62ca/+ejFj/e248/6mh
+        d/+2sYD/l5BS/4p8QP+NekD/jn5K/4p9RP+SiEj/i4I+/4yCP/+SiUb/kYVD/4+APv+PgT//kYdZ/5SJ
+        XP+KfFP/gnBE/3ZgNv9uUjT/c1M2/3NVMf9yWzb/jnlT/4JrQ/9sWC//b141/25bNv9jUC//opJ2/3xv
+        TP9tYDX/YE4r/3JfPP+ZkGH/iH5U/5WLZv+ViFz/gnE//4ZvPv+LdkH/dmIx/3FYMv9sUzD/YUgf/11E
+        HP9eRB7/ZEcg/29SK/9zVS7/cFwt/3hpN/+bh1v/blks/2dSIP9tVCT/b1Qk/2lVJP9mUiH/Z1Mi/2VY
+        I/9oVyT/cVYp/25TJf9wWyv/aVIm/11GHf9iSiL/Zk4m/2tSK/9wXSv/cmEs/3VjL/91Zyz/f3Ew/4t2
+        N/+Odjj/jHk3/495N/+ReDf/jXs6/4Z0M/+BcC//gm4t/4RtLv+GcDH/hW0y/4hvN/+JeDv/j4NA/5eF
+        QP+Whz7/lIo9/5aJNf+UiTX/kIs7/5iYSP+YkEL/mpVj/9Tf3f+Hnbz/kKbD/6OXiv+niGD/m4xr/7K7
+        of+2yLj/tMrC/9/z7f/z//f/5fTo/9Pj1P/W6Nj/w97U/8zp5f+vy9L/uc7Q/+/9+v/0/fz/9P36//T/
+        9v/t9uL/09+2/9Lao/+/vYf/s6Rx/5yRWP+Cdjz/o5Zp/8nHl/+npWj/ophe/5+SWP+xrHj/mpBb/5eG
+        Tv+eklX/nJNT/5+XVP+Yjkv/lIhG/5CEQv+upnr/raiB/5+ffv+Wi2j/gmxI/3pgO/95WTX/hmdE/4Fs
+        R/+DdE7/d2M4/3FZNP9wVTj/YU0x/5yLb/+hj3P/iXpZ/4d9V/+Of2H/dmNI/3ZpRf9mVCn/cFor/2tW
+        MP94Yz3/eWA0/3tkNP92YTT/dV03/3FXNP9rTiv/a1An/2lQIv9gTCL/YU0k/29aMv90aDn/ZFsn/2ZU
+        Iv9nUSH/Xkoc/19MHf9aRxj/W0cY/19LHP9iTh//aVAj/2lQIv9mTyH/ZEwe/21UJ/9sUyb/Zk0h/2dN
+        Jf9pTyb/blQr/29bJ/9yYCf/eGUu/3xrLf+GcTD/kHY2/5Z6Ov+Nezr/jHo5/5OCQf+HdTT/hXMy/4Nx
+        MP+Abi//gnEv/4h6Mf+KeS3/jnow/459OP+PgUD/lIY9/5OEO/+Tgzv/jYI2/46FN/+bj0P/nZhF/52a
+        Qv+ek17/4eXd/8be5P/Y49z/pZNr/5t/UP+Sf1v/joJp/73Er/+9187/xd7f/+z17//1/vn/7Pft/+Du
+        3//F3dD/s87K/5y3wv+SrrH/yd3Z//D29v/4/Pf/9P/2//f98//d58T/xtGf/7y8jP+4rH7/nJRd/5OD
+        Sv+YhU7/oqFn/6uuc/+jnWT/n5de/6mud/+up3L/nYVT/62dZ/+bkFX/npRT/5+WU/+bk1D/m5NQ/6Ka
+        bv+jnXX/srGP/8C3mf+vn37/lIFW/5qLY/+Uimz/pJZ3/5mHaP95YD3/c1k7/2xQOP9tUzn/nYRo/2lR
+        Nv9nTjD/eGJE/9bKsv9rYUv/hXpg/39vUv95ZUT/ZFY1/2laOP9wWzT/blwy/3FhOv9rWDn/aFM1/2hS
+        Lf9sWC3/ZVQm/4uHYv/DwZ3/trSQ/66nff+OgFT/VkEW/11GGv9cSBn/WkYX/1lFFv9aRhf/YEwc/2BM
+        Hf9jTB7/Zk4g/2RMHv9oUCD/Z1Ec/2pUH/9wWib/bFUm/2xVJv9xWSr/dl4p/3piK/99ZC//gm4x/4l1
+        M/+Qdjb/lns7/417Ov+Qfj3/l4RD/4l3Nv+IdjX/g3Ew/4BuL/+FczL/iXoy/5ODNf+VgzP/kYI3/46B
+        Ov+QgTn/j4A3/4x9NP+Ogzb/kIc4/5WLPf+Tizz/mY06/5mMTv/f4cz/9f/3/8vJo/+QiEj/lIhG/6GT
+        Wv+ejGH/sKuF/8raw//M4uD/3enn/+/58v/s9+z/5vTk/9r04f+92tD/qcfJ/5ezs//M4Nz/9Pr6//n9
+        +v/z/vr/+P35/97nyf/B0aP/ub2R/7myiP+klGn/lYJk/5aGXP+Yj1H/lpFX/6eaYv+fjlf/l49a/5+W
+        Yv+mm2f/rqJr/52RVv+RiEf/mZBN/5qRTv+dlFH/n5dr/5+Zcf+em3j/lJFl/4iBVP+JdlT/lIps/8HE
+        p/+hl33/g3FW/4hwUf9wVTv/aUs4/4FkTP+IbFH/dlY9/3dUOv9zVT3/iXxo/4yId/+mnYz/no96/2hV
+        PP9lWDz/YFQ1/3RiP/+HeFL/gXNQ/41+Yv9/b1P/cWE8/3xuQ/9+cUP/bmRB/3VqSv+glXb/VUso/1tN
+        Jf9WQRr/WkMZ/1tHGP9cRxn/XEgZ/15KG/9jTyD/ZFEh/2dQIv9pUSP/Z08i/25YJv9xXib/c2Ao/3Zi
+        K/90XSz/dF4s/3ZgLf99Yiz/g2Yv/4ZoNP+GcTX/i3g2/5B2Nv+SeDf/i3k4/5OCQP+Mejn/iXc2/4p4
+        N/+HdTT/hXQz/4d2M/+IeTL/kIAx/5KCLf+NgDH/i38z/4x+NP+NfjT/jH0z/5GGOP+UiTv/lIo8/56T
+        Rv+fkD//hngy/7Szk//6+fP/o5Nn/5SJTf+FgDb/mItF/6qTW/+ik2D/usKi/8PZ1//G19j/3+nj/+by
+        6P/S4dH/0OzU/83r3P+72tn/ttPS/+L38//2/fz/+Pv5/+/5+f/4/Pz/3ebM/8LUqf/Hzqb/vbuT/6yX
+        dP+JdGX/oJJy/56RU/+hl17/ppRd/56JUv+Sg07/lIpV/7Gsdv+nnGT/n5NY/4uAQP+KgT7/kIhE/5iP
+        TP+oo3r/q6J3/7GjdP+nn2v/iYFP/35sQv99akL/fWxQ/8a4qP+CeFr/g3RT/3NcQP9wUjz/dlhH/3tl
+        Uv9sQzT/fFVB/2lROf99Zlz/vr24/6utqf9xZFf/b1dD/3toTP9rWjz/dGJF/25cPP9pWDf/fGxL/4p9
+        XP+JgFv/l5Bm/4uGVv9zbC//ZFMd/4p9YP+zrZX/S0If/1hEHP9eRxv/X0sc/2BMHf9iTh//ZFAg/2dT
+        I/9mUiL/Z1Eh/2lSIv9pUiL/bVkn/3FhLP90Yy//cmAu/3JeLv96aTD/gXMy/4N1Lv+Fci//i3Az/4hx
+        M/+HdjT/jHo5/5B+PP+Xh0L/k4M+/4x8OP+Jdzf/iXg1/4l6Mv+JfC//iXwv/4x8N/+NfjX/jH8u/4l8
+        Lf+Lfi//in0u/4p9Lv+NgDL/lIc4/5KFOP+Xh0H/oJJJ/5CHN/+Lfzb/joNI/6Oacf+CcT3/mIFE/5F9
+        O/+VgkD/nIlI/5uDRP+ekWP/vs/I/6bBz/+2wsr/1ePm/9Pj4P/J4c7/wtvR/7zT3P+72tr/zeje/+vx
+        7f/5+/T/8f32//n8/P/h5tH/x9On/8zTpv/DxZr/qp1z/459Wv+2sJf/rKWA/6CTWf+Nf0j/joBI/4R4
+        PP+JfkH/i4FE/5GCSv+Yh07/i30//4d6N/+MgDr/lopF/7Kxjf+yrYb/r6V6/6Kfa/+enGj/kYZZ/4Vy
+        Sv99ZkP/nYpv/5OEaP+Gd1b/inRY/3VXQf95Tj//nol3/5WLeP+Lfmb/hnJa/8GupP+6v7v/s7u3/6Ga
+        jf9uWkb/cV1C/3BeQf9uXD//bVs8/2taOf9vXT3/ZFQx/2JWK/9jWCn/aWAt/3VpLv93Yib/fG5F/9fT
+        tf98c1H/Uj4W/2NMH/9kUCH/ZVEi/2ZSIv9pVyH/alki/2tZI/9xXCb/blgj/3FcJ/91YCj/gm0x/39p
+        Lv99ai3/e24p/4BzLv+DdzH/f3o0/4V/N/+Ngjb/lYU//4ZzM/+TgUD/ing2/4V1MP+LezX/jHw3/4p4
+        OP+KeDb/iXox/4h7LP+Iey3/iXk0/4R0L/+DdSr/hHYs/4d5L/+Iei//iHkv/4t8Mv+MfzH/lIY4/5qK
+        Rf+Ofzf/kIIz/49/OP+IeDP/gHYs/4yCNv+FeS3/hXU1/4V1Of+JeT3/kYBA/4FxNf+VlX7/l6q5/5Sl
+        s//F1uD/v9TX/6jGu//Z8uz/xdXZ/8nb2f/k9O3/8vjz//b99f/y/vb/+fz8/+Ln0v/J1aj/09qs/8bI
+        nP+poXX/j4JW/4p/V/+6roH/pZde/4t+Rv+Ddj7/gnY9/4F1PP+Xi1L/o5NZ/5CBQv+Qgz//jX86/459
+        OP+Tgj3/sbWV/7Kxjf+wqoP/mZxp/5mdZ/+koXL/indS/45yR/+CbkP/knxk/5uLa/+EblL/eVpE/6KC
+        cf/Ox7P/wsSv/5uWff9sXUT/in1y/7rEv//E0s3/o6GT/21gS/91Y0j/dWNG/3NhRP9yX0D/bl08/3Bf
+        P/9yYT3/dGQ1/3hqNf99cTn/d2Qu/4VrLP96ajL/gX1Y/6Sbev9gTCT/aVIm/2xZKf9rVyj/alYm/3Nj
+        J/9zYyb/dGUo/3RiJv9yXiP/bVkc/2xcJv+Ui1//wLaL/3lvPP93aiX/c2Mo/4h0Qv+HgFv/ureK/7Cs
+        b/+ThkT/kH08/4BuLf+CcC7/gXEs/4l5M/+JeTT/i3k5/4t6N/+JejL/h3kr/4R3Kf+Dcy3/gnEu/4Bw
+        LP+Cci7/g3Iv/4NyL/+Dci7/iHc0/5GDNv+Yijz/jn45/4t5Mv+Ldyn/i3Uv/5B5Nf+QfjD/in03/5mS
+        VP+dkln/kYZN/5GFTf+Bezv/hnYs/4l2Tv+Smqr/iJ2y/6rAz/+jvMb/rtPS/9Tw7f/u+fb/+fv4//z/
+        /P/4//r/9P/3//P+9//6/f3/4OXR/87arf/W3bD/v8GU/66qfv+KgE//hnQ6/6eVWv+gk1z/j4JK/46B
+        Sf+GeEX/f3A//4R1RP+Iejz/in04/5aLQf+YiUD/lX06/5F6Nv/IzLv/2dnE/8jDqv+oqIH/mp1v/5WX
+        bf+WjWH/i3ZG/4h0Sv+SfV//uqmb/6mdiP+Nh2j/opl4/5GJbP+Ngmr/npR8/5yWfP+XjXz/pqWb/9rl
+        3v+koo7/i39g/3duTP91akn/dGNE/4BwSf96bUD/cWQ4/3ZpOv9+cTv/fWs2/4l0Pv+CcTL/fGYx/3xq
+        LP95cD7/vLON/3VmN/9pVib/bVkp/3BcLP99aTj/c2Ip/2xcH/9xYiP/f2wk/3dpI/+Vi2L/sKuD/6Wf
+        ff+Zlmr/nZxp/5yWZP+LhFX/sqt9/8PFqf/W1bP/sqdz/4V3N/95aCj/fGYr/4BnLf+BcSv/iXk0/4d2
+        Mv+IdzP/iHgz/4l5NP+Gdy3/g3Qq/4BvLP+Bby7/gHAr/4FwLP+AcCz/gHAr/4NyLv+Sgj3/k4o+/4l8
+        MP+OdS3/jXMs/4RzLP+EcS3/hnQu/4h3Lf+WhUL/mYlN/5uLUv+ejlX/oJFY/5iGTP+Kejj/dGw3/5mc
+        lv+rtMb/rre6/7nO1v/Q5Or/4PHx/+v69f/2/vj/+v75//j++P/1/fr/8/38//n+9P/e5sj/0N6s/9vi
+        s/+5upH/r6R//418UP+EcDL/opNN/56WVP+dk1T/lYpQ/5OHT/+Fdzz/jHo7/4Z4Nf+CdjD/jYI7/5mK
+        RP+fikb/lH87/93t6f/o8+z/1tzR/93m1v/i7tv/097M/8TTvf+XpIj/kI5s/6yief+emXr/09G7/8fG
+        uv9za07/l4tr/5KEa/+il3//wLyi/393ZP+fmIn/pqiX/4iEav+Ifl7/fXdU/2hgPf90ZEP/f3BG/31y
+        QP94bD3/fnM+/4Z/Pf96cjr/gXpK/4OIYf+9up7/r6p8/4+KVv+upnf/d2s2/3ZmMP99ajb/dWMu/4Bu
+        Of9yYCn/aloe/3BhIf+BcSv/d20m/5yRbv+Rh1T/c2Ik/3FhIP9+cDH/gHdF/5SLWf+akF7/jIRN/3tu
+        MP9/aSL/hXQu/3pqK/97Yyv/g2gw/31tKP97ayb/gXEs/4NzLf+Dcy7/hXUx/4R1LP+Ccyr/gW8u/4Bu
+        Lf9/cCr/gXEs/4JyLf+EdC//ino0/5uLRv+Ofzn/jns1/492MP+HcCv/g3Qv/4R0MP+DdC3/gHMn/31t
+        J/+AbS3/gG8w/35vMP9+bzD/hHE2/4h6Ov91cDD/nZt3/97kzP+1uZb/1+bU//D99//u+vX/7vv4//X+
+        +v/5//r/+f/5//b9+//x+/n/6/Th/9bgvP/I1qL/1dyt/8nKov/Ft5j/gm1H/4JtNf+hkUz/lYpF/4t9
+        Pv+KfEH/hXs8/4N3M/+LejH/i38x/4yDNP+Qhzj/mY5A/5iNPv+Vijv/sb6s/7S/qf+us5j/qrGf/9bf
+        0//P18r/z9zP/97u4P/t8+X/4OHO/5aZcv+HinD/u7y1/4uDZ/+bj2//qpuD/4J3X//Fwqb/r6iW/7uy
+        of+Lg2L/gXlc/6Kdgf+Mh2X/gHZT/4R0VP96a0H/fXJA/4B0RP+Gekj/hHtJ/4eEZP/N0sL/0OLP/8rM
+        uf+fl2n/d3M5/4V/Sv+Adjr/hXc5/4V1Of96ay7/fGww/3NiK/9yYyf/eGor/3pwNP+LgkD/jnlQ/2pc
+        F/98cCH/eGkl/3xqL/94Yyv/dGAo/3FcJf9xYhz/dWgf/3tvKv95bir/d2cn/3xkK/+FaTL/g3It/4R0
+        L/95aSP/fGwn/4JyLf+Cci7/gnMp/4FzKP+BcC//gXAv/4FxK/+Cci3/jHw3/4x8N/+Pfzr/lodC/5J1
+        Nv+QczX/gm8v/4l5N/+HdzL/gnIu/39wKf99byP/fm0n/4BuL/+Aci//gnUx/4V4M/+GeTz/h344/4p/
+        L/+JfUH/lZVb/6ula//Ex6j/5O/Z//j/8//1+fr/9vr6//T79f/4/vn/9v34//H99f/j7tX/ytet/8TS
+        nv/L0qP/0dOq/8e5nv98ZUf/gGk3/5SBQP+OfTj/i3g6/4l1O/+BeTX/hHow/4p8Lf+KfDb/o5ZU/6eZ
+        Vv+XjEj/mJBL/5yTTv/U4cb/ubud/7i2k/++wav/3+XZ/8nOwf+tsqH/oKSS/+zz7//6////5uvY/5qg
+        jf/M1MX/oJ6C/5aQcP+qpYf/kYxx/6qljf/Eu6f/m5B5/5eMZ/+Ad1b/uLKU/4mCY/+Eelr/nY5s/4V4
+        UP98ckb/hHpO/41/U/+CclP/v8O7/+Px8v+iqo7/endP/3xvOP94bzX/mpRc/4qCRf+AdDf/gnM5/4Z3
+        Pf+Sgkf/f2st/4JtMf+Fci//eXAv/4qCRP/Dsoj/cmct/25pI/90aSz/dGQr/4FqM/9/aTL/gGkz/3lr
+        Kv9zaif/cGkr/3JnKf92ZSf/eGQo/35qLP99bin/fW0r/3dmJf94ZyH/gG8p/31sJv9/byj/f3Aq/39t
+        LP+CcS//hnYx/4d3Mv+KezX/l4lA/5yMRv+Cbiv/hmws/4JqKv97ayv/l4lG/419Nv9/cCr/fW4m/3xw
+        I/9+cCn/gHAv/4B0Lf+Bdiz/hXkw/4R5Nv+HfTX/jYEx/4h8NP+AfDj/mo9X/8rCov/N2rX/8vvl//z8
+        /v/19/r/6vDt//X59//z/Pn/7v30/+Ds0//N167/xdGh/8PHmv+8uY3/tKGC/3BXOP98ZDj/h3E4/4t2
+        Nv+Qej7/lH9E/56VT/+EeSz/iXoo/4JxMv+Gczz/lIFI/5iJUv+0q3f/wbqF/8PWv//KyLT/yMqz/83R
+        vP/Nzbv/3d7M/97hyv/Hz7j/5e7k/+/69//n9Ov/zdrQ/8XSyP/Bx73/ur2v/8DCrv+2tJ//trCa/5aK
+        b/+OgWH/jIJg/4F3Vf9+c1H/h39h/4B2Vv+Ke1b/iH5V/353T/+NhGD/hXxZ/7S0nv/Y5OD/k5mP/4B7
+        Vf93dTr/jYRR/4Z7SP+OhUv/l45W/4Z8Qv99czX/iX9C/46ERP+Dci3/fmYx/4BtK/+Ady3/fHM4/5aN
+        ZP+5sIj/j4dM/3RmKP+Aby//fm01/35tNf95aDD/eGoq/3lrKP94aSb/dmYp/3hpLP95bCn/fHEp/3lt
+        J/91Zyf/d2cs/3VjIP92ZCD/d2Ui/3hmJP95Zyf/e2ko/4BvLP+FdTD/h3cy/419N/+YjUL/j344/3de
+        IP9zYiP/cWQj/3hqKv+EdDL/hnUx/4JxLv+Bciz/fnMo/3tvKP96bCv/e24q/3ptJ/99cSv/g3Yx/4d6
+        Nf+Jezj/joQ+/4eEPv+GfUb/rqJ2/8nTn//e6Mb/9Pfy//f6/f/y9/f/8/b2//T8+//p+/H/3ObN/9HW
+        r//T2bH/vbqP/6yebv+XflX/bVEr/3hfNP+Ebjv/gm0z/4JtNP+YhUr/mo1J/4d3L/+JdSf/gW8r/4Fw
+        MP+Bby3/hHQ5/6OaaP+uqnX/nqGB/62kjv/h5Nf/trqh/62riv+vro//qamI/6qtj//Cx7b/0djQ/9vq
+        5f/V5eD/yNjT/8LU0v/N1dL/ysO+/5yThP+Wk3X/koln/5iMaP+Uimn/iX9d/390U/+fm3b/f3lQ/4l9
+        Uf+DfUj/d3ND/35yU/+gmYX/6v/5/9ng2f+JeV//paB5/3JwNf+GfEj/qp9t/4B4Pv+GfEP/npZc/395
+        P/93cTj/cm0z/3t5Qf+fmXD/lpRf/4J9Nv+If0P/q6F5/761jP+EfEH/fXAx/4BwL/9+bzH/f3Ay/4N0
+        Nv98bSz/eWwp/3psKv99by3/fG8q/31xJ/99cyb/eW0n/3VmJ/94aC3/gnU2/4t+P/96bi7/fWws/3ln
+        Jv9+ayv/g3Ev/4d3Mv+Lezb/mIhE/3xvK/9uWxz/f2Us/4l2PP+aik//e2sx/4RzN/+GczX/gm8x/39u
+        Lv98byr/eWoq/3JhKP9xYCj/cF8n/25dJf9zZCj/fW8v/4R1Nv+PgUP/iXpA/4t7Q/+Bcj3/r6h3/9rc
+        tP/e7ND/6fTo//L48//2/Pb/8frz/+j25//Y38D/zM2f/8rNnf+5soH/s6Js/452SP9tVSn/e2Qy/4Fv
+        N/+CdDj/i35C/4R3O/9+cDL/gG8s/4dyKv+BcSj/gnQt/4N0LP99ayr/f2oy/4JzOf+opX//rqSN/77C
+        uf+4wrL/5OzV/7/Ltv+7wqb/xcSl/7/Arv/Aw7n/4fLw/+Hz8v/P4eD/wuDU/7LEs/+mnY//l4x0/5CO
+        af+elnH/oJZw/5eNav+OhmL/hH5a/3lxTP+CeE7/gXNI/4B3Pf96cj3/dmhM/5mPhv/j7/f/3Obd/4B5
+        UP+Nh17/bGk8/3BqNv+Adz3/fHI4/391Pf9yaT7/xL6k/9LIq/+If1n/jI9Z/4aGW/+JjFj/h4I+/3Vr
+        Lv+dk2b/oplq/25mKf+CdTj/hHU0/4N2Mf+BdDD/h3o2/4ByMP99by3/fnAu/31wK/+CeC//gnkr/393
+        KP96bin/gHIy/5KER/+Jf0X/p55k/6KZX/+hk1X/hHQy/39uLP+Kejb/iHo0/4t7Nf+Ofjj/k4VC/5N/
+        Q/+BZDH/fGcy/3RjLP+KeUP/hXM7/4NvNv+CbTX/f2wx/3ttLf95aC7/cF4p/25bKf9uWyn/a1gn/3Bd
+        KP93ZSz/g3I5/4ZzPP+BbDn/gm83/35sMv+JdUT/xb+R/8nbrf/Z6Mz/5e3d/+fv3//p8+L/4OvS/83S
+        rP/Ly5v/urqH/6+mcf+gjFT/j3ZE/3JaKv+CbTX/lIZL/56WW/+SiE3/eG0y/3lqLv99aSn/hGwp/4Ry
+        Kf+EdSj/g3Uk/4dzK/+FaS//fWYq/5+aaP+fm3P/qaaL/7e3pv/M0sT/0t7P/7zMuf+0wa3/0t3Q/+/5
+        8v/s+vf/5fPx/9zq6P/K4dj/ydfE/7u1lf+tpHz/oZtz/6GYd/+nn4D/qaJ+/5eLaP+Le1n/iHdS/4Bv
+        Sf91ZUD/cmA2/3lsSf/PzL7/7Ozr/+7z+v/r+PT/fIBc/4yHZv/HxL//f4FS/3t1K/98cDf/enFB/4mG
+        Y/+3tp//iYBg/3NrMv97cDH/eG0v/3drLv+EeTz/gHU3/3RpK/+GfDv/fnUz/4+DSf+Je0L/g3Yw/4J2
+        MP+DdzH/g3Uy/4FzMf+AcjD/fXMv/4J7NP9+djD/gXk0/4d+PP+RiEX/oJdV/4B5P/+HgEf/ioNK/46G
+        Sf+Xjkv/hXUt/5GFOf+GfjX/mIpE/5mIRf+Uh0L/qJRX/4VmNP9zXin/gHA4/7enb/+Jdj//fmky/4Jt
+        Nv9/azP/fG0v/3ppMf91YTH/blwm/2taIf90Yyv/cV4n/3VfKf9/ajP/fGcw/3ZlLv98azP/gXA4/4Jq
+        NP+fkFz/x8eV/8/Yq//U3rb/09m4/9fevP/Q26z/zdKl/8LDlv+0t4H/oplk/5yJVv+McED/eV4s/4Rx
+        N/+cklX/ko1Q/4BzN/9+bTH/fm4p/4dyLv+Nci//inMr/416K/+Rgib/jnor/4ZrM/+EajD/p5pe/6aa
+        af+wpH//uLqk/7vIuf/C08L/wNjG/8nm1f/c9+z/4vr1/+Ty8P/p9/X/5PLw/9Dg4P/C0b7/r76M/56l
+        c/+bmXf/mJR3/7a0m/+ztZv/jH1m/51/av+HgGH/kZJw/5eWc/+YmoP/zdPL/8nQ0f/u9vj/6PX2/+7+
+        //+zt6T/rbGf/+rt5/95dFD/fnU4/3NtN/95dE3/r62D/398T/9zcUf/kJJY/5+ZX/+el1//kIlQ/4B0
+        Pf+Yi1T/joFL/390N/94by3/nZJX/5eJUf+CczP/gnQz/4FzM/+HeTf/h3k3/4R2NP+BdTT/gng4/5SK
+        Sv+Ui0n/lo1K/42FQf+Tikf/pJha/4N3Ov+UiEv/l41O/4d9Ov+Pfzj/lIU4/5GGO/+qomP/qqNv/46D
+        Tf+Le0T/i3U+/31qMv+CcTn/i3pC/4l2P/+CbTX/emUv/31pMP95aiz/dmUt/3NgL/+Bbzn/fGwz/4V0
+        PP92ZCr/eWYq/3xpLf97aSz/emsu/35vMv+AcTT/g3Q2/4d6P/+soGv/yMiX/8fNoP/S1a//ztSt/8nV
+        p//Fyp3/v8CT/7a5g/+immX/m4hV/4JnNP+BaC//hHM0/4d8Of9/dTP/g3Ex/4RvL/9/byr/hnEt/45y
+        L/+LdSn/jHgq/4t3Kv+NdzD/inEy/4duL/+gnW3/paJ+/7a1nP/i69n/3/Lh/9ny3//X797/5PTq/+Tz
+        8P/n9PX/4e/t/97s6v/l8/H/3Ojq/9Le2P++zrv/o62R/6mqiv+8u6P/tbWi/8fQvv/L0sH/tryr/9je
+        1f/DycT/y9HL//P69f/w9PD/p6ml/8LEwP/q/fv/3PD2/+Lo5P/v+/f/3efg/3RnTv91aTf/bWs5/6Gf
+        ff92cUv/in1Z/8vFrf+MkGv/d3RC/315Rv+Gg0//lIdW/4h4R/+Of0//jYBH/4qAPv+HfEH/g3Q9/4d2
+        PP+NfUL/gnE3/3tsLP+GeDX/hXc0/3ptL/+il1z/uK1y/35zNv9/djP/jINA/6mfXf+LfDr/gHAu/5GB
+        P/+YjUz/jINA/4t7NP+UgzX/kYQ1/6SgZv/V17H/raR8/6CTYv98bDH/i3pA/4FwOf/Ar3f/mIVO/6CK
+        U/+plF3/fWkw/3VlKP95aDD/fms6/4FvOf9vXib/cWAp/3xrLv9/biz/gG4t/4NyMP+FdzX/iHo4/4x+
+        PP+LgT3/i34+/6GKUP+5snz/x8uZ/8/Oo//Lz6X/v8ud/8HHmv+7vI//qq13/6CYYv+ahlP/e2Ir/4Vu
+        L/+Rgz3/iH00/35wKv+Fbyr/hWwn/3xrJv+Aaif/iW4r/4x3J/+SfjH/i3Iz/4lwMf+PeTP/j3gz/6+4
+        kP+stJ7/y9DR/+317v/j7tz/5PDf/+Hv4v/q9/H/8vr1//b8+f/o9fP/4O7s/+Lw7v/n9er/5PDl/9zn
+        4f/S39b/1OTV/93m2//O2c7/z+nb/+X77//o/PH/8vz6/4iJg/9uZVH/hHxl/5yXgf+lnoj/s6+Y/8nQ
+        u/+zt67/sa+s/7e+uf/j6uT/39/X/6OqmP/Q3cj/z9bI/3p7ZP+PkHP/0dS//4F+V/90ay//fHdB/5SV
+        Z/+Ri1X/in1H/416Sv+NfU7/kIJJ/5KCS/+XlWn/hoFL/4t7Rv+rpm//nZZj/4h7RP+Jejn/f3Y2/5GK
+        TP+EeDb/e28o/314Lf98cij/kIE5/4V2M/+Iejj/g3Uy/4V5Nf+Sh0H/hnkz/42BM/+OhTT/fHI4/4+G
+        Yf+wrIz/u7eK/5iQW/9/bzH/hnQ2/49+Rf+lo2v/ws2S/87IkP+jk1v/loVM/4FwOP95aDH/eWku/3Zm
+        Kf99bTH/f24v/4BuLP9/bSz/hXQx/4h8Nv+Lfzn/jIA6/4x/PP+OgD//j349/6OYXv+9uIf/zMmb/8nJ
+        n//BxZj/xsSZ/7myh/+zqH//k3xV/5RwTP+AZDH/iHY3/6OSU/+MfDr/g3Mv/4FvLP+Eci//gnQx/4Nx
+        L/+Hbi3/iHAq/5B3NP+dgUf/jnc6/42BOf+OgDr/vcis/9bh0v/e6e3/5PDp/+j04//l8OD/5/bp/+z7
+        9v/j7Ob/3uTf/+v49v/i8O7/4O7s/9Ti0//a5tj/5u/o/97t6P/X6+b/0uDc/+Dr5f/g7+X/2+jm/+Ds
+        8P/z/Pz/19bJ/4t+Xv+KgFP/e3dF/3hzQf93ckT/kY9v/5qbh//Gy8P/2eHc/8vUzv/V3tr/8v77//D+
+        +f/a4t7/oaSc/6auqP/P2NX/lJF6/4R9Rv90bzn/eHVE/314QP+IfUX/kn5P/5F/Uv+JfUz/gnZK/8HA
+        mf+hnGf/jntI/6qlcP+fnGf/jIFK/5GARv+KgEX/iYJG/4Z4N/+Aci3/fXcu/4h7M/+Eciz/g3Qy/4d5
+        N/+FdzX/hXg0/4Z6M/+JfTf/i345/6GSVP+3qHf/uq2I/8vKpP/DwJf/t7N7/419Ov+UgUL/intC/8XC
+        iP+vt3j/oJtf/5+RV/+Rf0j/lINL/35tNf9+bjT/fWwy/31sM/+AbzH/gW8u/4Z0M/+JeDf/inw6/4p9
+        Ov+GeDX/hHY0/4l7Of+CdDH/hXg9/6WZaP+0rX//wL2T/77AlP+7tor/ta2D/7y/l/+im3X/iHRR/3xp
+        OP+ekFT/nY5V/5mKT/+Vh0n/joFD/5WJSv+ViEb/lYNB/4lxMf+Dbiv/k38+/56HTP+GcjT/hXYx/4d3
+        M//J1cz/ydnT/9Xp5v/d8OT/s8Wz/7LGtf/n+u7/6/r0/9/o4v/BxsH/ydbU/93r6f/d6+n/u8m7/7O/
+        sv/X4dz/w8q9/7q7nf+inYP/vLWX/72+mv+yu6j/8v/9/+jy7P/Awq3/i4Fe/31yQf+BeUP/eHA6/350
+        Qv+WjGn/m6CG/8LWxP/1//7/7Pnz/87c1P/j8e3/8Pz7//T6+v/6//3/5ff3/+H2+f/O1sj/jo9i/3Zz
+        Pf96cTP/f3g7/4R5Qv+SfE7/l4FR/5SNYv+Wl3f/n5tx/4BzPv+Tekj/kIVR/3x7Ov94bjL/iHNC/6+h
+        cv+clGD/g3Q6/4t7Pf9/dzT/hXY1/4h0NP+CdDL/gHIw/4J0Mv+GeTT/hHgy/4N3Mf+Iezb/h3k3/4+G
+        Rv+5tnf/s7iF/8bAoP+qqmf/jH82/497Pf+HekH/rJ5k/4x8O/+JfDv/fnEy/3tqMv99bDT/d2cv/3lm
+        M/95ZjT/eGQz/3poLf+EcjD/inc2/4t5Of+Gdjn/gXI1/4BxNP+GeDf/jYA+/4+CQP98azL/i3lJ/7Om
+        ef+7tYv/uLuP/7Gtgf+1rYP/rbOK/7e0jf+nlHH/kYJV/8a+iv/CuIb/mI9Z/4yFSv+7s3n/v7d8/62g
+        X/+ejEv/nYVF/5+PSv+xo2D/gG80/456Pf+fiUT/i3Ux/8LIs//Hyr//3Ozp/+f8+P/J2M3/nqSN/8XM
+        uf/w/vn/7Pfx/97n4v/K19X/1+Xj/9vp5//X6Nz/1OTW/8rc0/+FjXb/hH5Q/4+HXv+CeEj/j4NN/5CN
+        cP/X2tP/xc3L/6eqlv+Jglb/hnpH/3ptPP98cD7/hHdG/5yZb/+9zbX/3O7q/+r79f/j9vH/z+Xj/9/v
+        7P/0/vv/7vDu/93k3//K3dH/t8W1/3V7X/96eU//c2xD/3ttSP+BdUr/gXhJ/4J5Sv+FgEv/mpp0/6un
+        k/+EfFn/i4ZY/417S/+VgU3/kIpQ/3x2Ov91YTb/hn1N/4V6Qf+Kdj3/intA/5CDR/+RgUT/gXEw/4Z0
+        M/+FczL/gW8u/4FyL/+BdDD/gHMw/4Z5NP+Kfjb/gngw/4d/Nv+VjlH/vbmI/6ifY/+JeDj/iXc7/4h5
+        P/+Mez7/loFA/458Pv+Jdz3/g3A3/39sM/97aC//d2Mx/3RgMf94ZDX/dWUt/35wMf+Iejz/fm8z/31s
+        NP9+bTb/g3I6/4t2Nv+Pejn/kn08/456O/96ZjD/m4ZZ/7Cddv+zrYL/r6p+/6Kecv+qnXP/mYZd/4Rs
+        RP+OfEv/npJa/42ASf95bDT/eWw1/46BSv+toWj/kIJB/416OP+Xfj3/hXQw/4FzL/+DdDL/jno5/41z
+        Mf+PdDP/qa+U/5uVh//Fysn/8/////D68/+5t6P/t7al//L89//w+fP/8fv1/9nn5f/N29n/6vj2/+b2
+        7v/h8Ob/6Pju/9bj1f/R2cb/7PTj/7O6p/+Rjnb/sKaQ/4d3Yv+RkYb/7O3a/4aBWv+LgVD/e3A+/3tw
+        Pv+PhFL/o6Z//8PYy//W5ej/6vfx/+j59v/W6+7/2+vo//f/+f/T1dH/fn5x/4eGav+noID/cWdE/3Rt
+        S/+noYb/n5aC/4J4Wf+emHT/iolj/7S6mf+op5P/npZ6/5qXZ/+ak2D/mZNq/7SukP+Wl3z/kZZq/5GM
+        av93dkj/gHM1/4t0Ov+Ddzz/jn1F/4d3Ov+BczH/hXQy/4RyMf+Bby7/f28u/4FzMv+EdjT/iHo4/4h6
+        Of+HeTj/ink5/52OSv/DwoD/ppZf/4Z0O/+LfED/iXk+/419Pv+TgUH/jnpB/4p1P/+Hczn/hHA2/4Vx
+        Nv9+azX/eGUy/31qN/93aTH/fXM3/5WLUP+RhUr/emkw/4RzOv+Hdjz/jXc4/4t0M/+JcjL/kH46/4x6
+        O/96YjL/knpR/66edP+ooHX/q6Z6/5uGV/96YzP/hW9A/5aETf+EdDf/hHM4/4RzOf+Idj7/gW83/4Jy
+        Of+JfT7/mYdI/39mKf+DcC3/lIQ//6KSTP+PfDn/kXs7/413Nv/n9e7/1tDM/9fUz//2/vb/9v74//P9
+        9//2/fn//Pz7//3+/P/4+vf/6vf1/+Pw7//v/fv/9Pz6//T6+P/1/Pr/+f7+//v////2/v7/3efp/+75
+        +v/W2ML/mZNp/6uqhv+3uJz/qqmV/4J5Vv9+cEH/eW1B/5qMYP+6tp//wtHT/9Pm3f/0/PP/8/z6/+r3
+        +v/f7ev/6PDq//b49v+uqZr/gnlc/4iDbf+hnoz/fHhn/4F/af97e17/c3FN/5KPdP+Rjn3/yM7I/729
+        rf+Pil3/hZBY/42HVf+UlXb/vMe8/5aYiv9tb0j/jo1i/46OWv97bjL/hW82/42BR/+KekL/g3M2/4V3
+        Nf9/dTL/fXMw/3dtK/98cC3/fnAu/4FzMP+Iejj/iXs5/4p8Ov+MfTr/joI4/4+RSf+roF//kH5D/45+
+        Q/+Le0H/ino8/457O/+Pe0H/iHM8/4l1O/+IdDr/iHM6/4Z0Ov+EdDn/g3M4/4BzOP+PhUn/tatv/5OH
+        S/9+bi//iHg5/4x8Pf+NfT3/jX07/4l5OP+KfDP/koI7/4VwOf+DbD7/lX9X/6ucc/+xpnz/hW04/3lf
+        Kf+Mcj3/iHQ8/4l6P/+Xh0z/hHM6/4l4QP+KeUH/fm41/4iARf/FuX//gm83/4NxL/+Nfjj/m4tG/5B/
+        PP+ZiUf/i3s6/93o6f+7trf/5eHf//j/+v/i7Oj/5vHw//D17v/Lybz/wsK5//z79f/p+fT/4PDs/+n2
+        9P/0+/r/+P38//r+/v/7/fz/+/z6//r7+f/y9fP/2OLe/77Htv+1vaL/nJ11/4aFZP/f3s//ycOs/31y
+        Tf+Nflf/o5Rt/7ayp//o8/j/6/rv//j78//3/Pj/9v38//L8+//z+/n/+Pz7//358//j3dH/4OPh//H4
+        /v/Z19D/ycmz/6Olh/+IiGT/y8ux/93c0v/F0c//nKeT/46Oaf+2xaD/sbaT/5efiv+8ycP/xMKy/35w
+        P/96bCv/eHU7/4Z8P/+HdDT/j39C/45+RP+FdTj/gHIz/393NP99dTL/enMv/3tvLv9/bzD/iHg6/5CB
+        Q/+KfT3/in09/41/Pv+PhTv/iYpB/5WKSf+cik//j35E/5KCRv+RgUH/koA//5SBRv+MeED/iXY5/4h1
+        Of+MeT3/jX0+/4h6Ov+Gdzn/hHY5/42AQ/+Rg0f/jH9A/5GIQv+RiEL/k4lD/5eMRv+ViUP/joE+/4t/
+        Nf+Mfzb/jn0+/4l1QP+SflP/koFU/4h5SP+IcDb/lHpB/4xyOv+EcTf/jX9D/4p7QP+IeT7/h3g+/3dm
+        Lv+ommP/y8uT/8fAiP+CcTr/gnEv/4h5M/+MfDf/jX46/41/Pf+GeDX/pJ+T/6+spP/k5OD/7Pn6/9Pg
+        4P/f4Nn/0cq1/6Ohgf+TlID/6+Xa/+v/8v/h8uv/4+7t/+n48//z//n/+P75//n++f/4/vn/9/34//r/
+        +P/x9+r/1d3U/8HHw/+orIv/j5Jq/4SGZf+qqJD/sq6U/5qQdf+QinD/xsvK//v/+//z+fT/+P34//n9
+        +P/6/vj/9/38//X9/v/0/fr/9v38//3+/v/9//n/+Pz9/7q+s/+MkXH/o6GI/4B9XP+IjGv/nKSN/9nk
+        0/+4wq7/tr+f/6msgf+cmGr/srSX/9bg1v/T59X/q6B3/35wQ/+Cf1f/enQ3/4F1LP+Gci//iXs6/4l5
+        Pf+LekL/jINB/5KJRv+JgT3/kYND/4RyOP+Qe0n/lYNP/46DRv+Vik//lIlM/5CKR/+ZklT/pp1k/6qZ
+        Yv+TgEf/lINF/5SFQf+WiEP/l4dI/459Qf+Kezn/j389/5ODQf+Qgz3/hnk2/4R1Of+Jdjr/k34//5B7
+        Pf+Xh0X/oJ9T/5GQRP+Uk0f/mpJA/6OYSv+6rGb/in87/4uEPv+MhD3/jodF/7Oqdv+Thk3/ink7/4p8
+        O/+LfD7/hnU+/4h6Qf+Og0f/i4BE/7ClZ/+Wi03/koVO/62hbv/Fy5X/j4pR/3tnK/+CcTH/hXc2/4p8
+        O/+MfDv/iXc3/4d2Nf+NiHH/h4Ry/6Wll//X4Nn/8v7t/8O/s/+ekpL/iYB2/5+Sif+xqp//3eLX/+Xv
+        6f/l9PP/5PXw/+z58//1/Pf/+f75//j++f/5/vr/+P73//n/8v/u9ez/z9XQ/7zFpP+cpH7/kZh5/4B5
+        Yv+emIT/3ufb/9De1P/u8/H/9vz2//b8+P/o9vX/5fTz/+Py8f/u+fj/9f76//D68f/W5t7/wNbF/5ys
+        iv/DybH/1+Xb/52tk/+5wav/uL6m/6yxlf+ytpv/m5t5/5CLWv+blVn/kYlF/5GHRv+GfEb/kYha/7C+
+        lP+JjG7/sa6e/7CylP+SjmD/gXRA/4NyMv+EdjT/i3s//4x7Q/+HfTv/kIdE/4yDQP+Jfz//hntA/5KE
+        Uf+Je0b/ioBD/5qOU/+ek1b/lY9M/6WeX/+5sHf/qp5n/5aLUP+Uikv/kYpE/5eQSv+XjU7/kohL/4uC
+        P/+PhkT/lItJ/5SIQv+OgD3/i3tA/4p8O/+PhDz/k4hB/5WLQ/+XkEX/mZFG/5uTSP+XkUX/nZZO/6KZ
+        Wf+OhUP/m5NN/5ePSP+im1r/qqFt/46BSP+OfT//j4E//5aGSf+OfUX/jX9G/46ER/+PhEj/j4RJ/39y
+        O/+unm//tqZ6/3dsOv98bzf/gHE0/4FxNP+Hdzv/lIRI/4V0Of+LeD3/jno//9ff1f/d6OH/6ff1/+fz
+        7f+1wJ7/g3tq/4Fuf/+KeYD/m4WD/4yKff+poZj/1tnU/9Hk4v/R5N7/2ubg//H48//4/fj/9fv2//D2
+        8f/u9O3/7vbo/9/n3f/b4d3/vsS1/8HFt//IzMT/6+fk/+Tk3f/x/fP/7v3x//b7+P/4/vj/7vXx/9ft
+        7v/T6+3/0Ojq/+n49//1/vb/vsu//5SbhP+TlGr/gYdb/8TIsv/j+PL/0uvT/7jJt/+lsqL/pq6U/6mp
+        if+Ylm7/lZZk/5WTVf+Vkk//iYdN/4mCSv+HekX/lYxX/6Kbev+joH3/jZFm/5uXe/+Ximj/in0//41/
+        Pf+Le0D/jn5G/4R6OP+Gfjr/h346/4R+Pf+KhEj/jIRQ/4qASv+Og0b/joJH/5aMT/+Zk1D/nJVX/6qh
+        af+0rHT/nZdc/5iTU/+ZllD/nJlT/5qVVf+Uj1H/jYpG/5SRTf+TkEz/l41H/5SGQ/+RgUb/jYQ//5GN
+        Pv+UkEP/l5FE/6CTSf+ilUv/o5dN/5mVTf+UkU7/rads/6ScW/+jm1T/pZxW/56WVf+YkFz/hHc+/4h3
+        Ov+WiEb/nY1Q/5OBSv+Thkz/loxP/4uARP+Ogkn/jX5N/5GAVf/Gs43/i3JC/4t4Qf+JfUD/iXlB/5B+
+        R/+Me0T/kn9I/5R+SP+LdkD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+</value>
+  </data>
+</root>

+ 255 - 0
shell_ui/UsbScanerHook.cs

@@ -0,0 +1,255 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace felixyin
+{
+    class UsbScanerHook
+    {
+        public delegate void ScanerDelegate(ScanerCodes codes);
+        public event ScanerDelegate ScanerEvent;
+        delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
+        private int hKeyboardHook = 0;
+        private ScanerCodes codes = new ScanerCodes();
+        private HookProc hookproc;
+        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
+        private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
+        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
+        private static extern bool UnhookWindowsHookEx(int idHook);
+        [DllImport("user32", EntryPoint = "GetKeyNameText")]
+        private static extern int GetKeyNameText(int IParam, StringBuilder lpBuffer, int nSize);
+        [DllImport("user32", EntryPoint = "GetKeyboardState")]
+        private static extern int GetKeyboardState(byte[] pbKeyState);
+        [DllImport("user32", EntryPoint = "ToAscii")]
+        private static extern bool ToAscii(int VirtualKey, int ScanCode, byte[] lpKeySate, ref uint lpChar, int uFlags);
+        [DllImport("kernel32.dll")]
+        public static extern IntPtr GetModuleHandle(string name);
+        public UsbScanerHook()
+        {
+        }
+        public bool Start()
+        {
+            if (hKeyboardHook == 0)
+            {
+                hookproc = new HookProc(KeyboardHookProc);
+                //GetModuleHandle 函数 替代 Marshal.GetHINSTANCE
+                //防止在 framework4.0中 注册钩子不成功
+                IntPtr modulePtr = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
+                //WH_KEYBOARD_LL=13
+                //全局钩子 WH_KEYBOARD_LL
+                //  hKeyboardHook = SetWindowsHookEx(13, hookproc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
+                hKeyboardHook = SetWindowsHookEx(13, hookproc, modulePtr, 0);
+            }
+            return (hKeyboardHook != 0);
+        }
+        public bool Stop()
+        {
+            if (hKeyboardHook != 0)
+            {
+                return UnhookWindowsHookEx(hKeyboardHook);
+            }
+            return true;
+        }
+        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
+        {
+            EventMsg msg = (EventMsg)Marshal.PtrToStructure(lParam, typeof(EventMsg));
+            codes.Add(msg);
+            if (ScanerEvent != null && msg.message == 13 && msg.paramH > 0 && !string.IsNullOrEmpty(codes.Result))
+            {
+                ScanerEvent(codes);
+            }
+            return 0;
+        }
+        public class ScanerCodes
+        {
+            private int ts = 50; // 指定输入间隔为300毫秒以内时为连续输入
+            private List<List<EventMsg>> _keys = new List<List<EventMsg>>();
+            private List<int> _keydown = new List<int>();   // 保存组合键状态
+            private List<string> _result = new List<string>();  // 返回结果集
+            private DateTime _last = DateTime.Now;
+            private byte[] _state = new byte[256];
+            private string _key = string.Empty;
+            private string _cur = string.Empty;
+            public EventMsg Event
+            {
+                get
+                {
+                    if (_keys.Count == 0)
+                    {
+                        return new EventMsg();
+                    }
+                    else
+                    {
+                        return _keys[_keys.Count - 1][_keys[_keys.Count - 1].Count - 1];
+                    }
+                }
+            }
+            public List<int> KeyDowns
+            {
+                get
+                {
+                    return _keydown;
+                }
+            }
+            public DateTime LastInput
+            {
+                get
+                {
+                    return _last;
+                }
+            }
+            public byte[] KeyboardState
+            {
+                get
+                {
+                    return _state;
+                }
+            }
+            public int KeyDownCount
+            {
+                get
+                {
+                    return _keydown.Count;
+                }
+            }
+            public string Result
+            {
+                get
+                {
+                    if (_result.Count > 0)
+                    {
+                        return _result[_result.Count - 1].Trim();
+                    }
+                    else
+                    {
+                        return null;
+                    }
+                }
+            }
+            public string CurrentKey
+            {
+                get
+                {
+                    return _key;
+                }
+            }
+            public string CurrentChar
+            {
+                get
+                {
+                    return _cur;
+                }
+            }
+            public bool isShift
+            {
+                get
+                {
+                    return _keydown.Contains(160);
+                }
+            }
+            public void Add(EventMsg msg)
+            {
+                #region 记录按键信息
+                // 首次按下按键
+                if (_keys.Count == 0)
+                {
+                    _keys.Add(new List<EventMsg>());
+                    _keys[0].Add(msg);
+                    _result.Add(string.Empty);
+                }
+                // 未释放其他按键时按下按键
+                else if (_keydown.Count > 0)
+                {
+                    _keys[_keys.Count - 1].Add(msg);
+                }
+                // 单位时间内按下按键
+                else if (((TimeSpan)(DateTime.Now - _last)).TotalMilliseconds < ts)
+                {
+                    _keys[_keys.Count - 1].Add(msg);
+                }
+                // 从新记录输入内容
+                else
+                {
+                    _keys.Add(new List<EventMsg>());
+                    _keys[_keys.Count - 1].Add(msg);
+                    _result.Add(string.Empty);
+                }
+                #endregion
+                _last = DateTime.Now;
+                #region 获取键盘状态
+                // 记录正在按下的按键
+                if (msg.paramH == 0 && !_keydown.Contains(msg.message))
+                {
+                    _keydown.Add(msg.message);
+                }
+                // 清除已松开的按键
+                if (msg.paramH > 0 && _keydown.Contains(msg.message))
+                {
+                    _keydown.Remove(msg.message);
+                }
+                #endregion
+                #region 计算按键信息
+                int v = msg.message & 0xff;
+                int c = msg.paramL & 0xff;
+                StringBuilder strKeyName = new StringBuilder(500);
+                if (GetKeyNameText(c * 65536, strKeyName, 255) > 0)
+                {
+                    _key = strKeyName.ToString().Trim(new char[] { ' ', '\0' });
+                    GetKeyboardState(_state);
+                    if (_key.Length == 1 && msg.paramH == 0)
+                    {
+                        // 根据键盘状态和shift缓存判断输出字符
+                        _cur = ShiftChar(_key, isShift, _state).ToString();
+                        _result[_result.Count - 1] += _cur;
+                    }
+                    else
+                    {
+                        _cur = string.Empty;
+                    }
+                }
+                #endregion
+            }
+            private char ShiftChar(string k, bool isShiftDown, byte[] state)
+            {
+                bool capslock = state[0x14] == 1;
+                bool numlock = state[0x90] == 1;
+                bool scrolllock = state[0x91] == 1;
+                bool shiftdown = state[0xa0] == 1;
+                char chr = (capslock ? k.ToUpper() : k.ToLower()).ToCharArray()[0];
+                if (isShiftDown)
+                {
+                    if (chr >= 'a' && chr <= 'z')
+                    {
+                        chr = (char)((int)chr - 32);
+                    }
+                    else if (chr >= 'A' && chr <= 'Z')
+                    {
+                        chr = (char)((int)chr + 32);
+                    }
+                    else
+                    {
+                        string s = "`1234567890-=[];',./";
+                        string u = "~!@#$%^&*()_+{}:\"<>?";
+                        if (s.IndexOf(chr) >= 0)
+                        {
+                            return (u.ToCharArray())[s.IndexOf(chr)];
+                        }
+                    }
+                }
+                return chr;
+            }
+        }
+        public struct EventMsg
+        {
+            public int message;
+            public int paramL;
+            public int paramH;
+            public int Time;
+            public int hwnd;
+        }
+    }
+}

+ 73 - 0
shell_ui/app.manifest

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC 清单选项
+             如果想要更改 Windows 用户帐户控制级别,请使用
+             以下节点之一替换 requestedExecutionLevel 节点。n
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
+            如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
+            元素。
+        -->
+        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
+           Windows 版本的列表。取消评论适当的元素,
+           Windows 将自动选择最兼容的环境。 -->
+
+      <!-- Windows Vista -->
+      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
+
+      <!-- Windows 7 -->
+      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
+
+      <!-- Windows 8 -->
+      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
+
+      <!-- Windows 8.1 -->
+      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
+
+      <!-- Windows 10 -->
+      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
+
+    </application>
+  </compatibility>
+
+  <!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
+       自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
+       选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
+       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+    </windowsSettings>
+  </application>
+
+  <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
+  <!--
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity
+          type="win32"
+          name="Microsoft.Windows.Common-Controls"
+          version="6.0.0.0"
+          processorArchitecture="*"
+          publicKeyToken="6595b64144ccf1df"
+          language="*"
+        />
+    </dependentAssembly>
+  </dependency>
+  -->
+
+</assembly>

BIN
shell_ui/loading.jpg


BIN
shell_ui/loading.png


BIN
shell_ui/logo.ico


BIN
shell_ui/logo.png


+ 8 - 0
shell_ui/packages.config

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="cef.redist.x64" version="75.1.14" targetFramework="net461" />
+  <package id="cef.redist.x86" version="75.1.14" targetFramework="net461" />
+  <package id="CefSharp.Common" version="75.1.141" targetFramework="net461" />
+  <package id="CefSharp.WinForms" version="75.1.141" targetFramework="net461" />
+  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
+</packages>

BIN
shell_ui/progress.gif


+ 216 - 0
shell_ui/shuichan_shell.csproj

@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.props')" />
+  <Import Project="..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.props')" />
+  <Import Project="..\packages\cef.redist.x86.75.1.14\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.75.1.14\build\cef.redist.x86.props')" />
+  <Import Project="..\packages\cef.redist.x64.75.1.14\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.75.1.14\build\cef.redist.x64.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{32371A8F-70B0-44CB-B28B-7B941F5B87AA}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>felixyin</RootNamespace>
+    <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
+    <AssemblyName>佰安客工厂管理系统</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <TargetFrameworkProfile />
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignManifests>false</SignManifests>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>logo.ico</ApplicationIcon>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject>felixyin.Program</StartupObject>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationManifest>app.manifest</ApplicationManifest>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Management" />
+    <Reference Include="System.Web.Extensions" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="SplashForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="SplashForm.Designer.cs">
+      <DependentUpon>SplashForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="UsbScanerHook.cs" />
+    <Compile Include="MainForm.cs" />
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <SubType>Designer</SubType>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="SplashForm.resx">
+      <DependentUpon>SplashForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <None Include="app.manifest">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="packages.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="loading.jpg" />
+    <Content Include="loading.png" />
+    <Content Include="logo.ico">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="progress.gif" />
+    <None Include="Resources\Icon.ico" />
+    <None Include="Resources\%24this.Icon.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Connected Services\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4.6.1 %28x86 和 x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\cef.redist.x64.75.1.14\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.75.1.14\build\cef.redist.x64.props'))" />
+    <Error Condition="!Exists('..\packages\cef.redist.x86.75.1.14\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.75.1.14\build\cef.redist.x86.props'))" />
+    <Error Condition="!Exists('..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.props'))" />
+    <Error Condition="!Exists('..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.targets'))" />
+    <Error Condition="!Exists('..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.props'))" />
+    <Error Condition="!Exists('..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.targets'))" />
+  </Target>
+  <Import Project="..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.75.1.141\build\CefSharp.Common.targets')" />
+  <Import Project="..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.targets" Condition="Exists('..\packages\CefSharp.WinForms.75.1.141\build\CefSharp.WinForms.targets')" />
+</Project>

+ 37 - 0
shuichan_shell.sln

@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27703.2047
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "shuichan_shell", "shell_ui\shuichan_shell.csproj", "{32371A8F-70B0-44CB-B28B-7B941F5B87AA}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|x64.ActiveCfg = Debug|x64
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|x64.Build.0 = Debug|x64
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|x86.ActiveCfg = Debug|x86
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Debug|x86.Build.0 = Debug|x86
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|x64.ActiveCfg = Release|x64
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|x64.Build.0 = Release|x64
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|x86.ActiveCfg = Release|x86
+		{32371A8F-70B0-44CB-B28B-7B941F5B87AA}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {502F194A-3CA1-49AA-9451-E5CA88880AEC}
+	EndGlobalSection
+EndGlobal

BIN
vs/ap/v15/Server/sqlite3/storage.ide


BIN
vs/ap/v15/Server/sqlite3/storage.ide-shm


BIN
vs/ap/v15/Server/sqlite3/storage.ide-wal


BIN
vs/ap/v15/suo