From da54d8dd76e8f39a09f4071af2ca0b5b6c062b56 Mon Sep 17 00:00:00 2001 From: Scott Hanselman Date: Fri, 30 Jun 2017 12:31:40 -0700 Subject: [PATCH] Converted from .NET 1 to .NET 4.6.2 --- .gitignore | 294 +++++ OS Project/CPU.cs | 8 +- OS Project/EntryPoint.cs | 6 +- OS Project/MemoryManager.cs | 6 +- OS Project/OS Project.csproj | 281 ++-- OS Project/OS Project.csproj.user | 99 +- OS Project/OS Project.sln | 27 +- OS Project/OS.cs | 12 +- OS Project/Program.cs | 2 +- OS Project/app.config | 84 ++ OS Project/bin/Debug/OS.exe | Bin 49152 -> 49152 bytes OS Project/bin/Debug/OS.exe.config | 8 +- OS Project/bin/Debug/OS.xml | 1983 ---------------------------- OS Project/bin/OS.xml | 432 +++--- 14 files changed, 823 insertions(+), 2419 deletions(-) create mode 100644 .gitignore create mode 100644 OS Project/app.config delete mode 100644 OS Project/bin/Debug/OS.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b3456de --- /dev/null +++ b/.gitignore @@ -0,0 +1,294 @@ + +# Created by https://www.gitignore.io/api/csharp + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# 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 + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +*_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 + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# 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 ignorable 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 +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 +*.ndf + +# 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 +node_modules/ + +# Typescript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# 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 + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/OS Project/CPU.cs b/OS Project/CPU.cs index d1353fa..9fcc530 100644 --- a/OS Project/CPU.cs +++ b/OS Project/CPU.cs @@ -69,7 +69,7 @@ public abstract class CPU /// The size of physical memory public static void initPhysicalMemory(uint memorySize) { - pageSize = uint.Parse(ConfigurationSettings.AppSettings["MemoryPageSize"]); + pageSize = uint.Parse(ConfigurationManager.AppSettings["MemoryPageSize"]); uint newMemorySize = UtilRoundToBoundary(memorySize, CPU.pageSize); @@ -218,7 +218,7 @@ public static void opCodeToSysCall(InstructionType opCode) /// public static void DumpRegisters() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpRegisters"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpRegisters"]) == false) return; Console.WriteLine("CPU Registers: r1 {0,-8:G} r6 {1,-8:G}",registers[1],registers[6]); @@ -235,7 +235,7 @@ public static void DumpRegisters() /// public static void DumpInstruction() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpInstruction"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpInstruction"]) == false) return; Console.WriteLine(" Pid:{0} {1} {2}",CPU.registers[8],(InstructionType)theOS.memoryMgr[theOS.currentProcess.PCB.pid,CPU.ip],(uint)theOS.memoryMgr[theOS.currentProcess.PCB.pid,CPU.ip]); @@ -246,7 +246,7 @@ public static void DumpInstruction() /// public static void DumpPhysicalMemory() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpPhysicalMemory"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpPhysicalMemory"]) == false) return; int address = 0; diff --git a/OS Project/EntryPoint.cs b/OS Project/EntryPoint.cs index 3a8f2d4..f9decde 100644 --- a/OS Project/EntryPoint.cs +++ b/OS Project/EntryPoint.cs @@ -67,7 +67,7 @@ static void Main(string[] args) bytesOfVirtualMemory = uint.Parse(args[0]); AppSettingsReader appreader = new AppSettingsReader(); - bytesOfPhysicalMemory = uint.Parse(ConfigurationSettings.AppSettings["PhysicalMemory"]); + bytesOfPhysicalMemory = uint.Parse(ConfigurationManager.AppSettings["PhysicalMemory"]); // Setup static physical memory CPU.initPhysicalMemory(bytesOfPhysicalMemory); @@ -87,8 +87,8 @@ static void Main(string[] args) if (File.Exists(args[i])) { Program p = Program.LoadProgram(args[i]); - Process rp = theOS.createProcess(p, uint.Parse(ConfigurationSettings.AppSettings["ProcessMemory"])); - Console.WriteLine("Process id {0} has {1} bytes of process memory and {2} bytes of heap",rp.PCB.pid,ConfigurationSettings.AppSettings["ProcessMemory"],rp.PCB.heapAddrEnd-rp.PCB.heapAddrStart); + Process rp = theOS.createProcess(p, uint.Parse(ConfigurationManager.AppSettings["ProcessMemory"])); + Console.WriteLine("Process id {0} has {1} bytes of process memory and {2} bytes of heap",rp.PCB.pid,ConfigurationManager.AppSettings["ProcessMemory"],rp.PCB.heapAddrEnd-rp.PCB.heapAddrStart); p.DumpProgram(); } } diff --git a/OS Project/MemoryManager.cs b/OS Project/MemoryManager.cs index 5779f5a..a5d4fe4 100644 --- a/OS Project/MemoryManager.cs +++ b/OS Project/MemoryManager.cs @@ -108,8 +108,8 @@ public MemoryManager(uint virtualMemSizeIn) // // Cordon off some shared memory regions...these are setting the AppSettings // - uint SharedRegionsSize = uint.Parse(ConfigurationSettings.AppSettings["SharedMemoryRegionSize"]); - uint SharedRegions = uint.Parse(ConfigurationSettings.AppSettings["NumOfSharedMemoryRegions"]); + uint SharedRegionsSize = uint.Parse(ConfigurationManager.AppSettings["SharedMemoryRegionSize"]); + uint SharedRegions = uint.Parse(ConfigurationManager.AppSettings["NumOfSharedMemoryRegions"]); if (SharedRegions > 0 && SharedRegionsSize > 0) { uint TotalPagesNeeded = (uint)(SharedRegions*SharedRegionsSize/CPU.pageSize); @@ -566,7 +566,7 @@ public void SetMemoryOfProcess(uint pid, uint start, uint length, byte newvalue) /// the index in process memory of the shared region public uint MapSharedMemoryToProcess(uint memoryRegion, uint pid) { - uint SharedRegionsSize = uint.Parse(ConfigurationSettings.AppSettings["SharedMemoryRegionSize"]); + uint SharedRegionsSize = uint.Parse(ConfigurationManager.AppSettings["SharedMemoryRegionSize"]); uint PagesNeeded = (uint)(SharedRegionsSize/CPU.pageSize); uint startAddrProcessIndex; diff --git a/OS Project/OS Project.csproj b/OS Project/OS Project.csproj index 2b114cd..af78020 100644 --- a/OS Project/OS Project.csproj +++ b/OS Project/OS Project.csproj @@ -1,141 +1,140 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Local + 7.0.9466 + 1.0 + {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE} + Debug + AnyCPU + App.ico + + OS + + JScript + Grid + IE50 + false + Exe + Hanselman.CST352 + Hanselman.CST352.EntryPoint + + + v4.6.2 + + + 0.0 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + bin\Debug\ + true + 285212672 + false + + DEBUG;TRACE + bin\OS.xml + true + 4096 + true + false + false + false + 4 + full + prompt + false + + + bin\Release\ + false + 285212672 + false + + TRACE + + false + 4096 + true + false + false + false + 4 + none + prompt + false + + + + System + + + + System.Data + + + System.XML + + + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + + + + + False + .NET Framework 3.5 SP1 + true + + + + + + + + \ No newline at end of file diff --git a/OS Project/OS Project.csproj.user b/OS Project/OS Project.csproj.user index 21cdd08..1f38f78 100644 --- a/OS Project/OS Project.csproj.user +++ b/OS Project/OS Project.csproj.user @@ -1,48 +1,51 @@ - - - - - - - - - - - - + + + + Debug + AnyCPU + + + + 0 + ProjectFiles + 0 + + + + + + + en-US + false + + + false + false + false + false + false + + Project + 1024 prog3.txt idle-n.txt + + + + + false + + + false + false + false + false + false + + Project + + + + + + false + + \ No newline at end of file diff --git a/OS Project/OS Project.sln b/OS Project/OS Project.sln index 364d58e..57f597f 100644 --- a/OS Project/OS Project.sln +++ b/OS Project/OS Project.sln @@ -1,22 +1,25 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26621.2 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OS Project", "OS Project.csproj", "{8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}" EndProject Global - GlobalSection(SolutionConfiguration) = preSolution - ConfigName.0 = Debug - ConfigName.1 = Release + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Debug.ActiveCfg = Debug|.NET - {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Debug.Build.0 = Debug|.NET - {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Release.ActiveCfg = Release|.NET - {8C0B39D1-53DF-42E2-8E6F-321875EAE3BE}.Release.Build.0 = Release|.NET + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution DPBuild = 5 - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution + SolutionGuid = {F94D71FA-4D51-43CF-B067-9C118AF7916F} EndGlobalSection EndGlobal diff --git a/OS Project/OS.cs b/OS Project/OS.cs index ca87c3d..420165d 100644 --- a/OS Project/OS.cs +++ b/OS Project/OS.cs @@ -115,7 +115,7 @@ public enum EventState { public OS(uint virtualMemoryBytes) { memoryMgr = new MemoryManager(virtualMemoryBytes); - bDumpInstructions = bool.Parse(ConfigurationSettings.AppSettings["DumpInstruction"]); + bDumpInstructions = bool.Parse(ConfigurationManager.AppSettings["DumpInstruction"]); } /// @@ -181,7 +181,7 @@ public void execute() if (runningProcesses.Count == 0) { Console.WriteLine("No Processes"); - if (bool.Parse(ConfigurationSettings.AppSettings["PauseOnExit"]) == true)System.Console.ReadLine(); + if (bool.Parse(ConfigurationManager.AppSettings["PauseOnExit"]) == true)System.Console.ReadLine(); System.Environment.Exit(0); } else @@ -334,7 +334,7 @@ public void execute() /// public void DumpContextSwitchIn() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpContextSwitch"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpContextSwitch"]) == false) return; Console.WriteLine("Switching in Process {0} with ip at {1}",currentProcess.PCB.pid,currentProcess.PCB.ip); } @@ -345,7 +345,7 @@ public void DumpContextSwitchIn() /// public void DumpContextSwitchOut() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpContextSwitch"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpContextSwitch"]) == false) return; Console.WriteLine("Switching out Process {0} with ip at {1}",currentProcess.PCB.pid,CPU.ip); } @@ -428,7 +428,7 @@ public Process createProcess(Program prog, uint memorySize) // Set stack pointer at the end of memory // p.PCB.sp = memorySize-1; - p.PCB.stackSize = uint.Parse(ConfigurationSettings.AppSettings["StackSize"]); + p.PCB.stackSize = uint.Parse(ConfigurationManager.AppSettings["StackSize"]); // // SETUP CODE SECTION @@ -445,7 +445,7 @@ public Process createProcess(Program prog, uint memorySize) // Point Global Data just after the Code for now... // p.PCB.registers[9] = (uint)roundedCodeLength; - p.PCB.dataSize = uint.Parse(ConfigurationSettings.AppSettings["DataSize"]); + p.PCB.dataSize = uint.Parse(ConfigurationManager.AppSettings["DataSize"]); // // SETUP HEAP SECTION diff --git a/OS Project/Program.cs b/OS Project/Program.cs index 26d3a04..9ff768c 100644 --- a/OS Project/Program.cs +++ b/OS Project/Program.cs @@ -119,7 +119,7 @@ public static Program LoadProgram(string fileName) /// public void DumpProgram() { - if (bool.Parse(ConfigurationSettings.AppSettings["DumpProgram"]) == false) + if (bool.Parse(ConfigurationManager.AppSettings["DumpProgram"]) == false) return; foreach (Instruction i in this.instructions) diff --git a/OS Project/app.config b/OS Project/app.config new file mode 100644 index 0000000..c4f2d93 --- /dev/null +++ b/OS Project/app.config @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OS Project/bin/Debug/OS.exe b/OS Project/bin/Debug/OS.exe index 6230a77fb4542d7ae38e876d2312648575d0e314..43fc2755e1785374620eb3857513861a18e247c2 100644 GIT binary patch literal 49152 zcmeHw4Pac=aqir^d++|~Z&&h4wq<*5Y_mv~EL*aX6&ozeHa7SVOBfp*?6tI(*GRi! zcV$}^qH+T+q=w)mCLy>yAdn^@Z6P5oA!!ONO~QK#O_Q`Q$x8?%X@2@h)BHBH1ix?Q zoV$Bh{y{XPeSJ@B@7yzU=A1KU&YU^FceVMtyU9aDUVP7-A$k%|{;U>wVK9#9iaAeJ z&=Y|#%ze_>^o6-S2U5A%P&U(_O$^3*6X|p&AKRCVWrx$TR64eHYj6FAvVw zS#MiMw8`*L{^1?FoYG#Tc@#2Qi0%d@rl@cKfDS(`cv$FFN^YjuLS|qPfzBTf?Y&J9 z!2vW~KZK_p`EKRV)2MSuNTuLKqB5pDLR4QGb73q-K06q_cmv9*tFux+SDYAe$H#iPFY1$jeA)wT(1wR zTRe0P*sux@$7_j#S%ii%bqK|$1B?Upnzt~Fhmn8KzH=$K$Fcw5waw;Ob`IF%GnjoQ zfO%pGVr_wOtiOW|OK-8k8qLgNWVu4j%RNsh^Fmv(W*5K8%l+`)o9vvF4{CryWT}}+Uu~3<}_H=MRQs#=b|}HcF;w0+U!Ob z&1tlRi{`Z25f{yAwnHwO({9*1D%5R`uE(&87Sptpi#Au&hFr9HnwECaF4DA&i#A`= zZYt1%X6@3TIcNTBX7n|q(TK*;bAz_|zK}1o4onS1)h%B7rFI$07ksqf3u0hyG8(ea zgCae$_LOvT3D>KzbogwGp*iYY9JAaU?{qk(yEtaMIezYN%y4nc3AkByn7WvmZkC{% z<&VJ0G&4KW_&k=Xy2YgTKqj~ik3AV@cB=c+ly>_PSsnRW{7Lf zKE`!r|7@RV=WH+HVC~LepedaF9OANHVFso)RtX{C;+yf-rYg>CQ84>eW}6Q-f9=jP zzwfTp(s#xe0BwNYOzZ+f1juME2raS@*d(x(7H@-JSmwBR% zM(x3!*9`{khS_F(Ab4f_Z;B zToa5!q46j%^R86gVmm$!!3Hz>J{cNAxj535tDf>AG*cWk%lvW9!}z0= zR=O*tw96)!-QcAmTa0HETJkCb<(S%PZ~Gmnp&9nRFMbIKi;hU}Ze&?)*f)VNhiYg$1*P1Wr6$j@JoeIPmUL%xrpLD{~SVhB0JTd&6F6;qt*V zXU^D}t3b_mTd)SSWiZ|du&`lA_7e^z`$;F%@Kp9EPB^{@e3>Rr!O60nHZmy89fStD z^udF8@+bQ-@XWZg8m+Y;YL5CK-1bs)b9@D;V_fk9^XDAqrkVonD-LbZ$TX#j)|nG?;t8EptMMA}aK&0Tl@=Dw zbbx10)7fb;tqO`R8qX3?vgO>u7VN|dTVZbo^ReLNHf+V8sX?&gTd$ot^Fob(7;{3S z+78=`d|^AY3NhbkpiU6srU@-Z+;4W^i$wB4C%z0^4IS!fdg61TH5VFV^hz^+Ik-HT z)qr{UAd@+SzqEL7O13W}a? z42FHtLL8SD_GdOB%Y~X}XSFZvQ^H;PsB&um3|Wd!txOST``yIyKy>+tKe~K4;J;24 zRUHTi0=uhGPc9_0nX3|NTow+geu>U$R+oj5tT9|Rx(zH%)5B$fF%E?TwYxZZICw*o z7vXXwVzX`f%NM4FL&|8&!{spAa&5Fm729mPvF50OK|%SBZnRa9`+6Mx+s5FL+X6ya zw7mT>aKN8?ltVs<5(62WVg~af6nf0)4$wMoV?)b8pr9WfKy*}FZ8z=@gzcTKwCv=A zOY1bH4=HWYz;!tow|&&b$q8KrLC;c9Q^+6osr(x~QFwOPJh${gJH7N>VQMG zqX6ox1mKTJA?XBqd`q7eogueFQ9 zgnXmdA`@5Ut?fQhlO`QN?4=7zNGXuoBCbm6#|{!uYOH|<|R2Io*u zYl~N@;L?kAKummRTb)LCm6<-vABV58%fI;~GVw{DUU4geFzLp$Zxoh_NsAccBj7VU zt=&kxeFF8;%g#a6gpiV$)7}CXl3NJ3$cshp3$9nDyJFprIo`*L%rseHKD?N zwWmE%RZet_`GJYyM#r%JW^6*Kpm1l$gS&LSp0dTeAr8D5OIeb1G$l z;?!*EH}t4u zSBpN5G|0Eam$ma4b*}z8&!<#XZF*G4m8_!TD@|W~DN?B(x@bKbZK>)les|}b;m}}a zLDf(F84fqrsO6?~Xs3gHT6eG^?qJ&gxqLXPQ1E~6dB5_1tOuU+v7WqY&R5|rIxFMAGaGBdoeT`c%Xcx^C>+0p}!hZ33p4O!ZvAqpHQcZTfRT|qr1_;g{>09TF~fmaQ0$ZKA9Kiq_>ub%%% zMP(PNHjaMF^L*u7r_uWB9p7rvParco4*Vgz(G@QMous?sZITPRt1m(qW*pfDbMTVE zkX@I9n+%rub8sBN+zkNbx%Z(jRI83HqinSm#Vl_Y)=jods8wH2V?MU?D<@AECTG%g z>7`%giTN0Ef)4iH8C->gd8vOTfl zUSzL^n2x&;JWCbR9aSV)3%)>RAD($um|AhnE2+GN%7?w9Qcnw7(CZKFB$s~KgGjEo z8is(NqFx#PYN|22?k!YajUb*{Q31wG9=$MT@&gLtz7EsV^GKKRh8p9p-i9fp41UEO zmDYgmm%Iv7$uFK`D#_C%ZG#omwnq7(9cCPp_Mqt*Yl9G`cWfEUay-F74sbfA>2yp#XS#NkZiPy>D#+=WrqeOqm5%2jm{iEe%-sU3 z9qZr>=7ePTY;2WA(3i}y%NUUjH`Bu#WA+%vHBf3HdA4*9b!;_apcvjWL|0Myk78u> zHkr`|Q$kA71EAG6ub4=h(Y$aXX?k<@MAFPwQ4aC0y}XYUV}?s&)cj?{OH@~oL3Rz`=-Tgu0+d*` zh~=t!>yT;ln%q{RoXy3HKi)tB1J}!)!9kAN#&&jg94F)XVjh1z?t|LV&;f-w42 zC*&CAMlKJm!wwhk2FrI2m?nPPXMkw>$JkEHI4WkF@lAl3?6>d5_K~ak>&7_Gc#wID z*0f-hn+si^A1`Eiu*>vwyw>toGAB@G zb)bEv0iy_rPO7o)b!%n%u63xj=;XtAUWspeIkRi7JhEBwDyW*UV3aA?%m{@;V;l^J zI=)$qu9aHx&hqDq#L+DHqRtd`lsmGMJ;%JecJ+N=HqVNP-mlqIt{RDsaUvAac)-c! zrjq>GYq(=hHC=9wP9(Y+N{d0xg_1a9#sir@geE(lbXOkndZe5v;U$J9AMb_C!Kv92;hK$Eja)&tM}gwo`rc(TSw#&6iFj&1jxK zkuEOXv&z$+@egAgmjGobz zXaUXGc{2b${V<|Acpk@dA)bD;u$%r7O~>A23H?i&j=p7bL?ysh&~AX4VjPeU)7d6d zpe5n+Y7`m%-b3iI@=@bLU5V@9^Tm~*xHKSV_ungSJEHmuI zF8A{)A9&NugN0m`-M&z;Ti8f&45O#lzAGgYbXi81tE7Q3%-bCCSX*-ff%{dI%IBx0 z`CtUm+=^+`m7L>tj-fqEIb8K;DRzzVUZJjIrV(PRQQVh#8^Q~H(pTcJ88k1Sd*IZJ zU9Wx0(;Cph=>4*Fr!c7Do00|_glhjl)aSMWnM;VZEJ6`M=}$9uN|Q>PdSy>^CdyM{ zojYwCr>(VLGi0MgGO1OWn7oC=t-cz9E^5qr%g^H>Y&i+^DaSAm?IO16d&d$;zTm3b zojs~=Tl4_xQa>4a>MkUYh=moph}D&iL#*OCWx-b!9T+yjl!Vv?Q$k_`%rDYD6i2I- zitC5Cd=~wI$;vwYKS5Td;8XJOpW1mp6wESzcCs?hsrU~SIw~GX3+->SYsDEk_;Nd1 zg0~``J(#)^@U=iNby zD^@9`okn~>d;~2ZA>B;MC#W`gYSOaS{Kv|AZbzqUATtN28Zx$yqaL#+B z=CWw`N%n)8j%<4Pouus-J&ao3>+$NnD0foxfqJJ{vBU}Uli$*Oz<#zwj|)^%x06#v83%4b9Va($30LO2xMTmor1=gf(x(V}A+tc@{Fc!^KmCe;t#Y|&h@$(q;c z7bA`z^2)vXNy%0i-p@78I?a0kXR#9tmDTiF`v7Ond4001!2L?~zQdeJ&3EU$*=^Z@ zHj^WOvc{c$+5ImMs7)>2QqlTrU8QJh!je6GzA3&dWpQWph1q`D6>fUq+^6WUXLUY4 zMtv_i=i^?&&fDZ{XwF4%u1-{)&uXqXFHyutSaO$Xa%1w`3&}QNvi6%#gf8fMrC$D1 z(G1R7^?t&KC#~c87pjNT8799ec0obUt$JsmW&dJee|A!Rc+PKSGw)Qi>vy3!-8tq2 zmmOC7l$vm=X-)|~(Ldae(`DZ8bl4}xH^*HR%{0cROfK>aXDE;{>rW@$ju+faeB<*e@r7>3HewRr7Uqhi7tadcg_%Z%~IB#X3O7%Ze>j>&W;glh*T`H@CkO z^xRsM@myBIr=Bh=nW?RW_d_SYj`&Ylyy0f#%A&qqHIPv}vqHIE*t$g@MH|E>HC9G1 z)CRv*->Vxba|z@w7sMZMY-sX(G8bIvzi~Tv`&>srjJ@_kHSfJ0dgV{t25rW!xDO8r zyITYMU^t0#Q{=p-4TtA%K~!<#;Kt9BNHX7*Ta9vXaLvu{5t3JVdT#4h$OBie_W@P3 ztd4P}_Kjx;U%l)_VzUHRf_>za~mX0g02{D{kv>}HAgGY;R8QliSU2hrP z%4q3ZMl3kD-#OkRlCw5BMZ4g8M8}Y6+{Np>N5s0q{XCk>x>5@A$|Gd^GGiqJS;4)qd?ajky!|qvUXlB_%rW9xZDo7 z-mcTPMfEFnO9B#*R|V8*YAxOg#Br*;iKj1{x?d1_DWG4sLrQEddsRwY)$uhVr5*N_ zq{KS~e9b0|Bh;lY`7@^=O-Dap>vi52!|fVe<CbS zvk`jWqt1NRB-krm#I_vAjhJ9CHv3IJi|;jBKe{)AyX)%C5IH)RDfL zi(f>uJJmhGTb%YB+X@|GZpM$yVdOWq1)+xZ<|seaonSAU<5Cx;fZ+NCeuhEEOk)J~ zV7t8*PyU!<7-LYVR|mIq(Dg!ry4UBGE0m_X=Z%*_^gZ>l9_BXXMFlwm-#yk1O2gYt z!K97kzN*e~uVfDUQ~MWcNW+&*mzri8ncPJck z2;^dG9bs9_QGTe_LX$~r@l&-{xo)ijg&Rl^r?mu8t+l56$~6XiV|>c+J=E6R(%jn8 zx&(tW-wngo6aAnLHjYiO9@uhO1mW&{HkIy2zaZM%hpk32VN06opw2Q8|X5(5s zZwG!W2Aqr54Dfwi`IzWN*Y0`96F`9e)o5jB#HC+_Z!Ny47=0MuQG8)`a<{StPlzsj z^YKKM{Qe5x<&fX{9^@S0-qH) z=4HyI0=Eg=CG0#;AocaNdcZ z1K12KF4!)ldl0`DaG78Yf-R@jf~^p&9Y2-IYtw(QEAi8>9gu=^=@eNy@M}4Yy`_Tl z?4+B8^I<7{4c#Kx6JeI+O2#0|Dhv{K-u7y_08>I(qhL_QRx0-GY z4*~X-=e=QCSAN86L&lpKQVKA}(B44f-W}tA9Jm?q%K{s04hMq_BO!*1h0-DLPNCEZ ze8k7G#{?c1%A*oKE%_`H{+osV?F#1nn!ukChyP7tM}_|pq4x>>I-&0ucvSLvHq89r z6rK(VZ;@2vl}x`+;MytiAS8$KFbx06YQPu*pTymT-hV z4M|1;7n0J+ENIN8#R6*ten#?nQM5M%-P+VG^iP?nk=UD|?d=C)*7KkF7-mJPoTOb) z#*`n4w9_QKy<)ti*4tv}_;@d9XZSvJg2xr+zsveduSuWQ*ePo-`o!lob{cUW`kKbx zk2nu~Ut=E&e8%ggpJ?ooV}eA!-%uWZiJ+Heh=dMvML5@P_C#U%R7|6h`S~^ihp13o@p1IWD=B(RU^8 zGxTHYam4M$QkID0s(}47Pu>K>=t93LVBf|Lps&%1`+>KDq6+h0@B6X0k}lC$pYIpm zDr#34<>^&#gf?jGYU2m+Izt8Q+uj;Ft+5Z5nbtJ=u*Px$zZIoVXzaN4s<)0ltFfqjF>ftPHXI6%P+R( z(n_9W&~bXVugRK6n>6-26|L5M+O4tQ^L1Dk(+Q2`E7n*I^rXhV8o1JGqVF!@T#nJB z!K}}#9Bpt8hgIH$?BvN%T?U>%g3!QT79X)R#xq@*3s&Ah5eInm$ja@ z$?Wbp)l?j}uApZX2Az#t8|dqTDGRxhUUkJ?Ns$iDMa6BRHo@3>#;r|sr7I3g2YftY zOD8M``;3t?Y>a0r?lVT8@lLCVU1yxOw$nf%&zV*?eO_VoN5*{Wp*Czra2wqdGJrj) zG4_Sm(5F_bxUXaOaShdUD(vDa#`-jNG<>mj4VA6oxMTDl)5hu`ud%la_6@;~({1JN zw|3C#wJMi1G{2Mb8vBL!QEL}Hrm-&vY*^Rob&9jWX6$8+;SFP853E;l%Ooy;g~Dz| zpWa2gHz@4iB+kE4VWX(SF8ZRz9;pz{D^=WSDX;7*g?(G%9@f~`1Y5aD#r+IEY8QQ3 zV}C5^zN)cr3g@=XinBvX|GCEQ6v-ZtMmtV*f*ru>kTw5^NY)~acASn0R)e)2#~oMc zH1?>(ZNOrWXp3h#ZI3JMGZ{De}>m-*GyA-xxux-~VY`l{5{JF;N6YR0;RooWI<;ZS@ z^@%>)->R?{!H&}!Xg*6XD@@X5scau}9{2ZG{>sYH zY{6a%Y^aP;jv7@QrK;u^u$PQ01#8!FpM%ZkNMSD-9};YXibDy%MxKurFdK90FBY(I zYnYbys?zVmcyO3jYwQ%pt;4icW2X^!gx;#L_ap8I4QT9Rfk&+oI;^p$0yBZVO=EW< z?kL@*u~UdUO7BycSivYgrQ`Z5J@(D?dBIfOZ>F!QIH|jXsk+}x-_vnicL!5-zZumr zC}}bLvG?52Z!q2CXBZOL9K_xNEeSK_o-&3ru?1I}!}qJ0!q7Z#&Z@*$g-7u#%Gs%& z^Kou}jZ#cHEi$XH1xXa$puY#*q|ZvZ#juC|LF(nETx4@9H|2l1c)o%hJoKlclTE0* zDPa#iU%{!EqM%9da+SrYoIF(ysxF5`KVK4=8JhGJY+87TW$@C=QtlPds)-pj=fM0< zI4`xn&sE320>z|X2wjC=Ju7@aaqKA^~RxoFRAEvoI#ZZ$WL3jYLJGRYU=awpU7^QCtGB03)v$)A%NeOOxOn=Yx& zE=y6y%F5|+tf@baU5_O8mXg@T$YACW2DI`1RVEaqO8~2AiNF;CI|XhOc(uS?0uzAK zC?(;W1da&218@dr-kj%$1pY+m&ryG6jGmKT`5bZoTVXKIh;h7Z5gjwG_btWlOxC=V z?lmqkSJH#V9TltTL&h9)J$56m_iYC3^KGZcjh8C-(kH-~l-Pp;hX9{5IsBYCE|lA_ zOThU*2#8b?e$MEtP^p+Fic+2`pQN`$^d ze@iXp|C7E3NxnfZ8P9l`v(EkwcxD8@kMIY>FVjg#^;3l3QvNUW48pI1|FO#N&`Wd> zv#D1^hF9okm4@*{)Yk{t=PLuuQ^a^hIDcq-uxzIB6C)RhfqvYI0Dirad2B0g1fVhO z^_WY_x{T+HzeG&~k~UzlgdB^VDakotd;#Nsz~IuC7{6EbcH>^-U16owQ^vjYAWB(c z%eW=k! zP+CAaYF%nxB9u;%fpvJ9`3iB)_sYuZ6{!)o=G)AGxzK+P;5$S2m`u4(;J1u`+30`X zxLV43gZo2Tg`r)N6ZIYjXh33_NkfyH&83!CTa)VMymjOXbs>_x&m-FZ35g&R|EFZ4!{F+ zJ>UTC1stLzV4e;F9-$22&6EcmrxCzg=@!7->1}`~=yt%n=}y3R(>np*OYZ?ZO{W1L zpa%gTrVjvqkRAp62t5Y)7=0Y@33>|fN%{-GPtmi0Wd_%-%HZ177+kwLgKJlBaP49S z*KWSSwOb^dEe7X#yM#|5)y4ESXr>wKFYjyo|PW zt)cFbTs}G2ym2e#4F!j2Ix&#!qk%*&-`UHNKzfqd!BjetM{wUrKAGE|ylFUz^7@=& zyD|d<$=-Y_lg>4F4<&n3iGkEnM5l5)5bC2L{;IMNI>6=k^<~$k`)DwkKalC8E0dHw zlI$JMC%52lnQa~F!k>1djC!n34J1+3q+9&;*<_NoCv(aCwnTrDHYW!&*%1j|k<2S> z;~>WjF+gG46KMoc;>Pr$%#BG}lk88Wb(rPhv^|M^14-J$NmOuSS7vYsZNcP?>(ax6 zNgZCB$_-_5Lhl{UW|Qf>R_(^zx`9-GiW6)fPUlmD$)1s+BwDZ!6o|&y`fO%UQ@Co> z1+8W9+z(_+VlYYl$^4%6!vh0?tcBWpkPm8`=-ZS^C+XU3DxZ`PGj2&9mhi@OE}tEi zHsC^#D~pb2Vkke%&q5QeN#uYIWB^q?pxHzg*yiDZe5w}>zcx9L>_@q@DU;}fC3WW+ z=}sI<77$%u6|?RTG@ybxVdV^vLL{Z`p3a^FSxDcR$GP7=v@u(TF$ zhcoU7r*Kp$F~Z%Wn5G*Bi?$fq#@!>AgY_5VoMdR+{i*)pY=S$-+0kp0x!!DQs5EkI za(@C%0W;p0%ofvdi>3x7qwNsph=g**c&A7-O&<*5?1-++&`37bf4~*Bb8w(Dn@xeu#h$K${cL2BAy!-neZz zcYyH&Qud}~x*x#-^?+kb5i_Ky3&ufE9F`dS4pL`sB;DJU7#P@x9H`d`boSmfoXRFQ zWk7@tCE*Dqd^nNHLlg;LtHN8;g6Vz^GtOr-12~B1>;&#m%4SF2li7A)BnQ_qKnb7) zB$ZC(IbO3$q!U*9U=g*ShZ;t5f@@X5Hl0CZW8bz+W`MZ&Ls!YfAf<}#E+^xm_$o-t ze=d~P4i64F;mwJm?gQ|IeQ119;YJLU(wq`dh0&oDT<0LX<-ouot8q|x*_w0guQ?$b zr-Zjpq+q z!h;ouM?RC;jBY0d1LZRDScBRp6KQB_&n67XJqHkGUqqWz_$B}fRm3>B9b;Q2jiHqX zMU7~kmbfFwCZXtNrw@ozA;+_I%6Q`NZBOpkqdZ|`bVht)A1i&@MHBmV;jYoiMZF@M z8HPRzITehpKw*Ws(o!~Y*o{gDS$Cv2DISz~VpGIAv;7#c)A=Grb^ju+$H<-xM#rHM zJh}&x$sy7`pfe{J_xRM17z`d)4h|9QXGr(W%n)Wx0L+wAOn6AWNR`%whRf2%bZ^#~ zzm)bE#?*|6XJn#&A;GI-1uA3KH`}46!SpyvED;LmLl_Opvjv1yZ_!BS z&`@_W&mA2zIES$Zwy3cZy!De+W9PDr^odyx+z4b5$bc>x`r47k}A;jw$6he?m zrUMec z#o%O;$VjF*Xa%0s=4d~rvW~~(S!hni&>VcKAkvdS>~*^h#@PvXjr0y6jQX%^%u!Yi zHoC?ju>a`Eh&L&5EiTstAEDy+v9qJW#Ly61h?um?Vh9tY9C4vJT6Ysh*&I(?^YA?d zC2*@Y!`}=KB(m#{3}vAy_@P3y<5Zf9^QA&u(Fx>e--J$|Q%&J&++2zK7fGedDWSXI z?U73=&x0|$Kde+h;9QGXwm^4{gSoByS#{jR)SFFW(yKK|g%yxP(5X}(SIIaP`qxB~ zd;Ec}(XMJP0>3?^c#EViDU{uqEI`(0vJNvF!+M?-=3K zl;pWOn(zqJlGBr{&OEy}u>uujvq1=Q$Bik}5h$9)X2cv}8j(D@eDi_Wo3;ha& z4JU!{OdXHz48X=sXb8!o5ZK5*RxtQkHL#1f6_QNXC3MzgV(T#S#B73}8`DFKsa=8d zH4q%CthXIL?!dHlD4CW3S8EF{iEd6DaomN>iP`%rskF5zY67-aLeMs-)3_(#ij?9B zHteV$a1ADkybghvVaNm02)ng)vMB(6aguNpPZ~ej1>!Zh zR2ahrz9M4`$BGFYSH?g)f^FCYrLjGWWfUm;kyQp+#&Ait1=kv5v=3S55zGAO;1aXs zJTVExa(*lZr_A7}lk-l9fX#RVZ!IX80psUcu@Z!!ImtVVCnc1$v2(<64YD{&QBp0U zCTvJ|&=n#@4AjzpSz0cXQKWG58i`WAiCC7FPP&9k|D7eYUZ8|H^pb+ME&)##HDvkT zcpci#TS8n~0**+Ru;Sb$Tsu)OrFa$_uor5FINEYZm#_pjr0Ot+o7tuLOvEtRxnRCU z{uJ_OjCF&2JBu;r3LSmje2qDdRc?f}vPEWLrM-A!y$lM?jiDcL%XAcag({n6SPB_v zfs?~FI)MIyISA4xaM0oIcT~%LiY>AYIpGQy{&5d8LW&}EQ=K?igmW*aVqG}ytH~T2*pmwX{=J0rqUmP zSP7UFC6y}JF=9Ij)pU#?28G|l|i zqHu^Y3?(Q>$<9rcsubpSxYwikQc_}$a2*JH_nc!M|1Op$??S`%;H+txxUL-&8fPn{ zWoZ&xf_{|LE#}Em4w7+G7jhc{C5x2(X#PAn;yABj7gQ`OhI2mFVGgMVkdDJKl*k6W zRP@jZI-5f=A2vv(8J6G>QucAp@kY=P^3MQE!o*b@bC*~OOgVJN(IzxZgYc{T=4&p_OL>!0E-u$7XSF+}QK*ejqZt0<{*1nP+v>g;4O}WIv@V{gWOl}aSwI4L@LKjYl5jeCMQYoXPK%vy} zlUp%~=z%u3(t5znu=C9bZ^zv>*73x?>$o8_Yl6^2OQTj7c-kv=PQ(bcM1u)Fx3SU(6i%p&UOrJ@TDG%jYbLSxQ)Y7Je&7E z5lMA%Y%@Ys?pj>hT*T7&qmvhF2%5>ES&GH6xIDd5{cA*uE9!=u)~Qk+=~y?cSFYZT z2)}V*|6=mOvaiQhEQ%_M>vmJc<}A)19U&dp%EF)Byv&c|y?;*yR%}N)E?GGjcE3l^ zCaOKoHp`1db{=tQ1-lc*mGft(p=PY>5gJBKu_P1IW#8TG`JU0N&L09|mSy})^V z<8I;nJ6}pQFz`UbHrNf5XW4tDX;lt7<@7CL7NxDlrBE$P&Sr#@5SWKkf4az-jdUTU z8j`pacNsjC6iZ}F=D~rVXKT*s(2Ac;R?WcJ_8ohmtIw4m&;OaHRCZ3IW+ zm3bF@T6ireOf66@;@r$I|p?*|tTj`-a6L^S-fFZ679*Ku$9)+c8F4S8dR z;rC#sX(12}Gg`sG6uc8L_4wisAQ=H%fs2ekgUE^s{Afy`!h=73hWi;66}V;QF)Hfo z5oP+Vm}&S;pU<2XSrl0WMgy<67$$Rq$46e~toQl6{#lma;&{%;2>QJ1s;pU7pfce1 zd1hIafl8~~=Zmxi0+C(*$l6Go6#qjAgW^!=tolkszcrGGBqOQFpg(ex6*D3U2v3nD zgFzek_>Z`9eiqsf36KsYT3kbqA0dB*1wTzAWc=5R81>V9 z6#;x^Rro6ckxdXR8QB!M3DV4h4r+WMP{wcbn~_a^&?PS5^J*?sN|7vR#tM`{c5nm& z{y^j=ug?sycEjWMB3OZ-f$E|5h%V#=;SrDj$di+z!c}0vN9D^9H3S~?Sq_oai@%HL ztB8!>5gETTGJZ0$4Qlt}O{`;q@Ue2Jh(lb%0jceskz;dJy-z~Nb|LMl$Tq(u z7{3#b`pEbxw0i}&yU&QU)%nW(k=>EDaJy+nVv+fgIAf@t<@5NZ!m}*k0d95ZAY2o$ zeI7tuphMxaIFoRVB1y|IFar3)eBj}nA~(Tim>=m(pl#A}w<&=>UhQMuql68SDwKf# zXc(^C_^)AEk?~JN>M9~@`3c0;EUYk|FfgJcT8`4@ecoEm+$$V@ZSYHvmm{75?kv=4c4R|!8>&VX;@cyXPTytplkzX!>nj6per3I@1#OL#E}02h}D zFC_s~GpJ#J_n^reWx($r<7Fd&=?rEtn8~1?!7K)|8O&i2V=$M&JO&prm=7?1f3q=u z>x3O4_m(-1>dt%ZU{TDu>$51PPncKn3)%R$DAt7?R@?+xl}--lvx$L4v2DZq22#Da zCDDT$G3izNF1<9dtasV+B`aFnk}d5krWrkERriglA>@R+8tQDyFztZHjj z6JPE$Fd#r!7$Eu>Q)Z!q!wTxy7G_1NfJCZb#Bfo9C}>8i*xnJ3eom1MlBCLuBmuAn zV6{Sl#c}ttV;%z!UkqMKJ%P@$Kn7-l4Bud?6q_XZCLktQRYG=ooZ8EoSnMtFh#4q_ z!}WFOgOTwMMaKWAUfJ)5AR5elZ2*2O0GWi_h^$sMLL&4%T_Z;PoR5JN$juKwEA?uV zdhJH#L^qMO;w7OC6mD{r+dO_~5tr+5{S{iU;w&$Rkupw^D%>rs#}|Lu4>EwzhCBLl zAB|@7ThTpc^xAA<2p7Q$horc=lR2C-z{mXve|W;6n!=5=m_E&qVX8rR-MFc{Hu)XCgIPS1;~S)_0(rd15+B9(!i7krZh06fhi44Y2ZIh175uUL)ZkQab84^<3BH< zAH$QE$S(>Bfx?I1Rw8VK(KyeY51bXxvG~;{^^mXvihx~)2_MjZhwv5|7w!Hi{?(S7 z#$jIn5Pj}E{Q2|n|LQ#atFfgJdj`LKrdCZ-SR62h?`nLpY5+uHSG*7kU|i)qJ}wnt zh#^z_qDgX@g^r!!|bgfIRviNSCB!6L`?8S<_z`3!kcNb&RYDZHo*grJYx-Je^} z*54-Qv*r2cH|B@DpLc(rB`Q((>Nnh)CE@^i8s;|s+xvQuzt3G}9jXvl-ArU>yXU?i z!`HFg}T!$0fZrX^Wqbwep%-{FPB*CMdImdLZPk|+728+ zWRZ`$v#=4zNqo$~pZSuiM-D0YSe(yuox2snK#zI(4<#FrNgd+yk<{5a{ZeYGF3&J* z!{JE_GRWhY+>o0EgE$09%CQ%Y$dDT!sPm19bKPQ4w)v4oJq{7u=NrCqW zkb)2I__IOMmfpTNm(0w2nYUM(nj8NSPLfVBdeYsL{7|7!uppJu#s zYM{o>O%^`l9&pu)Z>lsSSH2&^pC0^WaQt!wuzum>I+xxkL4QZBFOf3%zR2s{EFoN{ z;PJMYr?MKpn89b`S)6xs%c{?Ek$0%xl>^>R&EZ|9{h3M1vvi)ML)kff;GuC) zvd#<0xJ!EoZ$99yiAm<#>f{>3rcACeE@+mdYw1ZFIa<-yX7m>JoY z6&X1PM=->MI0;$8f|qO{ClJ_>g9J9&1a?W5Bb$$G2r*egj%7pGkWJXI=KEK5znM3Z zY{V|v{eJst?5WpP-CbQ>U0q$>@4eBcOO6Xe2w~#;=9@x1ge!ekGCVsNMs{)4SBk|0 zzVFU_NZa_`nXUWc>2O~v*`12^hC8E)L^2cJ6AP#M6XAFw+_a@7+?(u*)fW}{=P1@& z*9fsuGsLOWbr(9Vof5@bfo2JD9F(x6&iJ%SKSKCQNiUId6NTiLA593*=|lZugmC~x zR~OEG@*W{JQ0ftUeUupSIVD6PNDst>m_8!wtY}yW+f~2@zTSn`XJUskz~_7b0D0V3 zw_uWdMSUur>O`7ldjwZ1a|gbz&q^qyJ{9Xpq9DmCPT@=C?#0*jSt-P77dnxg(7=QS zCNwaife8&vXkbDE6B?M%z=Q@SG%%ro|DQBK`)Yh>Z>r&BTVJ&gUkY3cRhR27Oxrcm(^ zfPO5DT#I3(420^1M z9bzu0tvE`jHvycq%M|Id9I0H9F3*uF6lr&kG*yxMbEIjCbRb8Xu1NcHq)J8V$&qF# zQg4n_EOdXnihPp`u;oq7^9`&Q6@ZR~0MT6)xH&MT@#)J1cK?P?dz8Mh%9txEOdh>I3hw3LfBQ_%)ov{{OF&_$cAXop<1If`~T zNAv4t3;lZ4oYQ*fv{s{qB2zI7E&byK-XtcCh52BLe}gZekMsriXMMpm6s^;$Q{MxH zXJpw4p5&aKF4H{WQ}Z=dqTE%Y(p}<1PKgRvi5cz^uQ?^Ax=K{}+(mZks+no-B7S#~ z&!b2LGu=8i4^D|aLC!IyECac4V=5Pih5l;zg85!?om7F+!FrUF{?O6EK2W&dN@mvd zI6TlX_%waog~KFsB}qj-`lFBuj#T;R4~jk`MQ9M7kV_ zNfdaehAwF={cw}PtK52&`55zEVLuwVR_Tr0R0xXojQ#oJUTbUrB=z* zQtM68XR*-?E`lV|Fe#_3XvzE0LEZQ9$XuYc2Pt(A_?4Pgz?7|i7L{|YCNH5}PwFvH z1D@R4CwcOso~_{IV=XhCbO+MyvM||Oz)XG`40(vr{}rh>-+a?bwt|#u@nHNhnfwu$ zk$+zG&eWG3O6sdls`@LbSDkbuf^x}osRmU`t+K!%8!a#`e+;nV2}m4BeGw(6-Uw}K zek-I8dLiS}$1rf(NvlkvJe^Kj<@zAjcymg9k^XKbHz!9j@@0^|+LJmP|sufF}v)&w!*A z+R5{fE-EWEm%N0&_@K@CAS4$MSO~E6agZ^R$p#>)uYh#~2H>wP*YnCo7K1oM-OiSM z%qd$pIZOM#L#yqdA{Egvbp#`H%g>#v*^VOAt%l~jrb0=~N`F<|sG1j0O{!2cQaI*G zIRQjdrGUQV5)@uh1Y3bR;B@`Ves=oJH=myp@bshCTB#MVYP|s~xfEH?Rf|V@S6T@<3 zdZCL_?I1J&V0 zFeER93Tsx|35Wf86?Rz~3bcy!K@!TAErf2XvF(tPLCyG*xKHSxC-boiNqH`KP@F57>j4U1r_%fF1A*Q8HkawKD_n<#pf!#DjV?Vs+oZd?}Fgr7%#4`BLc2 z7p;Wm%W`eaQO%hqkV}4O{8})6VG@*PfQ1Dty$K8v4=lMCh2V`0xh`DJn%RuJ3=4@a z4q~#I%V^E9lh{W2A*WPbS*caC*B7wbTy>LMQDR}aqRI&?DSMskhLU0|Jd!&skt;E7x0%qM*UUyu4xWyIA;8<)itsn-fAIrU!l!jK9=r10-?B=%|68~ zHrYgBP1w#gS|BxGHWYY6+%~x#TQ>jf^8uS%FY?t|KG}3=7;Av3yL9a+`v_$`9f6m# zLXLc;qIQJ{K$N^s0phZwpde%kxQw-+W|uc7nBN+N)i@?XgW9mfV)d!EJ3zW%ZXW3} zkQN199k%44dS!p^d_Lgi{uJ7^mhD(EJPF%zq3BGGmh~dtFsIVGXGJCfR1@xrpn?^_ zyrKPxMS2zpivk`QKZXiwf|mCb3VPcj7;oz~Z&_P`*K@(IEQ(1z0`8q-MfiL8anow^ zSf_5L<;7y3pYYrizjEPA)$oBPo?;LJ&d#kTtnl9h2WN$+DdQ-sVSy{-F|#O*jVfeYOjVz+iwkGbv11^*MTsE++Z|pM@D0zp(hL|0?(AQni(3PW@;BHJ)Ih8mH?+8RME zs{r$ics&eWSQfzxT+P~uF^J{elwQ|wC8W>Cn4LCx_bPF#>^37L+X)R(d0=eNp`le0 z8__EA$vNOcE?_!`nK=51Y=>Al?@4XNI&jj4mqD~5L-Uh%1+QBt?WwYx950`=r=>c$ zY@`KM)$&C#1o`CCxSpHs%d+Qz!VD3S(z<0GuPsn1tX-4X8lB!Pe9m%`D{n@v$tamy zXFOPERK!X4SZLT3ocrr$*-~dyy>+@>U=Nady$mBekY5X;8hKu4#)`|llTT|n8<48? zMxZsz@bU<-S`mqXsZ~>ESSmiaq}QDx$LaDSIcPo(472vLRjfHNmi?Hb6kWvB3t)bR zBA6AH+{|L4l1-Qtmpl1odHJ5(5CyVr@Y$ra5}L~%@mHvWrrmS7aLF|wy8Ll=CeN~@ z=1O6W?Dm*bi2bW>MPLM$n!4-Ya2n)v;zJX^Gj*pr#GO#JoWCBXIY_Xa1X_$c*a2!iE_#Y^TO^!M@$d7vba_R0U z2qBir*_Tx_4{JmyYY>IN#hXUMLZrws%2_9u6p+X(`gqDolEd0t)?VO#F1qcBBD(v|B^OIH70X0K)rc@nx%}VWsXOVhPF%~O;Pua>MZP0wy zPNs;pm+~~p%1#Md|Ne+;9m&t`cIN_SU^VNwn+;8h+k;LUS+0dEB#44n*k^PFD5 ztGr&o%WlvAq#w$Sv_qmajw1X8R(bkTTnp_q0tbH@p@P3Cy%w{mRC)+ryGuPG#Fv$b zsx6M~rPD|t5^Vea&9`O4LRMK~;j;l8R}5hv1vMGGmJDGNzzF%dA#gXnw5z=wjoHcF zfbj0LhDaY$2z!Q!2UO<~a5|m0oX%VMowuCMTlt;0oX%Ua^A;b|EWMQ!&TeGcO-PPX zNrj`5D@Yq&Uowhoh7?z7hDtp(v+|VSff6v;xW67~!-F6hp}O+A3!gENN&T10DG=&E zFQ}7CvGduJRf5GEDx-{5fmL`F%3&3z3(h@szV|a5dI|YmhFw?_ak)u^t-P4#4wf2x zmX|qY!`COr@M4I-Fz-0tD;A4ZkLAY<@d=cn5B8QcV|3oO43P&=Nt*e{Tq-XVU;v}Z zgbOX+xR7+X(87<)N_n9k0;7drcZC~#+^3tY4qbYEFE-m;*BD~E>zaV1!F_& z4J=Av^B>UD$1#tGHW9Mc}%#)%K##kzx>N$+AMrdl0b5YRQjhi?PIY3sNtkoAPv+ z2N%yayKbD+TJp>|#4Fd5k{qMk!Kl<;vetkK?Bt!m;BgROn1eLTrM`e~jTfr$sBbaK zjr=b0fv9_>J<>vC=@j!?p~59w5u&&(pnQm!M*LJHXDV|CX~f_c>GFJEkuQlEY0176 z<`QS=V*f%eG}V( z?2cfN=Cs3~GEaTDY$arcf=A_qZqMVakkAlSE5rWRVFQPk-v&7mcjl=Rbrf+Tzz{6E4+qk&LFX~AJ$EF8sp>}EiuiuwyilBU+r8A+N}kNKbVU2-^Fgt>#{Ibfl5(IY$2zD_gAa^Kog z9vQQU`}_Gf-h6Y(r~XK4FRXiAHJ{b($QcP#Y0K> zB?M?$^Wgi|$s5QBTtp0{mArlg(I(;t0p$6L(~heiH^J?WYA5*tRE)s$y4y)!M@0CZ zJR*%{#0Nm_ctkrK&qdI?k-Qr;{}D_WSnu3nx|-?tgN8E=TDz31C#|R?uU)VM#F(@S zgjo7eA?|R}h9N>5hMTcrbycPse2>_dL`VovDUXx`INV$Kq~rp}m%K5{Q(EowS*yhf zgMSDihiTmu=fIE86H1jt0dojTiX$EkNELP(w@b#7)xYMmf|gZr)hAbd%4-|y7+J!l z01~8q=rTanOS*3eWpAQ7$rDJ=!)ckc8=BVB*uHU(j=iLH!f5cRWaxHvu0-w=%J?xq zOK=|QV0hqfNQZ7qAVtb2rW(+SpOaJDcvyK{P4OPoUGWxm-$ixHEOm~=Ov)q^J%WDI z$Wv5UTaz-2&fq01zPam_&Y=>c!}dA1(0gibk?lKC)^y;)(IfT~++wEO>~0lq0vj$SPz1lqH;x z-99<2ETI7<$gN>MnBs+T_iNJI=vV7IU_|--a>iq1_Z<4jUOMz_XVFjU?;W^e?{e1p z&vUq{^lbfo`;!aoa%2J1Z|gJXl*gwr!eX{Bi~U1aj5A19Ao5VYzUSVU4XX zIt(P+!$^;F9!zs&Q_J!=Z9nH>4# zIkK0!!M~a>PI%po9|KQ2BTtOuM~=6kyDUq-MHf5S?~0CZo;tf zDSuH-n~x9p3vGG4Pe(A0{u-7`qKsrxx1A~WcU5IA$m3KWp90t2!E@~Rc=ca3`dUBch`g7VURrm*0oleCLsZQ?n`|S3vv(rsIlE)!u3=RQ(c|Xo+>_3B#^)pEoUJd8 zp^yK7?CheBt$wwV(p)IOf#CS${!<+6VU-Fs;y7D4mS5#xe6>8obSStDG;;)HqzAYi z_lW7BGgoC~i3ZJm8`&v06hkFf(Wx$<|FvaKIN0PKmK!?vu^(1zU_}G-~tFZ zkJn_1iRcrtK$_Yf@#4a1_o(c~G%0I$Q~37Kq7`lu1r2We43(I9d%79z;4U@Y{4tnh z%7uW|Vr+jk}! z5Sssj9*wi>{kRph9Ubw49^D78fZnIUMzZhc@$F8&i+R@f^KLHeI(-Be53CU#Q~2T;LSuFvb*2tI|vOU5TlEHqwfGx z^hO_DF$)_ESG&E{41@q7le~bQKjQ+Fj z`t?C7nw*CsrQRjiA`j1Rp9>5calLk{-tJNF+Mes>1izd^FP)cKcI$NjgAG41CdICMDG~-p+MCnI`Mp#Oqd0=^ zlbH2S?hs;oOH<27{_uAn{{3C|um0Nd)oo8c@ZJ3$nn=fbdOMn8>HV2xU&of_)^KA_G@XtivoD20;f3?(FYIV+X>C}%umeBh zx;2%&GS->tNbb23wf6LPgIM3!1z#anw_LnhBae?yA-)F|)X%SPxM2Qbrg#L7jl^r{ z+H44Y1@xB*BHfaqR-j}dzKvl9_FCpFl{yrb_R`<{o$^1b} z+OFLv4Ie4u-?avM`iNSGJ@R|~uto7{d|jg)#6b{X{jZ6qKhyuUU|@vw_ai8f*yBl2j+v8rV1@wg10pb<}%~u_oLnr564TC8yx5XdPpgMp!fcQQj2BHsDu@ zsrALcD&U1Sao$Q`9;CMk9eMOPrw{h{e$Kmu^L7EF*7qRKBih8Z%;f;`d}2R-WSDrq zm$5Wqkn9t{iZCyZbGh99t=ptabzQtTYQ5cHkHs~N6ixRK#DhPxPE#&8eAZic-K(+md~4l}%# z;SCIrGd#iYR)(Kocn8BzGW-m~FED(N;iC+{%kUY7KVkSH!&ex-!O%8I@*u-9I(T4HDI^rz1lo6;PFEGk97 z&j zGMvk>f#E8KTLGQ&m-@R085?ka!#Gc`X2`?vt23N1ugR@O6dNps%`k zLSYM$XNVsvY$@^#@pFZ()N8Q1ysEHudH~oP3fqi4kFaJ6d_H3DK%PegBqloa^Pq=~ z3QOn>z&hq|NpS>uUU9`-i5+9?HHF>A*vAlKQ6IjbFGb0(DeSBI3i{>ob7bCk^fj3I zvl+X&{70x)Ahs~}zVe^y8-TURJn@>o3)oE&s&}(^9VH9JT?#8O2z!RHYq(yac#g4e zi!$RfYi=E5`ebT+d!%HfWPXrNY+ZN%Im> zD>1RnT&V@ca)s?MYqe6*mBr?1lf`j`U2d+$EA_W4tlQiO5A`{PCBUUzd{tow&_ady zTZIjot=cs4w8CyM+ku^u7C|)hb1hu@`*bG*iH;WS;o7c>q|g%+r3) z*iw~O<=G%A#afj&m$6ovhZe3yy~*|5g1F9eOq(H&pC_@qfrZ6<3R%Q8;vvs1+AQ&$ z!k+frs?8QJE9`mCpKEi)8w&e{=P&VycI^UL?{}WhYc--xVZ!<=tzH~oNO?!aRO?}F zfq0IwYs50^Z?r|??gm+}$@)8Ov3L^qfzdj~=xOZ&@f(G$H=os(iV_a&J|Zr$exfZG za~QiubX(VI7Yg%y$>oUkqIQv}RoKnet=ekQbAinJwDq#qBx;vP>|wONRxCoCN4@(nMZFH{qN#DV6cHHY$dBPI(2ogMC{(?cE?+RNl9>*SrBehY7nv-yt$tp4VzS#fuUX zQTu?lOKik$j{0}lo{u^Aq{5Ed8?au#Z?(+(7-P>V?6Zv3Hp;w5?OU`q@qNaQif545 zE|yb(jL|&B*jV-IYQd7qIbH%jbU#(tx)6O3Jl%@%RF zm9a1$?IY|Hj6I~V3mN;G!hXWoBAh%?$;%jfPGNf(JGNEkbu-q+LwJqoWo*uNnU`j) zkcaRZF~Hcz6gJG*%2ru2Xp)wmRM>Yp?+|uf)cP}wmG6|;HpU)M*e=G_?~-|Qn9HIz zi7l2q6;{sJZS68|8Dp(DE}|A5WG+3IO6*a_7IjGM4aS~Rm@Tl<>Jp6lWWIr@fR|W=gMyJ5MwWCTYQ`KsJJ33 z@R9RqkEqF%SdG3*?-I)twh(zSv0h=QR;v3>eJaa$HkU{CfLRd0pauU{#?uCVpypuS&xS7KOm z-lO-5=M=WXOy~(=c5;uz4s)NL6!R5!xp|%5Css1{l9u-0q+ccWsJub{29Xwh3hOpM ztf$4*3QM4cesQD14xse|;x>g1nYZbO#9a!z!MsH~B<`0O`nOLX5Kl|Y{*w7A{jhkE zF}WTc7O$#$v>qK6r)3_mM~6j0m+S+rM~6i@V=rj59vv2QWgc3Xhk7ej$s7F->Vu*@ zM)f`-Zu5Ty*cFUjBko53-VM4Y5`_d8U>iLaynyMu8Fn*F0P3Qj(>F7GouQk<>0;tW zP(LGQS-x}1J9b3ee8TpGV=HHvckD9R^YlrJD{ zh`(ma6M#CW4e?Z#q6tZVohh;{s^!QaImjMWlo0)XuLE^KXJ3XO8B9^nxfcNHstlEP z(wjJUa)9bm-!-uUXFc@7ai)Ki(?rq49SlFkP-;x_{|c9pRv~4U zz02tkeRq}l0dsiSMR8lgnbPC8kXM-VtK7=?tp#Bx`Zy!#6#@LK#4dd%_P_zaFCp@q z$r0a7L33$9P~>}*;q`#K^qV<-E5kb(-ox-dhF@m*D8t7YKE?2dfRE_E1pK!Cs`x*J zPw20U73NdArv19`2YNvB6#YoA(8`N`qR-UMDf$^=pcUqC0N0zp)6dnKisp$0C^^ZX z+{p~50=9Fyy=WFw&cjK=PxasFKEMrPl}50c;Wq6{MY1lH{5sld*Pbl8%xKqsR&*K8 z4k*^I(Ehck(}<#cOhmN{i_=D28!`_YS810PUu_I%E6n#B*K3(#DtV;%7)oAWeB7we zK2dza@IkgeL;9ZLJB+1Be-h=th%z^8j~8zcx3Ua(GUp1GtwQ)G{nWSzJbwYW-uxH9 zZRTdZLQt)Hw9C!k8~175<{L;SK)**jz-4YQO>>(dsoKG3zW%7TWs=X_rnOC)1qyL! z&*oC}MEu)D-y}*C=cssYQql})FHVx$9x#2vD)~L=MJ3mm?V_q=zW%t@T(U+4w4WFc znNMl^OCC30faFh`zXbfD`8xMS(|@YJ0J<6YXVa$_2R4YApiK3=pfv<$dd_9a0#G*K zcYO$wZr|;xVE$j`e$hBS<9S^BM&RE8zXeDXSRmj-=HuF9fi+?&bEpu%4a~IK#h`y4 zU}=#0(rwmS+q6Z&jaIY%b&Oy$x44bV+t||dVy8G?qyQJ;&2?KWfj75t?tK(+C87fx z&v4uTxE`lNHr~-Z0k{?S-E5pX{W)NpxC^jD+yi)p_&i{j_#)sw{2ehHXT1*t_KCj+ z%!uy*9>P06HrjX!a9I2R@O|P(fY*srfXBqo0FR4b0e)D#0{AiU8sKf>b-+9D`$sm~ zGc;S=Eo{KgiXy;!MG)`-Q3m*sm=5?gXa^E%)Vnr~dUr3UAK>&u8uj#R8uj!Mje7bm zje7c+Mm>F!OMYLowR6N5jg+Xz9n34Odh9L;-XLB9yp+>};vbN%;dBe$)UU^HiBXwO zaUzm?7+OvkC5ggX1L59E3DSgzQW~}ho*zy0H^|J04f7C6bz&OVU;hFaH zjD^N>W2Mn#Y%+>OyD?k8(nuPgHe%X0jBgo_8{adYF@9^5nDfkPv(8*#Uag(h)|%VQ zOU zB?GM)_@`rCqcd6$LoeFZ(Y_ZHAO7i(fncR50A&WCj#*R$_%1OCl;sSshqu;YUj#pZ z(@G6vSc>#9$ghbT8GaCV3UqN3!&`9Ls=@jyK)Dll4!y8+1F(&I-+@#}G-(Fldd&m4 zQS%CO7~Mzy$Bo}`1T4f#^cDZbi-?NoqoI9yb<=P^37`COLs+Tlj)aB2**JB!ah5v? z`VOG2DU`K*Q?jeSCw7s*EtlA#nCMM+CR07}J)&hGor(2|EqmzJjA-1tL#P`&(L}wx zbtBd!GO2;B$#^0oniJ_vs=qT6PbNU_?{yPe2l`@)U43J+rw9B{EG=^B)zNg!T_cwx znu%L170uvYnyV2PbyKW2nHty>O+>q6DIu|~NV}3dqdomGvF1=`tdAv>g>raHCfd0_ zhpvxB`*PT({+>*{Gn&pc#d>1h(TvlV#%NCuv?kUZz)di4Kt^+8vbQgqitg!&3Eb4` zjHT1gwJ`~0C3|qIsdK+Wla*A#t*Ll270(PfOwbpV@o3Agk$;tw^7Bwt#Sur1bJQ-5z?t{uW$ zLo5g%A^qxsOf21++|dk^BhZ>;irA5f_iRu0C%QnOOEfhg>N`8hXzCe4eiFJ*K(0;E zcmleG*}7VzfdU0X-v!M>M81b8l;B%2sJ#mWUlxi3WKO$xi_J;ggl|rCro^hQt~ddV zS$}$;gmJMcd4K_|GI^kvVXBwYy|OhLVl>(-F7E9UjlF$w0x5BEPexqajc-h_nh5lY z?Xiql)kA-kaaHG4{qa<6Bbm~67$s&8r(1eru|9!2u~}PMb10q>Yg4h98vRYtzLtH_ zRICfQXo+_xqCITBVplYtk*VfHUw=l;oksA6GGeLTcmnpVtWRuBLP&sK9`I&z6J#8m zfD%X%+oK80Kr(tLo2Gi-Kx-1Z>WUrOvKQBMER_-KVi}huZ^t}7fH_3$_Ml6yEXN7Z zyh64#w8s8a3NvpE&rXtXC=>CrCRbla*TV~tMLH9&S59)O(>s+Q#7Vx7!X3afwjq$ zGdSok&5X6FB##QES7m6Rc&0dHMnG4!$aGtij)c;XWs9S8*2jAKFh#i6>}Pk%uH=^# zYO2cKDl3&%xMi;+D@=7H$!(!<>kvx$QDn%nIa15PXx|nXD_xs0rJ>lhQF!aLOC4Er z2QzXtSfBdhU6Q)xU?P^{p~{j}Yiy|OQ#beb?m=&(P>|{;r}N6~b4D#ns|#xn44Jzu ztbDGBr?C>nyKrrS&IY&vDY1xl(rVEN=amsn7~0l&Z%p8+iOed_h;<2R5hOi+o|>(J zTB0Q;lT2dy8<4KBIdLGlAJb@6dLYq>L4rO6r^$=#!8#{aLk$U4Y)zs|rSL~}6L@Mu zbqp5TDd(3WsOC3yrvxo9X%VAk4~J1wl;*Cj$z+e%Gs1_D!MHE-TYI zhzS$#1XsCca4vZdtQ{=}TA~MH2v_9dx-l8;$|9XSX`BwZ zJZD;(B(K+NV`zV;{p8kF3O;{xG9jHOh9#TW+PE5ij@JJeTwN#DJD%BT zs?MpdXeP=Dwik>YIKvA%7>0t=WX95KDBa3_Im{4d^f{qI21c^2KbpuO;5rBoj`8D# zK&7Qa=YXJbptA>Knx++kjSM#3>DDhYH^&aP*Es(j8s5HJ)+nLFuvuks1Y`^;>DJPgB3s2qYviN6WEu@>a=^U$JS5N4pbAIg|N8 zu5McWap?D#OVR0bKf*iaPac>>!Tl!+1ak$dMn1D3m9N@d+WLorB z_4Q?0(0p!KNbwss8ssOjNx=%7Owa>t9L2!+H^vh*+v(XclB6?=Z4dO2gtOWO<-|Cj zV?Pzh3hpBt8BBRK9AGS(KyX7%aSgc$!gW#mxL_+oi^(1*L~UtZ)w&N(sVk?VXbL@c ziN0M1q)G?PTLjrLwleUSX{^D~E|$uf05pZxunXn+DrW`vZ*6~14{1tZZR|zQQqhC1 z=-1J4EBq}cR(F3-G_~eXAFVEI3LwP}A#jFkbZMD!I1avwb*W@Oe2cTc<5ro5iA`CE zW&3E}a0U+;r#8kC-I;x|2nk3LiduA&eY@9Og&>J`MKq#~2wl@M#p`5qQ#{?5Oml=K zlNi5PiVY**@S0+KDKLO{f&O#Kj#E4;nmGiZ1~?JrT@bc%*`COKQE#-bkL@u(bfbj{ z!8q+Q21xxhK51A+PmDaZ*h4#(?Xj!+W7uYO2^mpiO-N;AoFG@g+?p;UkEk@W9;ur? zctfeMycIzf?V?D6Hf$VCFxawpFNLktqs_^KQekp2&q=B}A$hQt)3EB@8!_Uo`(VW^ zHw=toa>R)&u}H)YO2OnrR`C>ue;;h%5Mo+*gI>Y=eXJd{I#C+u23@dO=!P&FUqw+y z-PYUV*dLPh*%9QeIw%eSGl!Im85+Zemy$TUz=%utK&C5pw60yUCV{n=<}j)fk!NCx zCN@=b=Q=scWDr&NB;g+p#uJDOo$6`=f|*Ley=E)W2Ajsw2@O?%$HRddY&bb{L+A!; ziK09%?w}1Qo_(crmfl!qU$RSdI@RFdodEFNSd41J)VjQuz$>C}+VL za-zs3ek2CfOp1Qy9c2OQ@x*@GmW zNNB6_ny$oNUpBZLl=Q@-VYqaBWI_PGe-@Pz|A_qtOXt45KnykMMVntzAA|_Qq zju9uo=%!-?VPNDK`?!1LwCY)9B)RN*7*CXAH3F7Gj&zk&hiGxYey&rGdO{P6`&n7! zD9O3WR;9w+4);jNc){B8_?1|=eRN1t3!uB|ZcGm;K*ssLGfIUPoeWWozs534}$ zL7f~QGDxWzlHdSpc2Upqqu_{N(JC!C)N^M_ECePUy5qJNfVV><^7dJdR#42=n1#U`_B1pL;*hQe@(I}LV z^PI}1(YP#0E1VSMBHVJU!@yK?dC6~%Dn-1cH_0zWT(u&1YoZ{>Q559r2?Gi%sD`YE z(CHrheTNpFp`_NXJkPQn6k1KG#q9FGU^7e(_nlxuAC8fa6+bBCr9k>nKb z1r;$UTA|ivB3BH5X8dCHK{II#XRbLCm%=MKzXrIuoNj1noi5?1iv=OQQup>F=j{vo zjqwXhD_IYO>qJA2cHC|%H=Mcn(Gk*dtt9;D;id91?#$cnz*4e$YFRoLa=(W#CUQJR zo8@elonl(Cl-vp7()p9qkP+)zr25fQY}44Zshs>Lje2CwMx_-RfJV5{PT;f{(6n&= zovEf=7-*p(8*G8elkA;5w336WS+SYTB7d}~6;Vc#lNrS@9dWx@^0O~D9ikAl%mBEpNrprZSij}Z&-KYM-R?u?YQxLVSnjx$IgmHr>@s6 zpJ4@;n|NdliAoQ?M3`&fp+h3-NYI~Hz#|lz7MKj^tMmX?dVC)IrDC7YK)7nyLdO>r zO{**hrP#0nlg+TE73-F5k_4tkKqmlh_$6=x9s(8tJS&MG@+N?{Muq7oP(Xkl%fL_J z02C9z6OqEC2QN%|OvA)OfA~8Q1SS)p$1cnefieQ+1S$y7^Bd+g0@Ddp5|}}tia?ma zOaikA%qB1gz=IA1%PqjlUJH6LX81@&!vnK zC}ldnx)~wF3f4i!7 zQ#l<<2o673OvVuK01Q9Olt*o-6Mfc-Z3uuWXxM{Nm{UmE#go0>;P8E@865sH>e#_R zaQJc4Qs6#HJxJio1RnNj!sNUBuw69q58yLh_M6l|&FHM>;P8(L(WXPnN~mgzx5!rv zqk_EvRu;=TEqY#}3ZHKN7?5HBp+AKChut95dxQq1SYE@23!W0w0}BERpl4>PN`o!6LKP=@!Gc6m%xP3?{E<&4Q2|>( ztG^5k{|ng|Qe;HMf#KJExCW1Uf=4k8C{;AQ)N2<9hhJr4Q80p0#o$0^uL2zP5GX=N zBh2S0rkXZAcyvm@>&;f0f}bqrDo3X**YM0)YjMGvo*112(m9?PrjWM~Q$Y{b2ImJCQKBudG1x|4 zxDDT0eCOl4$m2C^kFU_{t@Mz)fIqNpuNj!^tMrxYRyjtJR10GS$yYfYRGE!5#sow( z2B!?8vY~(AHf$Of%;`3t*F&{X)bi3KZz40T^N>zwO3nVb1Y=YeEFrzo{~(N-zj%`y z`kh%!qjq#|u)H|fLCTyfEIt&iumkstNQ(^r60f_36IXsdpCTH2YisI)1p;Lg@A&NZD;}R#fGZ|SK9s4W+H=}`m=DF zg=ZW6;CHrv6r$20r<8!&TY&FHuA0m7?DtsGz7uk$$LP^mZPlU=c-93yr_iJa((b|T zIV^ULkbVL9&BwO^|L6>WFe=xmf@jiO3|dV9QUFMSNe`FU3Y-pz=y+@catE-lOk)2M zL)iNEahlPI@A=TtQnauLx$|)xx)d6FYfXoFJ1|<;ja&|4Y; z$3SA3${!z&b}ekum7R{8<8dAMnBF7kM;7B>fL(pxelP>|6AjU_9=dJ zq5&=-?lnsws|K0mK{VZS8O`Zs^k3u1N!|opgve(;7-SGhX?%C27jYQHM05}-z>Oj@ zy6ZF6ofvs1X!N}wx}_%%nds!c8IjiLdq#L82Jf*rZPMX?0x{WUT&aEf&=DdbS6s?i5|)eTgX8|x0zSTa+a%khg-IiC5^C*@PbxftK2 zINqcCPYZ#~N90I9l`$Xh=x97@@-U5#=zCl}qC0K%kdp52(We!^E~eoPI=X>EC8=-u zcf@Gk(H$}8e%D*w8Ka*hq4%IS$BlTeWIg7W8L7>)>9UFIuY$C6#Eh2-pdUJ>d^Ex1yXFfZl5fk-y~A{?ew$K*%=zlv8PF^U6ROZ_+)PZXKZ zz=Q@SG%%ro2@U)&)4(0_cbda^4s_x(p@9hvOlV+20}~pU(7=QSCNwaife8&vXkbDE N6B?M%!2eDS{9n7w$|C>( diff --git a/OS Project/bin/Debug/OS.exe.config b/OS Project/bin/Debug/OS.exe.config index 68e2483..aa6fe67 100644 --- a/OS Project/bin/Debug/OS.exe.config +++ b/OS Project/bin/Debug/OS.exe.config @@ -1,5 +1,9 @@ + - + + + +