From 086d4683fdd7b53b6d3f1db1ddac2513b48c6931 Mon Sep 17 00:00:00 2001 From: Horst Beham Date: Sat, 23 Jan 2021 14:22:18 +0100 Subject: [PATCH] - merged projects so that there is one loader for each manufacturer --- .../ChanSort.Loader.GlobalClone.csproj | 136 - .../GcSerializerPlugin.cs | 23 - .../GlobalClone00001.xml | 6427 ----------------- .../Properties/AssemblyInfo.cs | 36 - .../Resources.Designer.cs | 108 - .../Resources.cs.resx | 129 - .../Resources.de.Designer.cs | 0 .../Resources.de.resx | 130 - .../Resources.es.resx | 128 - .../Resources.hu.resx | 129 - .../Resources.pl.resx | 130 - .../Resources.pt.resx | 120 - .../Resources.resx | 121 - .../Resources.ro.resx | 130 - .../Resources.ru.resx | 120 - .../Resources.tr.resx | 130 - source/ChanSort.Loader.GlobalClone/readme.txt | 13 - .../ChanSort.Loader.Grundig.csproj | 2 +- source/ChanSort.Loader.Grundig/Channel.cs | 3 - .../{SerializerPlugin.cs => GrundigPlugin.cs} | 4 +- source/ChanSort.Loader.Grundig/Serializer.cs | 2 +- .../ChanSort.Loader.Hisense.csproj | 8 +- .../{ => ChannelDb}/Channel.cs | 2 +- .../ChannelDbSerializer.cs} | 6 +- .../HisDbSerializerPlugin.cs | 16 - .../ChanSort.Loader.Hisense/HisensePlugin.cs | 25 + .../ServicelistDb/ServicelistDbSerializer.cs} | 6 +- .../ChanSort.Loader.Hisense2017.csproj | 110 - .../HisDbSerializerPlugin.cs | 16 - .../Properties/AssemblyInfo.cs | 36 - .../Resources.Designer.cs | 83 - .../Resources.cs.resx | 120 - .../Resources.de.resx | 128 - .../Resources.es.resx | 128 - .../Resources.hu.resx | 128 - .../Resources.pl.resx | 128 - .../Resources.pt.resx | 120 - .../Resources.resx | 128 - .../Resources.ro.resx | 128 - .../Resources.tr.resx | 128 - .../{ => Binary}/AnalogChannel.cs | 2 +- .../{ => Binary}/DtvChannel.cs | 2 +- .../{ => Binary}/DvbsDataLayout.cs | 2 +- .../{ => Binary}/FirmwareData.cs | 2 +- .../{ => Binary}/LnbConfig.cs | 2 +- .../{ => Binary}/SatChannel.cs | 2 +- .../{ => Binary}/SatChannelListHeader.cs | 2 +- .../{ => Binary}/SatTransponder.cs | 2 +- .../{ => Binary}/TllChannelBase.cs | 2 +- .../{ => Binary}/TllFileSerializer.cs | 2 +- .../{ => Binary}/TllFileSerializer.sql.cs | 2 +- .../{ => Binary}/TvSettingsForm.Designer.cs | 2 +- .../{ => Binary}/TvSettingsForm.cs | 2 +- .../{ => Binary}/TvSettingsForm.cs.resx | 0 .../{ => Binary}/TvSettingsForm.de.resx | 0 .../{ => Binary}/TvSettingsForm.es.resx | 0 .../{ => Binary}/TvSettingsForm.hu.resx | 0 .../{ => Binary}/TvSettingsForm.pl.resx | 0 .../{ => Binary}/TvSettingsForm.pt.resx | 0 .../{ => Binary}/TvSettingsForm.resx | 0 .../{ => Binary}/TvSettingsForm.ro.resx | 0 .../{ => Binary}/TvSettingsForm.ru.resx | 0 .../{ => Binary}/TvSettingsForm.tr.resx | 0 .../ChanSort.Loader.LG.csproj | 66 +- .../GlobalClone}/GcChannel.cs | 0 .../GlobalClone}/GcJsonSerializer.cs | 0 .../GlobalClone}/GcXmlSerializer.cs | 7 +- source/ChanSort.Loader.LG/LgPlugin.cs | 27 + .../ChanSort.Loader.LG/Resource.Designer.cs | 54 + .../Resource.de.Designer.cs | 0 .../TllFileSerializerPlugin.cs | 19 - .../packages.config | 0 .../ChanSort.Loader.M3u.csproj | 2 +- .../{SerializerPlugin.cs => M3uPlugin.cs} | 2 +- .../ChanSort.Loader.Panasonic.csproj | 2 +- ...SerializerPlugin.cs => PanasonicPlugin.cs} | 8 +- .../ChanSort.Loader.Philips.csproj | 2 +- .../{PhilipsLoader.cs => PhilipsPlugin.cs} | 2 +- .../ChanSort.Loader.Samsung.csproj | 50 +- source/ChanSort.Loader.Samsung/FavMode.cs | 11 - .../Resource.Designer.cs | 63 - .../Resource.de.Designer.cs | 0 .../ChanSort.Loader.Samsung/Resource.de.resx | 101 - source/ChanSort.Loader.Samsung/Resource.resx | 101 - .../ChanSort.Loader.Samsung/SamsungPlugin.cs | 24 + .../{ => Scm}/AnalogChannel.cs | 2 +- .../{ => Scm}/DigitalChannel.cs | 2 +- .../{ => Scm}/ModelConstants.cs | 2 +- .../{ => Scm}/SatChannel.cs | 2 +- .../{ => Scm}/SatelliteMapping.cs | 2 +- .../{ => Scm}/ScmChannelBase.cs | 2 +- .../{ => Scm}/ScmSerializer.cs | 2 +- .../ScmSerializerPlugin.cs | 16 - .../Zip}/DbChannel.cs | 2 +- .../Zip}/DbSerializer.cs | 3 +- .../Zip}/Utf16InsideUtf8EnvelopeEncoding.cs | 2 +- .../ChanSort.Loader.SamsungJ.csproj | 94 - .../DbSerializerPlugin.cs | 16 - .../Properties/AssemblyInfo.cs | 36 - .../ChanSort.Loader.SatcoDX.csproj} | 8 +- .../Channel.cs} | 37 +- .../Properties/AssemblyInfo.cs | 0 .../ChanSort.Loader.SatcoDX/SatcoDxPlugin.cs | 16 + .../Serializer.cs | 8 +- .../SerializerPlugin.cs | 16 - .../ChanSort.Loader.Sony.csproj | 2 +- .../{SerializerPlugin.cs => SonyPlugin.cs} | 4 +- .../ChanSort.Loader.Toshiba/ToshibaPlugin.cs | 2 +- .../ChanSort.Loader.VDR.csproj | 2 +- .../{SerializerPlugin.cs => VdrPlugin.cs} | 8 +- source/ChanSort.sln | 90 +- source/ChanSort/ChanSort.csproj | 16 - .../Properties/AssemblyInfo.cs | 20 - .../Test.Loader.GlobalClone.csproj | 108 - ...Test.Loader.GlobalClone.csproj.DotSettings | 2 - .../Test.Loader.GlobalClone/packages.config | 6 - .../{ => ChannelDb}/HisenseChannelDbTest.cs | 10 +- .../{ => ChannelDb}/TestFiles/channel.db | Bin .../HisenseServicelistDbTest.cs | 12 +- .../ServicelistDb}/TestFiles/servicelist.db | Bin .../Test.Loader.Hisense.csproj | 6 +- .../Properties/AssemblyInfo.cs | 20 - .../Test.Loader.Hisense2017.csproj | 103 - .../Test.Loader.LG/{ => Binary}/CS/TestCS.cs | 2 +- .../{ => Binary}/CS/xxCS460S-ZA00001.TLL.in | Bin .../{ => Binary}/CS/xxCS460S-ZA00001.TLL.out | Bin .../{ => Binary}/CS/xxCS460S-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/DM/TestDM.cs | 2 +- .../{ => Binary}/DM/xx2350D-PZM00001.TLL.in | Bin .../{ => Binary}/DM/xx2350D-PZM00001.TLL.out | Bin .../{ => Binary}/DM/xx2350D-PZM00001.csv.in | 0 .../DvbsCleanup/TestDvbsCleanup.cs | 9 +- .../DvbsCleanup/xxLM620S-ZE00001.TLL.in | Bin .../DvbsCleanup/xxLM620S-ZE00001.TLL.out | Bin .../DvbsCleanup/xxLM620S-ZE00001.csv.in | 0 .../DvbsCleanup/xxLM640T-ZA00000.TLL.in | Bin .../DvbsCleanup/xxLM640T-ZA00000.TLL.out | Bin .../DvbsCleanup/xxLM640T-ZA00000.csv.in | 0 .../DvbsCleanup/xxLM860V-ZB99998.TLL.in | Bin .../DvbsCleanup/xxLM860V-ZB99998.TLL.out | Bin .../DvbsCleanup/xxLM860V-ZB99998.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LA/TestLA.cs | 2 +- .../{ => Binary}/LA/xxLA691S-ZA00004.TLL.in | Bin .../{ => Binary}/LA/xxLA691S-ZA00004.TLL.out | Bin .../{ => Binary}/LA/xxLA691S-ZA00004.csv.in | 0 .../{ => Binary}/LA/xxLA7408-ZB00001.TLL.in | Bin .../{ => Binary}/LA/xxLA7408-ZB00001.TLL.out | Bin .../{ => Binary}/LA/xxLA7408-ZB00001.csv.in | 0 .../{ => Binary}/LA/xxLA7408-ZB00002.TLL.in | Bin .../{ => Binary}/LA/xxLA7408-ZB00002.TLL.out | Bin .../{ => Binary}/LA/xxLA7408-ZB00002.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LD/TestLD.cs | 2 +- .../{ => Binary}/LD/xxLD750-ZA00001.TLL.in | Bin .../{ => Binary}/LD/xxLD750-ZA00001.TLL.out | Bin .../{ => Binary}/LD/xxLD750-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LE/TestLE.cs | 2 +- .../{ => Binary}/LE/xxLE5500-ZA00002.TLL.in | Bin .../{ => Binary}/LE/xxLE5500-ZA00002.TLL.out | Bin .../{ => Binary}/LE/xxLE5500-ZA00002.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LH/TestLH.cs | 2 +- .../{ => Binary}/LH/xxLH3000-ZA00002.TLL.in | Bin .../{ => Binary}/LH/xxLH3000-ZA00002.TLL.out | Bin .../{ => Binary}/LH/xxLH3000-ZA00002.csv.in | 0 .../{ => Binary}/LH/xxLH5000-ZB00002.TLL.in | Bin .../{ => Binary}/LH/xxLH5000-ZB00002.TLL.out | Bin .../{ => Binary}/LH/xxLH5000-ZB00002.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LK/TestLK.cs | 2 +- .../{ => Binary}/LK/xxLK450-ZB00001.TLL.in | Bin .../{ => Binary}/LK/xxLK450-ZB00001.TLL.out | Bin .../{ => Binary}/LK/xxLK450-ZB00001.csv.in | 0 .../{ => Binary}/LK/xxLK950S-ZA00001.TLL.in | Bin .../{ => Binary}/LK/xxLK950S-ZA00001.TLL.out | Bin .../{ => Binary}/LK/xxLK950S-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LM/TestLM.cs | 6 +- .../{ => Binary}/LM/xxLM340S-ZA00001.TLL.in | Bin .../{ => Binary}/LM/xxLM340S-ZA00001.TLL.out | Bin .../{ => Binary}/LM/xxLM340S-ZA00001.csv.in | 0 .../{ => Binary}/LM/xxLM611S-ZA00001.TLL.in | Bin .../{ => Binary}/LM/xxLM611S-ZA00001.TLL.out | Bin .../{ => Binary}/LM/xxLM611S-ZA00001.csv.in | 0 .../{ => Binary}/LM/xxLM620S-ZE00001.TLL.in | Bin .../{ => Binary}/LM/xxLM620S-ZE00001.TLL.out | Bin .../{ => Binary}/LM/xxLM620S-ZE00001.csv.in | 0 .../{ => Binary}/LM/xxLM760S-ZB00001.TLL.in | Bin .../{ => Binary}/LM/xxLM860V-ZB99998.TLL.in | Bin .../{ => Binary}/LM/xxLM860V-ZB99998.TLL.out | Bin .../{ => Binary}/LM/xxLM860V-ZB99998.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LN/TestLN.cs | 2 +- .../{ => Binary}/LN/xxLN5406-ZA99999.TLL.in | Bin .../{ => Binary}/LN/xxLN5406-ZA99999.TLL.out | Bin .../{ => Binary}/LN/xxLN5406-ZA99999.csv.in | 0 .../{ => Binary}/LN/xxLN5758-ZE99999.TLL.in | Bin .../{ => Binary}/LN/xxLN5758-ZE99999.TLL.out | Bin .../{ => Binary}/LN/xxLN5758-ZE99999.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LP/TestLP.cs | 2 +- .../{ => Binary}/LP/xxLP632H-ZA00001.TLL.in | Bin .../{ => Binary}/LP/xxLP632H-ZA00001.TLL.out | Bin .../{ => Binary}/LP/xxLP632H-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LS/TestLS.cs | 2 +- .../{ => Binary}/LS/xxLS560S-ZC00010.TLL.in | Bin .../{ => Binary}/LS/xxLS560S-ZC00010.TLL.out | Bin .../{ => Binary}/LS/xxLS560S-ZC00010.csv.in | 0 .../{ => Binary}/LS/xxLS570S-ZB00001.TLL.in | Bin .../{ => Binary}/LS/xxLS570S-ZB00001.TLL.out | Bin .../{ => Binary}/LS/xxLS570S-ZB00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LT/TestLT.cs | 2 +- .../{ => Binary}/LT/xxLT380H-ZA00001.TLL.in | Bin .../{ => Binary}/LT/xxLT380H-ZA00001.TLL.out | Bin .../{ => Binary}/LT/xxLT380H-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LV/TestLV.cs | 2 +- .../{ => Binary}/LV/xxLV375S-ZC00001.TLL.in | Bin .../{ => Binary}/LV/xxLV375S-ZC00001.TLL.out | Bin .../{ => Binary}/LV/xxLV375S-ZC00001.csv.in | 0 .../{ => Binary}/LV/xxLV470S-ZC00001.TLL.in | Bin .../{ => Binary}/LV/xxLV470S-ZC00001.TLL.out | Bin .../{ => Binary}/LV/xxLV470S-ZC00001.csv.in | 0 .../{ => Binary}/LV/xxLV579S-ZB00001.TLL.in | Bin .../{ => Binary}/LV/xxLV579S-ZB00001.TLL.out | Bin .../{ => Binary}/LV/xxLV579S-ZB00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LW/TestLW.cs | 2 +- .../{ => Binary}/LW/xxLW4500-ZB00001.TLL.in | Bin .../{ => Binary}/LW/xxLW4500-ZB00001.TLL.out | Bin .../{ => Binary}/LW/xxLW4500-ZB00001.csv.in | 0 .../{ => Binary}/LW/xxLW659S-ZC00001.TLL.in | Bin .../{ => Binary}/LW/xxLW659S-ZC00001.TLL.out | Bin .../{ => Binary}/LW/xxLW659S-ZC00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/LX/TestLX.cs | 2 +- .../{ => Binary}/LX/xxLX9500-ZA00001.TLL.in | Bin .../{ => Binary}/LX/xxLX9500-ZA00001.TLL.out | Bin .../{ => Binary}/LX/xxLX9500-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/PM/TestPM.cs | 2 +- .../{ => Binary}/PM/xxPM670S-ZA00001.TLL.in | Bin .../{ => Binary}/PM/xxPM670S-ZA00001.TLL.out | Bin .../{ => Binary}/PM/xxPM670S-ZA00001.csv.in | 0 .../{ => Binary}/PM/xxPM970S-ZA99999.TLL.in | Bin .../{ => Binary}/PM/xxPM970S-ZA99999.TLL.out | Bin .../{ => Binary}/PM/xxPM970S-ZA99999.csv.in | 0 .../Test.Loader.LG/{ => Binary}/PN/TestPN.cs | 2 +- .../{ => Binary}/PN/xxPN6500-ZB00001.TLL.in | Bin .../{ => Binary}/PN/xxPN6500-ZB00001.TLL.out | Bin .../{ => Binary}/PN/xxPN6500-ZB00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/PT/TestPT.cs | 2 +- .../{ => Binary}/PT/xxPT353-ZA00001.TLL.in | Bin .../{ => Binary}/PT/xxPT353-ZA00001.TLL.out | Bin .../{ => Binary}/PT/xxPT353-ZA00001.csv.in | 0 .../Test.Loader.LG/{ => Binary}/TestBase.cs | 13 +- .../GlobalClone}/GlobalClone00001.TLL | 0 .../GlobalClone}/GlobalClone00002.TLL | 0 .../GlobalClone}/GlobalClone00003.TLL | 0 .../GlobalClone}/GlobalClone00201.TLL | 0 .../GlobalClone}/GlobalClone200-inner.json | 0 .../GlobalClone}/LgGlobalCloneTest.cs | 17 +- source/Test.Loader.LG/Test.Loader.LG.csproj | 64 +- source/Test.Loader.LG/packages.config | 4 + .../Test.Loader.Panasonic/PanasonicSvlTest.cs | 4 +- .../PhilipsBinChannellibTest.cs | 2 +- .../PhilipsBinS2channellibTest.cs | 4 +- source/Test.Loader.Philips/PhilipsXmlTest.cs | 4 +- .../{ => Scm}/FileFormatDetectionTest.cs | 16 +- .../{ => Scm}/SamsungTest.cs | 13 +- .../Channel_list_T_J_ohne_smart_12.scm | Bin .../TestFiles/E_format_with_B_model_name.scm | Bin .../TestFiles/E_format_with_C_model_name.scm | Bin .../TestFiles/Samsung_upcmini_EF_12.scm | Bin .../channel_list_UE32J5170_1201_orig.scm | Bin ...ist_UE55H6470_1201-Suchlauf-2015-04-26.scm | Bin .../TestFiles/channel_list_UE55H6470_1201.scm | Bin .../Test.Loader.Samsung.csproj | 24 +- .../Zip}/SamsungZipTest.cs | 13 +- .../Channel_list_T-KTMDEUC-1132.6.zip | Bin .../Channel_list_T-KTSUDEUC-1007.1.zip | Bin .../Channel_list_T-KTSUDEUC-1007.2.zip | Bin .../Channel_list_T-KTSUDEUC-1007.3.zip | Bin .../Properties/AssemblyInfo.cs | 20 - .../Test.Loader.SamsungJ.csproj | 106 - source/Test.Loader.SamsungJ/packages.config | 5 - .../Properties/AssemblyInfo.cs | 0 .../SdxTest.cs | 12 +- .../Test.Loader.SatcoDX.csproj} | 4 +- .../TestFiles/silva_schneider.sdx | 0 .../packages.config | 0 .../packages.config | 5 - source/Test.Loader.Sony/SonyXmlTest.cs | 6 +- source/Test.Loader.VDR/LinuxVdrTest.cs | 4 +- source/Test.Loader/LgTest.cs | 15 +- source/Test.Loader/Test.Loader.csproj | 4 - source/Translation.xlsx | Bin 99634 -> 99462 bytes source/changelog.md | 1 + 288 files changed, 466 insertions(+), 10654 deletions(-) delete mode 100644 source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj delete mode 100644 source/ChanSort.Loader.GlobalClone/GcSerializerPlugin.cs delete mode 100644 source/ChanSort.Loader.GlobalClone/GlobalClone00001.xml delete mode 100644 source/ChanSort.Loader.GlobalClone/Properties/AssemblyInfo.cs delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.Designer.cs delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.cs.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.de.Designer.cs delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.de.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.es.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.hu.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.pl.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.pt.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.ro.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.ru.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/Resources.tr.resx delete mode 100644 source/ChanSort.Loader.GlobalClone/readme.txt rename source/ChanSort.Loader.Grundig/{SerializerPlugin.cs => GrundigPlugin.cs} (70%) rename source/ChanSort.Loader.Hisense/{ => ChannelDb}/Channel.cs (84%) rename source/ChanSort.Loader.Hisense/{HisDbSerializer.cs => ChannelDb/ChannelDbSerializer.cs} (99%) delete mode 100644 source/ChanSort.Loader.Hisense/HisDbSerializerPlugin.cs create mode 100644 source/ChanSort.Loader.Hisense/HisensePlugin.cs rename source/{ChanSort.Loader.Hisense2017/HisDbSerializer.cs => ChanSort.Loader.Hisense/ServicelistDb/ServicelistDbSerializer.cs} (99%) delete mode 100644 source/ChanSort.Loader.Hisense2017/ChanSort.Loader.Hisense2017.csproj delete mode 100644 source/ChanSort.Loader.Hisense2017/HisDbSerializerPlugin.cs delete mode 100644 source/ChanSort.Loader.Hisense2017/Properties/AssemblyInfo.cs delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.Designer.cs delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.cs.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.de.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.es.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.hu.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.pl.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.pt.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.ro.resx delete mode 100644 source/ChanSort.Loader.Hisense2017/Resources.tr.resx rename source/ChanSort.Loader.LG/{ => Binary}/AnalogChannel.cs (93%) rename source/ChanSort.Loader.LG/{ => Binary}/DtvChannel.cs (96%) rename source/ChanSort.Loader.LG/{ => Binary}/DvbsDataLayout.cs (98%) rename source/ChanSort.Loader.LG/{ => Binary}/FirmwareData.cs (98%) rename source/ChanSort.Loader.LG/{ => Binary}/LnbConfig.cs (91%) rename source/ChanSort.Loader.LG/{ => Binary}/SatChannel.cs (96%) rename source/ChanSort.Loader.LG/{ => Binary}/SatChannelListHeader.cs (96%) rename source/ChanSort.Loader.LG/{ => Binary}/SatTransponder.cs (98%) rename source/ChanSort.Loader.LG/{ => Binary}/TllChannelBase.cs (99%) rename source/ChanSort.Loader.LG/{ => Binary}/TllFileSerializer.cs (99%) rename source/ChanSort.Loader.LG/{ => Binary}/TllFileSerializer.sql.cs (99%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.Designer.cs (99%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.cs (98%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.cs.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.de.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.es.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.hu.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.pl.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.pt.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.ro.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.ru.resx (100%) rename source/ChanSort.Loader.LG/{ => Binary}/TvSettingsForm.tr.resx (100%) rename source/{ChanSort.Loader.GlobalClone => ChanSort.Loader.LG/GlobalClone}/GcChannel.cs (100%) rename source/{ChanSort.Loader.GlobalClone => ChanSort.Loader.LG/GlobalClone}/GcJsonSerializer.cs (100%) rename source/{ChanSort.Loader.GlobalClone => ChanSort.Loader.LG/GlobalClone}/GcXmlSerializer.cs (98%) create mode 100644 source/ChanSort.Loader.LG/LgPlugin.cs delete mode 100644 source/ChanSort.Loader.LG/Resource.de.Designer.cs delete mode 100644 source/ChanSort.Loader.LG/TllFileSerializerPlugin.cs rename source/{ChanSort.Loader.GlobalClone => ChanSort.Loader.LG}/packages.config (100%) rename source/ChanSort.Loader.M3u/{SerializerPlugin.cs => M3uPlugin.cs} (86%) rename source/ChanSort.Loader.Panasonic/{SerializerPlugin.cs => PanasonicPlugin.cs} (55%) rename source/ChanSort.Loader.Philips/{PhilipsLoader.cs => PhilipsPlugin.cs} (98%) delete mode 100644 source/ChanSort.Loader.Samsung/FavMode.cs delete mode 100644 source/ChanSort.Loader.Samsung/Resource.Designer.cs delete mode 100644 source/ChanSort.Loader.Samsung/Resource.de.Designer.cs delete mode 100644 source/ChanSort.Loader.Samsung/Resource.de.resx delete mode 100644 source/ChanSort.Loader.Samsung/Resource.resx create mode 100644 source/ChanSort.Loader.Samsung/SamsungPlugin.cs rename source/ChanSort.Loader.Samsung/{ => Scm}/AnalogChannel.cs (96%) rename source/ChanSort.Loader.Samsung/{ => Scm}/DigitalChannel.cs (97%) rename source/ChanSort.Loader.Samsung/{ => Scm}/ModelConstants.cs (98%) rename source/ChanSort.Loader.Samsung/{ => Scm}/SatChannel.cs (97%) rename source/ChanSort.Loader.Samsung/{ => Scm}/SatelliteMapping.cs (95%) rename source/ChanSort.Loader.Samsung/{ => Scm}/ScmChannelBase.cs (99%) rename source/ChanSort.Loader.Samsung/{ => Scm}/ScmSerializer.cs (99%) delete mode 100644 source/ChanSort.Loader.Samsung/ScmSerializerPlugin.cs rename source/{ChanSort.Loader.SamsungJ => ChanSort.Loader.Samsung/Zip}/DbChannel.cs (98%) rename source/{ChanSort.Loader.SamsungJ => ChanSort.Loader.Samsung/Zip}/DbSerializer.cs (99%) rename source/{ChanSort.Loader.SamsungJ => ChanSort.Loader.Samsung/Zip}/Utf16InsideUtf8EnvelopeEncoding.cs (99%) delete mode 100644 source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj delete mode 100644 source/ChanSort.Loader.SamsungJ/DbSerializerPlugin.cs delete mode 100644 source/ChanSort.Loader.SamsungJ/Properties/AssemblyInfo.cs rename source/{ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj => ChanSort.Loader.SatcoDX/ChanSort.Loader.SatcoDX.csproj} (94%) rename source/{ChanSort.Loader.SilvaSchneider/Channels.cs => ChanSort.Loader.SatcoDX/Channel.cs} (64%) rename source/{ChanSort.Loader.SilvaSchneider => ChanSort.Loader.SatcoDX}/Properties/AssemblyInfo.cs (100%) create mode 100644 source/ChanSort.Loader.SatcoDX/SatcoDxPlugin.cs rename source/{ChanSort.Loader.SilvaSchneider => ChanSort.Loader.SatcoDX}/Serializer.cs (90%) delete mode 100644 source/ChanSort.Loader.SilvaSchneider/SerializerPlugin.cs rename source/ChanSort.Loader.Sony/{SerializerPlugin.cs => SonyPlugin.cs} (72%) rename source/ChanSort.Loader.VDR/{SerializerPlugin.cs => VdrPlugin.cs} (55%) delete mode 100644 source/Test.Loader.GlobalClone/Properties/AssemblyInfo.cs delete mode 100644 source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj delete mode 100644 source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj.DotSettings delete mode 100644 source/Test.Loader.GlobalClone/packages.config rename source/Test.Loader.Hisense/{ => ChannelDb}/HisenseChannelDbTest.cs (93%) rename source/Test.Loader.Hisense/{ => ChannelDb}/TestFiles/channel.db (100%) rename source/{Test.Loader.Hisense2017 => Test.Loader.Hisense/ServicelistDb}/HisenseServicelistDbTest.cs (92%) rename source/{Test.Loader.Hisense2017 => Test.Loader.Hisense/ServicelistDb}/TestFiles/servicelist.db (100%) delete mode 100644 source/Test.Loader.Hisense2017/Properties/AssemblyInfo.cs delete mode 100644 source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj rename source/Test.Loader.LG/{ => Binary}/CS/TestCS.cs (90%) rename source/Test.Loader.LG/{ => Binary}/CS/xxCS460S-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/CS/xxCS460S-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/CS/xxCS460S-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/DM/TestDM.cs (88%) rename source/Test.Loader.LG/{ => Binary}/DM/xx2350D-PZM00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/DM/xx2350D-PZM00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/DM/xx2350D-PZM00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/TestDvbsCleanup.cs (86%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM620S-ZE00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM620S-ZE00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM620S-ZE00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM640T-ZA00000.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM640T-ZA00000.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM640T-ZA00000.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM860V-ZB99998.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM860V-ZB99998.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/DvbsCleanup/xxLM860V-ZB99998.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/TestLA.cs (95%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA691S-ZA00004.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA691S-ZA00004.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA691S-ZA00004.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00002.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00002.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LA/xxLA7408-ZB00002.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LD/TestLD.cs (90%) rename source/Test.Loader.LG/{ => Binary}/LD/xxLD750-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LD/xxLD750-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LD/xxLD750-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LE/TestLE.cs (90%) rename source/Test.Loader.LG/{ => Binary}/LE/xxLE5500-ZA00002.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LE/xxLE5500-ZA00002.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LE/xxLE5500-ZA00002.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LH/TestLH.cs (93%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH3000-ZA00002.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH3000-ZA00002.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH3000-ZA00002.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH5000-ZB00002.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH5000-ZB00002.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LH/xxLH5000-ZB00002.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LK/TestLK.cs (93%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK450-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK450-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK450-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK950S-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK950S-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LK/xxLK950S-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/TestLM.cs (92%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM340S-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM340S-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM340S-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM611S-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM611S-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM611S-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM620S-ZE00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM620S-ZE00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM620S-ZE00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM760S-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM860V-ZB99998.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM860V-ZB99998.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LM/xxLM860V-ZB99998.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LN/TestLN.cs (94%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5406-ZA99999.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5406-ZA99999.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5406-ZA99999.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5758-ZE99999.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5758-ZE99999.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LN/xxLN5758-ZE99999.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LP/TestLP.cs (90%) rename source/Test.Loader.LG/{ => Binary}/LP/xxLP632H-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LP/xxLP632H-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LP/xxLP632H-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LS/TestLS.cs (94%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS560S-ZC00010.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS560S-ZC00010.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS560S-ZC00010.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS570S-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS570S-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LS/xxLS570S-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LT/TestLT.cs (90%) rename source/Test.Loader.LG/{ => Binary}/LT/xxLT380H-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LT/xxLT380H-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LT/xxLT380H-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/TestLV.cs (95%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV375S-ZC00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV375S-ZC00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV375S-ZC00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV470S-ZC00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV470S-ZC00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV470S-ZC00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV579S-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV579S-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LV/xxLV579S-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LW/TestLW.cs (93%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW4500-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW4500-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW4500-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW659S-ZC00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW659S-ZC00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LW/xxLW659S-ZC00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/LX/TestLX.cs (90%) rename source/Test.Loader.LG/{ => Binary}/LX/xxLX9500-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/LX/xxLX9500-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/LX/xxLX9500-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/PM/TestPM.cs (94%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM670S-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM670S-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM670S-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM970S-ZA99999.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM970S-ZA99999.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/PM/xxPM970S-ZA99999.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/PN/TestPN.cs (90%) rename source/Test.Loader.LG/{ => Binary}/PN/xxPN6500-ZB00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/PN/xxPN6500-ZB00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/PN/xxPN6500-ZB00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/PT/TestPT.cs (90%) rename source/Test.Loader.LG/{ => Binary}/PT/xxPT353-ZA00001.TLL.in (100%) rename source/Test.Loader.LG/{ => Binary}/PT/xxPT353-ZA00001.TLL.out (100%) rename source/Test.Loader.LG/{ => Binary}/PT/xxPT353-ZA00001.csv.in (100%) rename source/Test.Loader.LG/{ => Binary}/TestBase.cs (93%) rename source/{Test.Loader.GlobalClone/TestFiles => Test.Loader.LG/GlobalClone}/GlobalClone00001.TLL (100%) rename source/{Test.Loader.GlobalClone/TestFiles => Test.Loader.LG/GlobalClone}/GlobalClone00002.TLL (100%) rename source/{Test.Loader.GlobalClone/TestFiles => Test.Loader.LG/GlobalClone}/GlobalClone00003.TLL (100%) rename source/{Test.Loader.GlobalClone/TestFiles => Test.Loader.LG/GlobalClone}/GlobalClone00201.TLL (100%) rename source/{Test.Loader.GlobalClone/TestFiles => Test.Loader.LG/GlobalClone}/GlobalClone200-inner.json (100%) rename source/{Test.Loader.GlobalClone => Test.Loader.LG/GlobalClone}/LgGlobalCloneTest.cs (95%) create mode 100644 source/Test.Loader.LG/packages.config rename source/Test.Loader.Samsung/{ => Scm}/FileFormatDetectionTest.cs (82%) rename source/Test.Loader.Samsung/{ => Scm}/SamsungTest.cs (97%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/Channel_list_T_J_ohne_smart_12.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/E_format_with_B_model_name.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/E_format_with_C_model_name.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/Samsung_upcmini_EF_12.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/channel_list_UE32J5170_1201_orig.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/channel_list_UE55H6470_1201-Suchlauf-2015-04-26.scm (100%) rename source/Test.Loader.Samsung/{ => Scm}/TestFiles/channel_list_UE55H6470_1201.scm (100%) rename source/{Test.Loader.SamsungJ => Test.Loader.Samsung/Zip}/SamsungZipTest.cs (93%) rename source/{Test.Loader.SamsungJ => Test.Loader.Samsung/Zip}/TestFiles/Channel_list_T-KTMDEUC-1132.6.zip (100%) rename source/{Test.Loader.SamsungJ => Test.Loader.Samsung/Zip}/TestFiles/Channel_list_T-KTSUDEUC-1007.1.zip (100%) rename source/{Test.Loader.SamsungJ => Test.Loader.Samsung/Zip}/TestFiles/Channel_list_T-KTSUDEUC-1007.2.zip (100%) rename source/{Test.Loader.SamsungJ => Test.Loader.Samsung/Zip}/TestFiles/Channel_list_T-KTSUDEUC-1007.3.zip (100%) delete mode 100644 source/Test.Loader.SamsungJ/Properties/AssemblyInfo.cs delete mode 100644 source/Test.Loader.SamsungJ/Test.Loader.SamsungJ.csproj delete mode 100644 source/Test.Loader.SamsungJ/packages.config rename source/{Test.Loader.SilvaSchneider => Test.Loader.SatcoDX}/Properties/AssemblyInfo.cs (100%) rename source/{Test.Loader.SilvaSchneider => Test.Loader.SatcoDX}/SdxTest.cs (87%) rename source/{Test.Loader.SilvaSchneider/Test.Loader.SilvaSchneider.csproj => Test.Loader.SatcoDX/Test.Loader.SatcoDX.csproj} (97%) rename source/{Test.Loader.SilvaSchneider => Test.Loader.SatcoDX}/TestFiles/silva_schneider.sdx (100%) rename source/{Test.Loader.Hisense2017 => Test.Loader.SatcoDX}/packages.config (100%) delete mode 100644 source/Test.Loader.SilvaSchneider/packages.config diff --git a/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj b/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj deleted file mode 100644 index cf9c77e..0000000 --- a/source/ChanSort.Loader.GlobalClone/ChanSort.Loader.GlobalClone.csproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Debug - AnyCPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B} - Library - Properties - ChanSort.Loader.GlobalClone - ChanSort.Loader.GlobalClone - v4.8 - 512 - - - - x86 - true - full - false - ..\Debug\ - DEBUG;TRACE - prompt - 4 - false - latest - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - latest - - - true - ..\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - false - latest - - - ..\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - false - latest - - - - - - - ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - - Resources.de.resx - True - True - - - True - True - Resources.resx - - - - - {dccffa08-472b-4d17-bb90-8f513fc01392} - ChanSort.Api - - - - - - - - - ResXFileCodeGenerator - Resources.de.Designer.cs - Designer - - - - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - - - - - - - - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/GcSerializerPlugin.cs b/source/ChanSort.Loader.GlobalClone/GcSerializerPlugin.cs deleted file mode 100644 index 9235d4b..0000000 --- a/source/ChanSort.Loader.GlobalClone/GcSerializerPlugin.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.IO; -using System.Text; -using ChanSort.Api; - -namespace ChanSort.Loader.GlobalClone -{ - public class GcSerializerPlugin : ISerializerPlugin - { - public string DllName { get; set; } - public string PluginName => "LG GlobalClone"; - public string FileFilter => "*Clone*.tll;xx*.xml;xx*.tll"; - - public SerializerBase CreateSerializer(string inputFile) - { - // files with 200 .... contain all the actual channel data in JSON format inside a element - var content = File.ReadAllText(inputFile, Encoding.UTF8); - if (content.Contains("")) - return new GcJsonSerializer(inputFile, content); - - return new GcXmlSerializer(inputFile); - } - } -} diff --git a/source/ChanSort.Loader.GlobalClone/GlobalClone00001.xml b/source/ChanSort.Loader.GlobalClone/GlobalClone00001.xml deleted file mode 100644 index 6afd362..0000000 --- a/source/ChanSort.Loader.GlobalClone/GlobalClone00001.xml +++ /dev/null @@ -1,6427 +0,0 @@ - - - - -42LB731V-ZE - -100 -000 -400 - -DTV_DVB -ROU -EU - - - - -0 - -255 -255 -255 -255 -127 -0 -0 -0 - -0 -39 - -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 - - - - -0 -0 -8 -0 -65 -1 -1 -1 -0 -0 -108 -109 -1 -0 -0 -0 - - -1 -4 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -2 -4 -8 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -3 -5 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -4 -7 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -5 -7 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -6 -8 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -7 -9 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -8 -10 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -9 -13 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -10 -16 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -11 -19 -2 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -12 -23 -5 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -13 -26 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -14 -28 -2 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -15 -30 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -16 -33 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -17 -36 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -18 -39 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -19 -40 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -20 -42 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -21 -68 -5 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -22 -105 -5 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -23 -90 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -24 -75 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -25 -140 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -26 -85 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -27 -96 -5 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -28 -60 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -29 -56 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -30 -7 -3 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -31 -33 -5 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -32 -50 -0 -0 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -33 -57 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -34 -160 -0 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -35 -0 -1 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -36 -0 -2 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -37 -0 -3 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -38 -0 -4 -1 -65 -1 -1 -1 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - -0 -0 -0 -0 -0 -0 -0 -0 -65535 -65535 -0 -0 -0 -0 -0 - - - - - -0 - -1 -0 -0 -0 -0 - - - -1 - -1 -0 -0 -2 -0 -0 -0 -0 -0 -0 - -0 -9750 -10600 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1210 -0 -0 -0 - - -102 - -0 -11247 -0 -24500 -0 -0 - - -1 -10872 -0 -24500 -0 -0 - - -9 -10716 -1 -24500 -0 -0 - - -10 -10747 -0 -25000 -1 -0 - - -11 -10747 -1 -25000 -1 -0 - - -12 -10778 -0 -25000 -1 -0 - - -13 -10778 -1 -24500 -0 -0 - - -14 -10809 -0 -24500 -0 -0 - - -15 -10809 -1 -24500 -0 -0 - - -16 -10841 -0 -24500 -0 -0 - - -17 -10841 -1 -24500 -0 -0 - - -18 -10872 -1 -24500 -0 -0 - - -19 -10903 -0 -25000 -1 -0 - - -20 -10903 -1 -25000 -1 -0 - - -21 -10934 -0 -24500 -0 -0 - - -22 -10934 -1 -25000 -1 -0 - - -23 -10962 -1 -1550 -0 -0 - - -24 -11038 -1 -2200 -1 -0 - - -25 -11042 -1 -1500 -1 -0 - - -26 -11048 -1 -3100 -0 -0 - - -27 -11080 -1 -1100 -0 -0 - - -28 -11104 -1 -3360 -1 -0 - - -29 -11172 -0 -6111 -0 -0 - - -30 -11188 -0 -1005 -1 -0 - - -31 -11189 -0 -1005 -1 -0 - - -32 -11216 -0 -24500 -0 -0 - - -33 -11229 -1 -24500 -0 -0 - - -34 -11261 -1 -24500 -0 -0 - - -35 -11278 -0 -24500 -0 -0 - - -36 -11293 -1 -24500 -0 -0 - - -37 -11309 -0 -24500 -0 -0 - - -38 -11325 -1 -24500 -0 -0 - - -39 -11341 -0 -24500 -0 -0 - - -40 -11357 -1 -24500 -0 -0 - - -41 -11372 -0 -24500 -0 -0 - - -42 -11389 -1 -24500 -0 -0 - - -43 -11403 -0 -24500 -0 -0 - - -44 -11421 -1 -24500 -0 -0 - - -45 -11463 -0 -6111 -0 -0 - - -46 -11471 -0 -6111 -0 -0 - - -47 -11481 -0 -6111 -0 -0 - - -48 -11491 -0 -6111 -0 -0 - - -49 -11497 -0 -3333 -0 -0 - - -50 -11502 -0 -3200 -0 -0 - - -51 -11509 -0 -6111 -0 -0 - - -52 -11518 -0 -4000 -0 -0 - - -53 -11525 -0 -6111 -0 -0 - - -54 -11533 -0 -3600 -1 -0 - - -55 -11540 -0 -4936 -1 -0 - - -56 -11544 -0 -3472 -0 -0 - - -57 -11548 -0 -3472 -0 -0 - - -58 -11553 -0 -3472 -0 -0 - - -59 -11558 -0 -6111 -0 -0 - - -60 -11593 -0 -5632 -0 -0 - - -61 -11605 -0 -15000 -1 -0 - - -62 -11608 -1 -5655 -0 -0 - - -63 -11614 -0 -5632 -0 -0 - - -64 -11628 -0 -6666 -0 -0 - - -65 -11642 -0 -15000 -1 -0 - - -66 -11643 -1 -3333 -0 -0 - - -67 -11660 -0 -15000 -1 -0 - - -68 -11682 -0 -3333 -0 -0 - - -69 -11687 -0 -3333 -0 -0 - - -70 -11727 -0 -28000 -0 -0 - - -71 -11747 -1 -28000 -0 -0 - - -72 -11766 -0 -28000 -0 -0 - - -73 -11785 -1 -30000 -1 -0 - - -74 -11804 -0 -28000 -0 -0 - - -75 -11843 -0 -30000 -1 -0 - - -76 -11862 -1 -28000 -0 -0 - - -77 -11881 -0 -30000 -1 -0 - - -78 -11900 -1 -28000 -0 -0 - - -79 -11919 -0 -28000 -0 -0 - - -80 -11938 -1 -28000 -0 -0 - - -81 -11977 -1 -28000 -0 -0 - - -82 -11996 -0 -28000 -0 -0 - - -83 -12015 -1 -30000 -1 -0 - - -84 -12034 -0 -28000 -0 -0 - - -85 -12073 -0 -28000 -0 -0 - - -86 -12092 -1 -30000 -1 -0 - - -87 -12188 -0 -28000 -0 -0 - - -88 -12226 -0 -27500 -0 -0 - - -89 -12265 -0 -28000 -0 -0 - - -90 -12303 -0 -27500 -1 -0 - - -91 -12380 -0 -28000 -0 -0 - - -92 -12418 -0 -28000 -0 -0 - - -93 -12456 -0 -28000 -0 -0 - - -94 -12513 -0 -5200 -0 -0 - - -95 -12519 -0 -3684 -0 -0 - - -96 -12527 -1 -27500 -0 -0 - - -97 -12528 -0 -4750 -0 -0 - - -98 -12563 -1 -27500 -0 -0 - - -99 -12563 -0 -27500 -0 -0 - - -100 -12607 -1 -27500 -0 -0 - - -101 -12607 -0 -27500 -0 -0 - - -102 -12643 -1 -27500 -0 -0 - - -103 -12643 -0 -27500 -0 -0 - - -104 -12687 -1 -27500 -0 -0 - - -105 -12687 -0 -27500 -0 -0 - - -106 -12718 -0 -18400 -0 -0 - - -107 -12723 -1 -27500 -0 -0 - - -108 -12735 -0 -8800 -0 -0 - - - - - - - - - -1 -2245 - S 02 -2 -1 -0 -0 -0 -0 -0 -1 - - -2 -2385 - S 03 -2 -1 -0 -0 -0 -0 -0 -1 - - -3 -2525 - S 04 -2 -1 -0 -0 -0 -0 -0 -1 - - -4 -2665 - S 05 -2 -1 -0 -0 -0 -0 -0 -1 - - -5 -2805 - S 06 -2 -1 -0 -0 -0 -0 -0 -1 - - -6 -3085 - S 08 -2 -1 -0 -0 -0 -0 -0 -1 - - -7 -3225 - S 09 -2 -1 -0 -0 -0 -0 -0 -1 - - -8 -3365 - S 10 -2 -1 -0 -0 -0 -0 -0 -1 - - -9 -3505 - C 05 -2 -1 -0 -0 -0 -0 -0 -0 - - -10 -3645 - C 06 -2 -1 -0 -0 -0 -0 -0 -0 - - -11 -3785 - C 07 -2 -1 -0 -0 -0 -0 -0 -0 - - -12 -3925 - C 08 -2 -1 -0 -0 -0 -0 -0 -0 - - -13 -4065 - C 09 -2 -1 -0 -0 -0 -0 -0 -0 - - - - -1 -0 -1 -230 -10 -25 -33 -3 -1 -452497381 -306000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -545652204844 -6 -TVR HD -6 -0 -0 -0 - - -2 -0 -1 -230 -10 -143 -33 -3 -1 -452497381 -306000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -444947492053706f72742031204844 -15 -DIGI Sport 1 HD -15 -0 -0 -0 - - -3 -0 -1 -230 -10 -275 -33 -3 -1 -452497381 -306000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e61742047656f204844 -10 -Nat Geo HD -10 -0 -0 -0 - - -4 -0 -1 -201 -10 -30 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50524f205456 -6 -PRO TV -6 -0 -0 -0 - - -5 -0 -1 -201 -10 -110 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5245414c495441544541205456 -13 -REALITATEA TV -13 -0 -0 -0 - - -6 -0 -1 -201 -10 -200 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -41636173615456 -7 -AcasaTV -7 -0 -0 -0 - - -7 -0 -1 -201 -10 -330 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e617447656f2057696c64 -11 -NatGeo Wild -11 -0 -0 -0 - - -8 -0 -1 -201 -10 -340 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50726f43696e656d61 -9 -ProCinema -9 -0 -0 -0 - - -9 -0 -1 -201 -10 -420 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d545620526f6d616e6961 -11 -MTV Romania -11 -0 -0 -0 - - -10 -0 -1 -201 -10 -500 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5461726166205456 -8 -Taraf TV -8 -0 -0 -0 - - -11 -0 -1 -201 -10 -515 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920323420437261696f7661 -15 -DIGI 24 Craiova -15 -0 -0 -0 - - -12 -0 -1 -201 -10 -530 -34 -3 -1 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d6f6e6579204368616e6e656c -13 -Money Channel -13 -0 -0 -0 - - -13 -0 -1 -202 -10 -80 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e6174696f6e616c205456 -11 -National TV -11 -0 -0 -0 - - -14 -0 -1 -202 -10 -130 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -545652204e657773 -8 -TVR News -8 -0 -0 -0 - - -15 -0 -1 -202 -10 -190 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575726f73706f72742032 -11 -Eurosport 2 -11 -0 -0 -0 - - -16 -0 -1 -202 -10 -260 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -486973746f7279204368616e6e656c -15 -History Channel -15 -0 -0 -0 - - -17 -0 -1 -202 -10 -410 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469736e6579204368616e6e656c -14 -Disney Channel -14 -0 -0 -0 - - -18 -0 -1 -202 -10 -450 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -484954204d55534943 -9 -HIT MUSIC -9 -0 -0 -0 - - -19 -0 -1 -202 -10 -480 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4661766f726974205456 -10 -Favorit TV -10 -0 -0 -0 - - -20 -0 -1 -202 -10 -490 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -45746e6f -4 -Etno -4 -0 -0 -0 - - -21 -0 -1 -202 -10 -525 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -54564820322e30 -7 -TVH 2.0 -7 -0 -0 -0 - - -22 -0 -1 -202 -10 -600 -35 -3 -1 -452431845 -322000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5472696e69746173 -8 -Trinitas -8 -0 -0 -0 - - -23 -0 -1 -232 -10 -210 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -46696c6d2043616665 -9 -Film Cafe -9 -0 -0 -0 - - -24 -0 -1 -232 -10 -343 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469676946494c4d204844 -11 -DigiFILM HD -11 -0 -0 -0 - - -25 -0 -1 -232 -10 -370 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -41584e205768697465 -9 -AXN White -9 -0 -0 -0 - - -26 -0 -1 -232 -10 -380 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e69636b656c6f64656f6e -11 -Nickelodeon -11 -0 -0 -0 - - -27 -0 -1 -232 -10 -460 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d455a5a4f -5 -MEZZO -5 -0 -0 -0 - - -28 -0 -1 -232 -10 -609 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -434e4e -3 -CNN -3 -0 -0 -0 - - -29 -0 -1 -232 -10 -643 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53757065724f4e45204844 -11 -SuperONE HD -11 -0 -0 -0 - - -30 -0 -1 -232 -10 -652 -36 -3 -1 -452571109 -330000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -48424f204844 -6 -HBO HD -6 -0 -0 -0 - - -31 -0 -1 -231 -10 -32 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50524f205456204844 -9 -PRO TV HD -9 -0 -0 -0 - - -32 -0 -1 -231 -10 -162 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53706f72742e726f204844 -11 -Sport.ro HD -11 -0 -0 -0 - - -33 -0 -1 -231 -10 -205 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -41636173615456204844 -10 -AcasaTV HD -10 -0 -0 -0 - - -34 -0 -1 -231 -10 -331 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e61742047656f2057696c64204844 -15 -Nat Geo Wild HD -15 -0 -0 -0 - - -35 -0 -1 -231 -10 -518 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e6173756c205456 -8 -Nasul TV -8 -0 -0 -0 - - -36 -0 -1 -231 -10 -526 -37 -3 -1 -452505573 -338000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -496e65646974205456 -9 -Inedit TV -9 -0 -0 -0 - - -37 -0 -1 -211 -10 -281 -38 -3 -1 -452431845 -346000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920574f524c44204844 -13 -DIGI WORLD HD -13 -0 -0 -0 - - -38 -0 -1 -211 -10 -291 -38 -3 -1 -452431845 -346000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44494749204c696665204844 -12 -DIGI Life HD -12 -0 -0 -0 - - -39 -0 -1 -211 -10 -311 -38 -3 -1 -452431845 -346000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920414e494d414c20574f524c44204844 -20 -DIGI ANIMAL WORLD HD -20 -0 -0 -0 - - -40 -0 -1 -211 -10 -327 -38 -3 -1 -452431845 -346000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -42424320456e7465727461696e6d656e7420 -18 -BBC Entertainment -18 -0 -0 -0 - - -41 -0 -1 -101 -10 -90 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44494749203234204844 -10 -DIGI 24 HD -10 -0 -0 -0 - - -42 -0 -1 -101 -10 -215 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4163617361545620476f6c64 -12 -AcasaTV Gold -12 -0 -0 -0 - - -43 -0 -1 -101 -10 -280 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920574f524c44 -10 -DIGI WORLD -10 -0 -0 -0 - - -44 -0 -1 -101 -10 -350 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469766120556e6976657273616c -14 -Diva Universal -14 -0 -0 -0 - - -45 -0 -1 -101 -10 -360 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -41584e -3 -AXN -3 -0 -0 -0 - - -46 -0 -1 -101 -10 -390 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d696e696d6178 -7 -Minimax -7 -0 -0 -0 - - -47 -0 -1 -101 -10 -412 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469736e6579204a52 -9 -Disney JR -9 -0 -0 -0 - - -48 -0 -1 -101 -10 -430 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -555456 -3 -UTV -3 -0 -0 -0 - - -49 -0 -1 -101 -10 -470 -39 -3 -1 -452497381 -354000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d75736963204368616e6e656c20526f -16 -Music Channel Ro -16 -0 -0 -0 - - -50 -0 -1 -102 -10 -60 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5052494d41205456 -8 -PRIMA TV -8 -0 -0 -0 - - -51 -0 -1 -102 -10 -70 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4231 -2 -B1 -2 -0 -0 -0 - - -52 -0 -1 -102 -10 -100 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44494749203234 -7 -DIGI 24 -7 -0 -0 -0 - - -53 -0 -1 -102 -10 -150 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -444947492053706f72742032 -12 -DIGI Sport 2 -12 -0 -0 -0 - - -54 -0 -1 -102 -10 -270 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e61742047656f -7 -Nat Geo -7 -0 -0 -0 - - -55 -0 -1 -102 -10 -290 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44494749204c696665 -9 -DIGI Life -9 -0 -0 -0 - - -56 -0 -1 -102 -10 -418 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d6567616d6178202f2053706f727431 -16 -Megamax / Sport1 -16 -0 -0 -0 - - -57 -0 -1 -102 -10 -440 -40 -3 -1 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4b495353205456 -7 -KISS TV -7 -0 -0 -0 - - -58 -0 -1 -103 -10 -10 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5456522031 -5 -TVR 1 -5 -0 -0 -0 - - -59 -0 -1 -103 -10 -20 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5456522032 -5 -TVR 2 -5 -0 -0 -0 - - -60 -0 -1 -103 -10 -170 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -446967692053706f72742033 -12 -Digi Sport 3 -12 -0 -0 -0 - - -61 -0 -1 -103 -10 -230 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -545650617072696b61 -9 -TVPaprika -9 -0 -0 -0 - - -62 -0 -1 -103 -10 -300 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -566961736174204e6174757265 -13 -Viasat Nature -13 -0 -0 -0 - - -63 -0 -1 -103 -10 -310 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920414e494d414c20574f524c44 -17 -DIGI ANIMAL WORLD -17 -0 -0 -0 - - -64 -0 -1 -103 -10 -320 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -54726176656c -6 -Travel -6 -0 -0 -0 - - -65 -0 -1 -103 -10 -512 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44494749203234204f7261646561 -14 -DIGI 24 Oradea -14 -0 -0 -0 - - -66 -0 -1 -103 -10 -514 -41 -3 -1 -452497381 -370000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -444947492032342054696d69736f617261 -17 -DIGI 24 Timisoara -17 -0 -0 -0 - - -67 -0 -1 -251 -10 -342 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469676946494c4d -8 -DigiFILM -8 -0 -0 -0 - - -68 -0 -1 -251 -10 -607 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50565456 -4 -PVTV -4 -0 -0 -0 - - -69 -0 -1 -251 -10 -610 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -545635204d4f4e4445 -9 -TV5 MONDE -9 -0 -0 -0 - - -70 -0 -1 -251 -10 -620 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -058652544c872054656c65766973696f6e -17 - -17 -0 -0 -0 - - -71 -0 -1 -251 -10 -640 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0553757065724f4e45 -9 - -9 -0 -0 -0 - - -72 -0 -1 -251 -10 -650 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -48424f20526f6d616e6961 -11 -HBO Romania -11 -0 -0 -0 - - -73 -0 -1 -251 -10 -660 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -48424f20436f6d656479 -10 -HBO Comedy -10 -0 -0 -0 - - -74 -0 -1 -251 -10 -670 -42 -3 -1 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -43696e656d6178 -7 -Cinemax -7 -0 -0 -0 - - -75 -0 -1 -104 -10 -333 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -566961736174204578706c6f726572 -15 -Viasat Explorer -15 -0 -0 -0 - - -76 -0 -1 -104 -10 -335 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -56696173617420486973746f7279 -14 -Viasat History -14 -0 -0 -0 - - -77 -0 -1 -104 -10 -355 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -545631303030 -6 -TV1000 -6 -0 -0 -0 - - -78 -0 -1 -104 -10 -357 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -556e6976657273616c204368616e6e656c -17 -Universal Channel -17 -0 -0 -0 - - -79 -0 -1 -104 -10 -415 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -426f6f6d6572616e67 -9 -Boomerang -9 -0 -0 -0 - - -80 -0 -1 -104 -10 -516 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920323420427261736f76 -14 -DIGI 24 Brasov -14 -0 -0 -0 - - -81 -0 -1 -104 -10 -533 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5456522033 -5 -TVR 3 -5 -0 -0 -0 - - -82 -0 -1 -104 -10 -606 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -46697368696e6720616e642048756e74696e67 -19 -Fishing and Hunting -19 -0 -0 -0 - - -83 -0 -1 -104 -10 -629 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -42424320576f726c64204e657773 -14 -BBC World News -14 -0 -0 -0 - - -84 -0 -1 -104 -10 -632 -43 -3 -1 -452497381 -386000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5a55205456 -5 -ZU TV -5 -0 -0 -0 - - -85 -0 -1 -206 -10 -125 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -526f6d616e69615456 -9 -RomaniaTV -9 -0 -0 -0 - - -86 -0 -1 -206 -10 -324 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -424243204b6e6f776c65646765 -13 -BBC Knowledge -13 -0 -0 -0 - - -87 -0 -1 -206 -10 -417 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4475636b205456 -7 -Duck TV -7 -0 -0 -0 - - -88 -0 -1 -206 -10 -495 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -486f7261205456 -7 -Hora TV -7 -0 -0 -0 - - -89 -0 -1 -206 -10 -501 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4147524f205456 -7 -AGRO TV -7 -0 -0 -0 - - -90 -0 -1 -206 -10 -505 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4469676920323420436c756a -12 -Digi 24 Cluj -12 -0 -0 -0 - - -91 -0 -1 -206 -10 -511 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5456204e657074756e -9 -TV Neptun -9 -0 -0 -0 - - -92 -0 -1 -206 -10 -537 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e6174696f6e616c20323420506c7573 -16 -National 24 Plus -16 -0 -0 -0 - - -93 -0 -1 -206 -10 -602 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53706572616e74615456 -10 -SperantaTV -10 -0 -0 -0 - - -94 -0 -1 -206 -10 -615 -44 -3 -1 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5261692031 -5 -Rai 1 -5 -0 -0 -0 - - -95 -0 -1 -207 -10 -371 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -41584e20426c61636b -9 -AXN Black -9 -0 -0 -0 - - -96 -0 -1 -207 -10 -374 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -436f6d6564792043656e7472616c204578747261 -20 -Comedy Central Extra -20 -0 -0 -0 - - -97 -0 -1 -207 -10 -435 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -555456204844 -6 -UTV HD -6 -0 -0 -0 - - -98 -0 -1 -207 -10 -455 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -56483120526f6d616e6961 -11 -VH1 Romania -11 -0 -0 -0 - - -99 -0 -1 -207 -10 -563 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d32 -2 -M2 -2 -0 -0 -0 - - -100 -0 -1 -207 -10 -595 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4d616779617220415456 -10 -Magyar ATV -10 -0 -0 -0 - - -101 -0 -1 -207 -10 -634 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -46617368696f6e205456 -10 -Fashion TV -10 -0 -0 -0 - - -102 -0 -1 -207 -10 -635 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53555045522052544c -9 -SUPER RTL -9 -0 -0 -0 - - -103 -0 -1 -207 -10 -638 -45 -3 -1 -452431845 -402000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0543435456204e657773 -10 - -10 -0 -0 -0 - - -104 -0 -1 -209 -10 -750 -48 -3 -1 -452497381 -426000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -36205456 -4 -6 TV -4 -0 -0 -0 - - -105 -0 -1 -209 -10 -751 -48 -3 -1 -452497381 -426000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -54562043697479 -7 -TV City -7 -0 -0 -0 - - -106 -0 -1 -209 -10 -752 -48 -3 -1 -452497381 -426000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -65537472616461205456 -10 -eStrada TV -10 -0 -0 -0 - - -107 -0 -1 -212 -10 -181 -49 -3 -1 -452505573 -434000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575726f73706f7274204844 -12 -Eurosport HD -12 -0 -0 -0 - - -108 -0 -1 -212 -10 -191 -49 -3 -1 -452505573 -434000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575726f73706f72742032204844 -14 -Eurosport 2 HD -14 -0 -0 -0 - - -109 -0 -1 -212 -10 -262 -49 -3 -1 -452505573 -434000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -486973746f7279204844 -10 -History HD -10 -0 -0 -0 - - -110 -0 -1 -212 -10 -301 -49 -3 -1 -452505573 -434000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -05566961736174204e61747572652f486973746f7279204844 -25 - -25 -0 -0 -0 - - -111 -0 -1 -212 -10 -321 -49 -3 -1 -452505573 -434000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -54726176656c204368616e6e656c204844 -17 -Travel Channel HD -17 -0 -0 -0 - - -112 -0 -1 -233 -10 -153 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -444947492053706f72742032204844 -15 -DIGI Sport 2 HD -15 -0 -0 -0 - - -113 -0 -1 -233 -10 -235 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4c6f6f6b205456 -7 -Look TV -7 -0 -0 -0 - - -114 -0 -1 -233 -10 -240 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5472616e73696c76616e6961204c495645 -17 -Transilvania LIVE -17 -0 -0 -0 - - -115 -0 -1 -233 -10 -241 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -416e74656e61205374617273 -12 -Antena Stars -12 -0 -0 -0 - - -116 -0 -1 -233 -10 -503 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4449474920323420436f6e7374616e7461 -17 -DIGI 24 Constanta -17 -0 -0 -0 - - -117 -0 -1 -233 -10 -507 -52 -3 -1 -452562917 -458000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -444947492032342049617369 -12 -DIGI 24 Iasi -12 -0 -0 -0 - - -118 -0 -1 -203 -10 -140 -53 -3 -1 -452497381 -466000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -446967692053706f72742031 -12 -Digi Sport 1 -12 -0 -0 -0 - - -119 -0 -1 -203 -10 -336 -53 -3 -1 -452497381 -466000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -54726176656c204d6978 -10 -Travel Mix -10 -0 -0 -0 - - -120 -0 -1 -203 -10 -400 -53 -3 -1 -452497381 -466000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -436172746f6f6e204e6574776f726b -15 -Cartoon Network -15 -0 -0 -0 - - -121 -0 -1 -203 -10 -617 -53 -3 -1 -452497381 -466000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -5261692033 -5 -Rai 3 -5 -0 -0 -0 - - -122 -0 -1 -203 -10 -622 -53 -3 -1 -452497381 -466000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50726f53696562656e -9 -ProSieben -9 -0 -0 -0 - - -123 -0 -1 -204 -10 -40 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -416e74656e612031 -8 -Antena 1 -8 -0 -0 -0 - - -124 -0 -1 -204 -10 -50 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4b616e616c2044 -7 -Kanal D -7 -0 -0 -0 - - -125 -0 -1 -204 -10 -120 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -416e74656e612033 -8 -Antena 3 -8 -0 -0 -0 - - -126 -0 -1 -204 -10 -160 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53706f72742e726f -8 -Sport.ro -8 -0 -0 -0 - - -127 -0 -1 -204 -10 -180 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575726f73706f7274 -9 -Eurosport -9 -0 -0 -0 - - -128 -0 -1 -204 -10 -220 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575666f726961204c6966657374796c65 -17 -Euforia Lifestyle -17 -0 -0 -0 - - -129 -0 -1 -204 -10 -540 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -44756e61 -4 -Duna -4 -0 -0 -0 - - -130 -0 -1 -204 -10 -598 -54 -3 -1 -452366309 -474000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4e6f7461205456 -7 -Nota TV -7 -0 -0 -0 - - -16385 -0 -1 -201 -10 -2499 -34 -3 -2 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4b69737320464d -7 -Kiss FM -7 -0 -0 -0 - - -16386 -0 -1 -201 -10 -2502 -34 -3 -2 -452562917 -314000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -526164696f203231 -8 -Radio 21 -8 -0 -0 -0 - - -16387 -0 -1 -102 -10 -2500 -40 -3 -2 -452497381 -362000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -4575726f706120464d -9 -Europa FM -9 -0 -0 -0 - - -16388 -0 -1 -251 -10 -2505 -42 -3 -2 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -526164696f205a55 -8 -Radio ZU -8 -0 -0 -0 - - -16389 -0 -1 -251 -10 -2510 -42 -3 -2 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -526164696f204d6172696120524f -14 -Radio Maria RO -14 -0 -0 -0 - - -16390 -0 -1 -251 -10 -2515 -42 -3 -2 -452497381 -378000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -53706f727420546f74616c -11 -Sport Total -11 -0 -0 -0 - - -16391 -0 -1 -206 -10 -2512 -44 -3 -2 -452497381 -394000 -28 -1 -0 -0 -0 -0 -0 -0 -0 -0 -50726f20464d -6 -Pro FM -6 -0 -0 -0 - - - - - - -0 -off -100 -0 -normal -normal -on -on -on -on -off -off -off -on -on -on -on -on -on -on -on -on -on -on -1 -1 -stand_by -off -off -off -Auto -off -off -off -off -1105 -off - - - diff --git a/source/ChanSort.Loader.GlobalClone/Properties/AssemblyInfo.cs b/source/ChanSort.Loader.GlobalClone/Properties/AssemblyInfo.cs deleted file mode 100644 index 6d5234e..0000000 --- a/source/ChanSort.Loader.GlobalClone/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ChanSort.Loader.GlobalClone")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ChanSort.Loader.GlobalClone")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("7c411d93-c493-49e0-af8a-520d759af994")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs b/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs deleted file mode 100644 index 87fd294..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.Designer.cs +++ /dev/null @@ -1,108 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ChanSort.Loader.GlobalClone { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("ChanSort.Loader.GlobalClone.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to LG predefined / empty channel list. - /// - internal static string GcSerializer_ReadChannelLists_NoChannelsCap { - get { - return ResourceManager.GetString("GcSerializer_ReadChannelLists_NoChannelsCap", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This channel list does not contain any channels. - ///Most likely a predefined channel list was selected during the TV's setup, which cannot be edited and exports an empty list. - /// - ///Please run a new channel search on the TV and when asked for a Provider, select a neutral option (none, other, ...). - ///When possible, select Blind Scan and unselect Network Search to scan the whole frequency range. - ///. - /// - internal static string GcSerializer_ReadChannelLists_NoChannelsMsg { - get { - return ResourceManager.GetString("GcSerializer_ReadChannelLists_NoChannelsMsg", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Your TV will only import the GlobalClone file when there are no files named xx*.TLL in the same directory. - ///Do you want ChanSort to rename the conflicting files?. - /// - internal static string GcSerializer_ReadModelInfo_ModelWarning { - get { - return ResourceManager.GetString("GcSerializer_ReadModelInfo_ModelWarning", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ATTENTION: - ///Please make sure that your webOS based TV is using a recent firmware version (LB600 and higher: 4.41.32, UB: 4.51.44). - ///Older LG firmware for webOS based TV models does not handle the import of channel lists properly and randomly reorders channels. - ///(If your firmware is newer, you can ignore is message.). - /// - internal static string GcSerializer_webOsFirmwareWarning { - get { - return ResourceManager.GetString("GcSerializer_webOsFirmwareWarning", resourceCulture); - } - } - } -} diff --git a/source/ChanSort.Loader.GlobalClone/Resources.cs.resx b/source/ChanSort.Loader.GlobalClone/Resources.cs.resx deleted file mode 100644 index ae5757b..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.cs.resx +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Váš televizor bude schopen importovat soubor GlobalClone pouze v případě, že se ve stejném adresáři nenachází žádné soubory s názvem xx*.TLL. -Chcete, aby ChanSort konfliktní soubory přejmenoval? - - - POZOR: -Zkontrolujte, zda váš televizor se systémem webOS používá nejnovější verzi firmwaru (LB600 a vyšší: 4.41.32, UB: 4.51.44). -Starší verze firmwaru LG pro modely televizorů se systémem webOS nedokáže správně importovat seznam kanálů a náhodně mění pořadí kanálů. - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.de.Designer.cs b/source/ChanSort.Loader.GlobalClone/Resources.de.Designer.cs deleted file mode 100644 index e69de29..0000000 diff --git a/source/ChanSort.Loader.GlobalClone/Resources.de.resx b/source/ChanSort.Loader.GlobalClone/Resources.de.resx deleted file mode 100644 index e86ff74..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.de.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Ihr TV Gerät importiert die GlobalClone Datei nur dann, wenn keine Dateien mit Namen xx*.TLL auf dem USB-Stick sind. -Soll ChanSort die störenden Dateien jetzt umbenennen? - - - HINWEIS: -Bitte stellen Sie sicher, dass auf Ihrem webOS basierenden Gerät eine aktuelle Firmware installiert ist (LB600 und höher: 4.41.32, UB: 4.51.44). -Ältere Versionen können Senderlisten nicht korrekt einlesen und verändern diese willkürlich im laufenden Betrieb. -(Sie können diese Meldung ignorieren, wenn Ihre Firmwareversion aktueller ist.) - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.es.resx b/source/ChanSort.Loader.GlobalClone/Resources.es.resx deleted file mode 100644 index fea0be3..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.es.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Su TV solo es capaz de importar el archivo GlobalClone si en la carpeta solo existe un único archivo TLL. ¿Desea que ChanSort renombre los archivos conflictivos? - - - Por favor asegúrese que su TV basada en webOS esté usando una versión de firmware reciente (LB600 y superior: 4.41.32, UB: 4.51.44). -Los viejos firmwares de los modelos de TV basados en webOS no importan bien las listas de canales y reordenan los canales aleatoriamente. -(Si su firmware es reciente, puede ignorar este mensaje.) - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.hu.resx b/source/ChanSort.Loader.GlobalClone/Resources.hu.resx deleted file mode 100644 index 2cacb01..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.hu.resx +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - A tévé csak akkor importálja a GlobalClone fájlt, ha ugyanabban a könyvtárban nincsenek xx*.TLL nevű fájlok. -Szeretné, hogy a ChanSort átnevezze a problémás fájlokat? - - - FIGYELEM: -Győződjön meg arról, hogy webOS alapú tévéje legújabb firmware verziót használ (LB600 és újabb: 4.41.32, UB: 4.51.44). -A régebbi LG firmware webOS alapú TV-modelleknél nem kezeli megfelelően a csatornák listájának importálását és véletlenszerűen rendezi át a csatornákat - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.pl.resx b/source/ChanSort.Loader.GlobalClone/Resources.pl.resx deleted file mode 100644 index 76c712c..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.pl.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Telewizor zaimportuje plik GlobalClone tylko wtedy, gdy w tym samym katalogu nie ma plików o nazwie xx* .TLL. -Czy chcesz, aby ChanSort zmienił nazwę plików powodujących konflikt? - - - UWAGA: -Upewnij się, że telewizor z systemem webOS korzysta z najnowszej wersji oprogramowania układowego (LB600 i nowsze: 4.41.32, UB: 4.51.44). -Starsze oprogramowanie LG dla modeli telewizorów opartych na webOS nie obsługuje importu list kanałów i losowo zmienia kolejność kanałów. -(Jeśli oprogramowanie układowe jest nowsze, możesz zignorować wiadomość.) - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.pt.resx b/source/ChanSort.Loader.GlobalClone/Resources.pt.resx deleted file mode 100644 index d58980a..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.pt.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.resx b/source/ChanSort.Loader.GlobalClone/Resources.resx deleted file mode 100644 index 95bc44c..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.resx +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Your TV will only import the GlobalClone file when there are no files named xx*.TLL in the same directory. -Do you want ChanSort to rename the conflicting files? - - - ATTENTION: -Please make sure that your webOS based TV is using a recent firmware version (LB600 and higher: 4.41.32, UB: 4.51.44). -Older LG firmware for webOS based TV models does not handle the import of channel lists properly and randomly reorders channels. -(If your firmware is newer, you can ignore is message.) - - - LG predefined / empty channel list - - - This channel list does not contain any channels. -Most likely a predefined channel list was selected during the TV's setup, which cannot be edited and exports an empty list. - -Please run a new channel search on the TV and when asked for a Provider, select a neutral option (none, other, ...). -When possible, select Blind Scan and unselect Network Search to scan the whole frequency range. - - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.ro.resx b/source/ChanSort.Loader.GlobalClone/Resources.ro.resx deleted file mode 100644 index 1bf518f..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.ro.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Televizorul dvs. va importa numai fișierul GlobalClone atunci când nu există fișiere numite xx * .TLL în același director. -Vrei ca ChanSort să redenumească fișierele în conflict? - - - ATENŢIE: -Asigurați-vă că televizorul bazat pe webOS utilizează o versiune recentă de firmware (LB600 și mai mare: 4.41.32, UB: 4.51.44). -Firmware-ul LG mai vechi pentru modelele TV bazate pe webOS nu gestionează importul listelor de canale în mod corespunzător și redirecționează aleatoriu canalele. -(Dacă firmware-ul este mai nou, puteți ignora mesajul.) - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.ru.resx b/source/ChanSort.Loader.GlobalClone/Resources.ru.resx deleted file mode 100644 index d58980a..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.ru.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/Resources.tr.resx b/source/ChanSort.Loader.GlobalClone/Resources.tr.resx deleted file mode 100644 index d7ec548..0000000 --- a/source/ChanSort.Loader.GlobalClone/Resources.tr.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TV'niz yalnızca aynı dizinde xx * .TLL adında dosya olmadığında GlobalClone dosyasını içe aktarır. -ChanSort'un çakışan dosyaları yeniden adlandırmasını istiyor musunuz? - - - DİKKAT: -Lütfen webOS tabanlı TV'nizin aşağıdaki ürün yazılım sürümünü kullandığından emin olun (LB600 ve üstü: 4.41.32, UB: 4.51.44). -WebOS tabanlı TV modelleri için eski LG ürün yazılımı, kanal listelerinin içe aktarılmasını düzgün bir şekilde gerçekleştirmez ve kanalları yeniden sıralar. -(Ürün yazılımınız daha yeniyse, mesajı görmezden gelebilirsiniz.) - - \ No newline at end of file diff --git a/source/ChanSort.Loader.GlobalClone/readme.txt b/source/ChanSort.Loader.GlobalClone/readme.txt deleted file mode 100644 index e1d29ae..0000000 --- a/source/ChanSort.Loader.GlobalClone/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -This module allows loading of LG's GlobalClone*.TLL files. -There seem to be different versions of this XML file format, depending on Series, Model and/or firmware version. - -2013 LA-Series, 2014 LB55xx and LB56xx: - is binary data inside an UTF8 envelope. Once decoded, this data is correct. -Some higher numbered models seem to exclusively support the GlobalClone and no longer have a binary TLL file, -while lower numbered models export both files and can only load the binary file. - is not included in these models - -2014 LB6xxx and higher: - is a readable text, but sometimes left empty and misses all local characters - may be present, depending on firmware. It contains a hex-encoded DVB encoded channel name with correct data. - diff --git a/source/ChanSort.Loader.Grundig/ChanSort.Loader.Grundig.csproj b/source/ChanSort.Loader.Grundig/ChanSort.Loader.Grundig.csproj index b30266b..7a3e29f 100644 --- a/source/ChanSort.Loader.Grundig/ChanSort.Loader.Grundig.csproj +++ b/source/ChanSort.Loader.Grundig/ChanSort.Loader.Grundig.csproj @@ -64,7 +64,7 @@ - + diff --git a/source/ChanSort.Loader.Grundig/Channel.cs b/source/ChanSort.Loader.Grundig/Channel.cs index 1070608..146968d 100644 --- a/source/ChanSort.Loader.Grundig/Channel.cs +++ b/source/ChanSort.Loader.Grundig/Channel.cs @@ -6,9 +6,6 @@ namespace ChanSort.Loader.Grundig internal class Channel : ChannelInfo { public readonly XmlNode Node; - public string RawName; - public string RawSatellite; - public int Format; internal Channel(SignalSource source, int order, int rowId, XmlNode node) { diff --git a/source/ChanSort.Loader.Grundig/SerializerPlugin.cs b/source/ChanSort.Loader.Grundig/GrundigPlugin.cs similarity index 70% rename from source/ChanSort.Loader.Grundig/SerializerPlugin.cs rename to source/ChanSort.Loader.Grundig/GrundigPlugin.cs index cdc2f67..9aec73f 100644 --- a/source/ChanSort.Loader.Grundig/SerializerPlugin.cs +++ b/source/ChanSort.Loader.Grundig/GrundigPlugin.cs @@ -2,10 +2,10 @@ namespace ChanSort.Loader.Grundig { - public class SerializerPlugin : ISerializerPlugin + public class GrundigPlugin : ISerializerPlugin { public string DllName { get; set; } - public string PluginName => "Grundig dvb?_config.xml"; + public string PluginName => "Grundig (dvb*_config.xml)"; public string FileFilter => "*.xml"; public SerializerBase CreateSerializer(string inputFile) diff --git a/source/ChanSort.Loader.Grundig/Serializer.cs b/source/ChanSort.Loader.Grundig/Serializer.cs index b4b84ce..74c08a6 100644 --- a/source/ChanSort.Loader.Grundig/Serializer.cs +++ b/source/ChanSort.Loader.Grundig/Serializer.cs @@ -70,7 +70,7 @@ namespace ChanSort.Loader.Grundig this.LoadFile(fullPath); } if (this.fileDataList.Count == 0) - throw new FileLoadException("No XML files found in folder structure"); + throw new FileLoadException("No dvb*_config.xml files found in folder structure"); } #endregion diff --git a/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj b/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj index a050c33..de06a9e 100644 --- a/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj +++ b/source/ChanSort.Loader.Hisense/ChanSort.Loader.Hisense.csproj @@ -73,15 +73,16 @@ - + - - + Resources.resx True True + + @@ -109,6 +110,7 @@ + - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/HisDbSerializerPlugin.cs b/source/ChanSort.Loader.Hisense2017/HisDbSerializerPlugin.cs deleted file mode 100644 index fee22de..0000000 --- a/source/ChanSort.Loader.Hisense2017/HisDbSerializerPlugin.cs +++ /dev/null @@ -1,16 +0,0 @@ -using ChanSort.Api; - -namespace ChanSort.Loader.Hisense2017 -{ - public class HisDbSerializerPlugin : ISerializerPlugin - { - public string DllName { get; set; } - public string PluginName => "Hisense servicelist.db"; - public string FileFilter => "*.db"; - - public SerializerBase CreateSerializer(string inputFile) - { - return new HisDbSerializer(inputFile); - } - } -} \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Properties/AssemblyInfo.cs b/source/ChanSort.Loader.Hisense2017/Properties/AssemblyInfo.cs deleted file mode 100644 index 8df14bb..0000000 --- a/source/ChanSort.Loader.Hisense2017/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ChanSort.Loader.Hisense")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ChanSort.Loader.Hisense")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("d093e7ee-d3ad-4e7b-af82-c6918ca017fb")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs b/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs deleted file mode 100644 index 94e73e3..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.Designer.cs +++ /dev/null @@ -1,83 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ChanSort.Loader.Hisense2017 { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("ChanSort.Loader.Hisense2017.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to No channels found. - /// - internal static string Load_NoChannelsCaption { - get { - return ResourceManager.GetString("Load_NoChannelsCaption", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This channel list file does not contain any data. - ///Most likely a predefined channel list was selected during the TV's intial setup. Such lists do not get exported and cannot be edited on the TV or on your PC. - ///To get a list that can be edited on your PC you have to reset your TV to factory defaults and select the option 'Other' during the satellite channel setup.. - /// - internal static string Load_NoChannelsMsg { - get { - return ResourceManager.GetString("Load_NoChannelsMsg", resourceCulture); - } - } - } -} diff --git a/source/ChanSort.Loader.Hisense2017/Resources.cs.resx b/source/ChanSort.Loader.Hisense2017/Resources.cs.resx deleted file mode 100644 index d58980a..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.cs.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.de.resx b/source/ChanSort.Loader.Hisense2017/Resources.de.resx deleted file mode 100644 index f5aade9..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.de.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Diese Senderliste enthält keine Daten. -Vermutlich wurde bei der Ersteinrichtung des Geräte eine vordefinierte Liste gewählt. Solche Listen können nicht exportiert und weder am TV noch am PC bearbeitet werden. -Um eine bearbeitbare Liste zu erhalten, müssen Sie ihr Gerät auf Werkseinstellungen zurücksetzen und beim Sat-Suchlauf die Option 'Andere' auswählen. - - - Keine Sender gefunden - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.es.resx b/source/ChanSort.Loader.Hisense2017/Resources.es.resx deleted file mode 100644 index c8de08e..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.es.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Esta lista de canales no contiene datos. -Lo más probable es que seleccionase una lista predefinida de canales durante los ajustes iniciales de su TV. Estas listas no pueden ser exportadas ni editadas en su TV o PC. -Para obtener una lista que pueda ser editada en su PC deberá reiniciar su TV a los valores de fábrica y seleccionar la opción 'Otros' durante los ajustes de canales de satélite. - - - No se han encontrado canales - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.hu.resx b/source/ChanSort.Loader.Hisense2017/Resources.hu.resx deleted file mode 100644 index 05a2492..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.hu.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Ez a csatorna lista fájl nem tartalmaz adatokat. -Valószínűleg egy előre definiált csatorna lista lett kiválasztva a TV legelső beállításakor. Az ilyen listák nem kerülnek exportálásra és nem szerkeszthetők a TV-n vagy a számítógépen. -A PC-n szerkeszthető lista megszerzéséhez vissza kell állítania a TV-készüléket gyári alapállapotra és a műholdas csatorna beállítása során ki kell választania az „Egyéb” opciót. - - - Nem található csatorna - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.pl.resx b/source/ChanSort.Loader.Hisense2017/Resources.pl.resx deleted file mode 100644 index 420cd36..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.pl.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Ten plik listy kanałów nie zawiera żadnych danych. -Najprawdopodobniej podczas wstępnej konfiguracji telewizora wybrano wstępnie zdefiniowaną listę kanałów. Takie listy nie są eksportowane i nie można ich edytować w telewizorze ani na komputerze. -Aby uzyskać listę, którą można edytować na komputerze, musisz zresetować telewizor do ustawień fabrycznych i wybrać opcję „Inne” podczas konfiguracji kanału satelitarnego. - - - Nie znaleziono kanałów - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.pt.resx b/source/ChanSort.Loader.Hisense2017/Resources.pt.resx deleted file mode 100644 index d58980a..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.pt.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.resx b/source/ChanSort.Loader.Hisense2017/Resources.resx deleted file mode 100644 index 957e1f2..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - This channel list file does not contain any data. -Most likely a predefined channel list was selected during the TV's intial setup. Such lists do not get exported and cannot be edited on the TV or on your PC. -To get a list that can be edited on your PC you have to reset your TV to factory defaults and select the option 'Other' during the satellite channel setup. - - - No channels found - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.ro.resx b/source/ChanSort.Loader.Hisense2017/Resources.ro.resx deleted file mode 100644 index e039d36..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.ro.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Acest fișier din lista de canale nu conține date. -Cel mai probabil, o listă de canale predefinită a fost selectată în timpul configurației inițiale a televizorului. Astfel de liste nu sunt exportate și nu pot fi editate pe televizor sau pe PC. -Pentru a obține o listă care poate fi editată pe PC, trebuie să resetați televizorul la valorile implicite din fabrică și să selectați opțiunea "Altele" în timpul configurației canalelor de satelit. - - - Nu au fost găsite canale - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Hisense2017/Resources.tr.resx b/source/ChanSort.Loader.Hisense2017/Resources.tr.resx deleted file mode 100644 index 5e3552c..0000000 --- a/source/ChanSort.Loader.Hisense2017/Resources.tr.resx +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Bu kanal listesi dosyası veri içermiyor. -Büyük olasılıkla TV'nin ilk kurulumu sırasında önceden tanımlanmış bir kanal listesi seçildi. Bu tür listeler dışa aktarılmaz ve TV'de veya PC'nizde düzenlenemez. -PC'nizde düzenlenebilecek bir liste almak için TV'nizi fabrika varsayılanlarına sıfırlamanız ve uydu kanalı kurulumu sırasında 'Diğer' seçeneğini seçmeniz gerekir. - - - Kanal bulunamadı - - \ No newline at end of file diff --git a/source/ChanSort.Loader.LG/AnalogChannel.cs b/source/ChanSort.Loader.LG/Binary/AnalogChannel.cs similarity index 93% rename from source/ChanSort.Loader.LG/AnalogChannel.cs rename to source/ChanSort.Loader.LG/Binary/AnalogChannel.cs index 1f4acd2..01f2e64 100644 --- a/source/ChanSort.Loader.LG/AnalogChannel.cs +++ b/source/ChanSort.Loader.LG/Binary/AnalogChannel.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public class AnalogChannel : TllChannelBase { diff --git a/source/ChanSort.Loader.LG/DtvChannel.cs b/source/ChanSort.Loader.LG/Binary/DtvChannel.cs similarity index 96% rename from source/ChanSort.Loader.LG/DtvChannel.cs rename to source/ChanSort.Loader.LG/Binary/DtvChannel.cs index 024db4a..67eb5cc 100644 --- a/source/ChanSort.Loader.LG/DtvChannel.cs +++ b/source/ChanSort.Loader.LG/Binary/DtvChannel.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public class DtvChannel : TllChannelBase { diff --git a/source/ChanSort.Loader.LG/DvbsDataLayout.cs b/source/ChanSort.Loader.LG/Binary/DvbsDataLayout.cs similarity index 98% rename from source/ChanSort.Loader.LG/DvbsDataLayout.cs rename to source/ChanSort.Loader.LG/Binary/DvbsDataLayout.cs index 9f27309..8f3e360 100644 --- a/source/ChanSort.Loader.LG/DvbsDataLayout.cs +++ b/source/ChanSort.Loader.LG/Binary/DvbsDataLayout.cs @@ -1,4 +1,4 @@ -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public class DvbsDataLayout { diff --git a/source/ChanSort.Loader.LG/FirmwareData.cs b/source/ChanSort.Loader.LG/Binary/FirmwareData.cs similarity index 98% rename from source/ChanSort.Loader.LG/FirmwareData.cs rename to source/ChanSort.Loader.LG/Binary/FirmwareData.cs index b6fdfaa..fa9bd52 100644 --- a/source/ChanSort.Loader.LG/FirmwareData.cs +++ b/source/ChanSort.Loader.LG/Binary/FirmwareData.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public class FirmwareData : DataMapping { diff --git a/source/ChanSort.Loader.LG/LnbConfig.cs b/source/ChanSort.Loader.LG/Binary/LnbConfig.cs similarity index 91% rename from source/ChanSort.Loader.LG/LnbConfig.cs rename to source/ChanSort.Loader.LG/Binary/LnbConfig.cs index 179056f..afa1503 100644 --- a/source/ChanSort.Loader.LG/LnbConfig.cs +++ b/source/ChanSort.Loader.LG/Binary/LnbConfig.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { internal class LnbConfig : Api.LnbConfig { diff --git a/source/ChanSort.Loader.LG/SatChannel.cs b/source/ChanSort.Loader.LG/Binary/SatChannel.cs similarity index 96% rename from source/ChanSort.Loader.LG/SatChannel.cs rename to source/ChanSort.Loader.LG/Binary/SatChannel.cs index 091549e..7361a6b 100644 --- a/source/ChanSort.Loader.LG/SatChannel.cs +++ b/source/ChanSort.Loader.LG/Binary/SatChannel.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { class SatChannel : TllChannelBase { diff --git a/source/ChanSort.Loader.LG/SatChannelListHeader.cs b/source/ChanSort.Loader.LG/Binary/SatChannelListHeader.cs similarity index 96% rename from source/ChanSort.Loader.LG/SatChannelListHeader.cs rename to source/ChanSort.Loader.LG/Binary/SatChannelListHeader.cs index 417cf5d..6fa0c99 100644 --- a/source/ChanSort.Loader.LG/SatChannelListHeader.cs +++ b/source/ChanSort.Loader.LG/Binary/SatChannelListHeader.cs @@ -1,7 +1,7 @@ using System; using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { internal class SatChannelListHeader { diff --git a/source/ChanSort.Loader.LG/SatTransponder.cs b/source/ChanSort.Loader.LG/Binary/SatTransponder.cs similarity index 98% rename from source/ChanSort.Loader.LG/SatTransponder.cs rename to source/ChanSort.Loader.LG/Binary/SatTransponder.cs index 16ce41a..47a64f8 100644 --- a/source/ChanSort.Loader.LG/SatTransponder.cs +++ b/source/ChanSort.Loader.LG/Binary/SatTransponder.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { internal class SatTransponder : Transponder { diff --git a/source/ChanSort.Loader.LG/TllChannelBase.cs b/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs similarity index 99% rename from source/ChanSort.Loader.LG/TllChannelBase.cs rename to source/ChanSort.Loader.LG/Binary/TllChannelBase.cs index 3673f4a..5ed3bce 100644 --- a/source/ChanSort.Loader.LG/TllChannelBase.cs +++ b/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public class TllChannelBase : ChannelInfo { diff --git a/source/ChanSort.Loader.LG/TllFileSerializer.cs b/source/ChanSort.Loader.LG/Binary/TllFileSerializer.cs similarity index 99% rename from source/ChanSort.Loader.LG/TllFileSerializer.cs rename to source/ChanSort.Loader.LG/Binary/TllFileSerializer.cs index 6100cc1..a073ce8 100644 --- a/source/ChanSort.Loader.LG/TllFileSerializer.cs +++ b/source/ChanSort.Loader.LG/Binary/TllFileSerializer.cs @@ -8,7 +8,7 @@ using System.Text; using System.Windows.Forms; using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public partial class TllFileSerializer : SerializerBase { diff --git a/source/ChanSort.Loader.LG/TllFileSerializer.sql.cs b/source/ChanSort.Loader.LG/Binary/TllFileSerializer.sql.cs similarity index 99% rename from source/ChanSort.Loader.LG/TllFileSerializer.sql.cs rename to source/ChanSort.Loader.LG/Binary/TllFileSerializer.sql.cs index 939b199..3a28a53 100644 --- a/source/ChanSort.Loader.LG/TllFileSerializer.sql.cs +++ b/source/ChanSort.Loader.LG/Binary/TllFileSerializer.sql.cs @@ -5,7 +5,7 @@ using System.Data.SqlClient; using System.Text; using ChanSort.Api; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { /// /// For research purposes this class writes DVB-S channel information into a database diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.Designer.cs b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.Designer.cs similarity index 99% rename from source/ChanSort.Loader.LG/TvSettingsForm.Designer.cs rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.Designer.cs index fbea31c..fe0f948 100644 --- a/source/ChanSort.Loader.LG/TvSettingsForm.Designer.cs +++ b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.Designer.cs @@ -1,4 +1,4 @@ -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { partial class TvSettingsForm { diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.cs b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.cs similarity index 98% rename from source/ChanSort.Loader.LG/TvSettingsForm.cs rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.cs index 6d12e6b..53d5593 100644 --- a/source/ChanSort.Loader.LG/TvSettingsForm.cs +++ b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.cs @@ -2,7 +2,7 @@ using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; -namespace ChanSort.Loader.LG +namespace ChanSort.Loader.LG.Binary { public partial class TvSettingsForm : XtraForm { diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.cs.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.cs.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.cs.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.cs.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.de.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.de.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.de.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.de.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.es.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.es.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.es.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.es.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.hu.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.hu.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.hu.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.hu.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.pl.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.pl.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.pl.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.pl.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.pt.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.pt.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.pt.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.pt.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.ro.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.ro.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.ro.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.ro.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.ru.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.ru.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.ru.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.ru.resx diff --git a/source/ChanSort.Loader.LG/TvSettingsForm.tr.resx b/source/ChanSort.Loader.LG/Binary/TvSettingsForm.tr.resx similarity index 100% rename from source/ChanSort.Loader.LG/TvSettingsForm.tr.resx rename to source/ChanSort.Loader.LG/Binary/TvSettingsForm.tr.resx diff --git a/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj b/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj index a9d5f8a..a17a753 100644 --- a/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj +++ b/source/ChanSort.Loader.LG/ChanSort.Loader.LG.csproj @@ -25,6 +25,7 @@ 4 true false + latest pdbonly @@ -34,6 +35,7 @@ prompt 4 false + latest true @@ -47,6 +49,7 @@ true true false + latest ..\Release\ @@ -58,12 +61,16 @@ false true false + latest + + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + @@ -74,11 +81,15 @@ - - - - - + + + + + + + + + Form @@ -86,27 +97,21 @@ PresetProgramNrDialog.cs - - True - True - Resource.de.resx - True True Resource.resx - - - - - - - - + + + + + + + Form - + TvSettingsForm.cs @@ -172,39 +177,42 @@ - + TvSettingsForm.cs - + TvSettingsForm.cs Designer - + TvSettingsForm.cs - + TvSettingsForm.cs - + TvSettingsForm.cs - + TvSettingsForm.cs - + TvSettingsForm.cs Designer - + TvSettingsForm.cs - + TvSettingsForm.cs - + TvSettingsForm.cs + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Samsung/Resource.resx b/source/ChanSort.Loader.Samsung/Resource.resx deleted file mode 100644 index 4fdb1b6..0000000 --- a/source/ChanSort.Loader.Samsung/Resource.resx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/source/ChanSort.Loader.Samsung/SamsungPlugin.cs b/source/ChanSort.Loader.Samsung/SamsungPlugin.cs new file mode 100644 index 0000000..2ee34dd --- /dev/null +++ b/source/ChanSort.Loader.Samsung/SamsungPlugin.cs @@ -0,0 +1,24 @@ +using System.IO; +using ChanSort.Api; +using ChanSort.Loader.Samsung.Scm; +using ChanSort.Loader.Samsung.Zip; + +namespace ChanSort.Loader.Samsung +{ + public class SamsungPlugin : ISerializerPlugin + { + public string DllName { get; set; } + public string PluginName => "Samsung (*.scm, *.zip)"; + public string FileFilter => "*.scm;*.zip"; + + public SerializerBase CreateSerializer(string inputFile) + { + var ext = Path.GetExtension(inputFile).ToLowerInvariant(); + if (ext == ".scm") + return new ScmSerializer(inputFile); + if (ext == ".zip") + return new DbSerializer(inputFile); + return null; + } + } +} diff --git a/source/ChanSort.Loader.Samsung/AnalogChannel.cs b/source/ChanSort.Loader.Samsung/Scm/AnalogChannel.cs similarity index 96% rename from source/ChanSort.Loader.Samsung/AnalogChannel.cs rename to source/ChanSort.Loader.Samsung/Scm/AnalogChannel.cs index 46db84b..296ba3b 100644 --- a/source/ChanSort.Loader.Samsung/AnalogChannel.cs +++ b/source/ChanSort.Loader.Samsung/Scm/AnalogChannel.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { internal class AnalogChannel : ScmChannelBase { diff --git a/source/ChanSort.Loader.Samsung/DigitalChannel.cs b/source/ChanSort.Loader.Samsung/Scm/DigitalChannel.cs similarity index 97% rename from source/ChanSort.Loader.Samsung/DigitalChannel.cs rename to source/ChanSort.Loader.Samsung/Scm/DigitalChannel.cs index 4149cee..d8e19ec 100644 --- a/source/ChanSort.Loader.Samsung/DigitalChannel.cs +++ b/source/ChanSort.Loader.Samsung/Scm/DigitalChannel.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { public class DigitalChannel : ScmChannelBase { diff --git a/source/ChanSort.Loader.Samsung/ModelConstants.cs b/source/ChanSort.Loader.Samsung/Scm/ModelConstants.cs similarity index 98% rename from source/ChanSort.Loader.Samsung/ModelConstants.cs rename to source/ChanSort.Loader.Samsung/Scm/ModelConstants.cs index 8620c22..3159cad 100644 --- a/source/ChanSort.Loader.Samsung/ModelConstants.cs +++ b/source/ChanSort.Loader.Samsung/Scm/ModelConstants.cs @@ -1,6 +1,6 @@ using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { public enum FavoritesIndexMode { diff --git a/source/ChanSort.Loader.Samsung/SatChannel.cs b/source/ChanSort.Loader.Samsung/Scm/SatChannel.cs similarity index 97% rename from source/ChanSort.Loader.Samsung/SatChannel.cs rename to source/ChanSort.Loader.Samsung/Scm/SatChannel.cs index 8bb21cc..97a6c35 100644 --- a/source/ChanSort.Loader.Samsung/SatChannel.cs +++ b/source/ChanSort.Loader.Samsung/Scm/SatChannel.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { class SatChannel : ScmChannelBase { diff --git a/source/ChanSort.Loader.Samsung/SatelliteMapping.cs b/source/ChanSort.Loader.Samsung/Scm/SatelliteMapping.cs similarity index 95% rename from source/ChanSort.Loader.Samsung/SatelliteMapping.cs rename to source/ChanSort.Loader.Samsung/Scm/SatelliteMapping.cs index 49055a7..a6063ea 100644 --- a/source/ChanSort.Loader.Samsung/SatelliteMapping.cs +++ b/source/ChanSort.Loader.Samsung/Scm/SatelliteMapping.cs @@ -1,7 +1,7 @@ using System; using System.Text; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { internal class SatelliteMapping { diff --git a/source/ChanSort.Loader.Samsung/ScmChannelBase.cs b/source/ChanSort.Loader.Samsung/Scm/ScmChannelBase.cs similarity index 99% rename from source/ChanSort.Loader.Samsung/ScmChannelBase.cs rename to source/ChanSort.Loader.Samsung/Scm/ScmChannelBase.cs index 5eaf1bd..cedf362 100644 --- a/source/ChanSort.Loader.Samsung/ScmChannelBase.cs +++ b/source/ChanSort.Loader.Samsung/Scm/ScmChannelBase.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { public class ScmChannelBase : ChannelInfo { diff --git a/source/ChanSort.Loader.Samsung/ScmSerializer.cs b/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs similarity index 99% rename from source/ChanSort.Loader.Samsung/ScmSerializer.cs rename to source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs index 9a853dc..6107961 100644 --- a/source/ChanSort.Loader.Samsung/ScmSerializer.cs +++ b/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using ChanSort.Api; -namespace ChanSort.Loader.Samsung +namespace ChanSort.Loader.Samsung.Scm { internal class ScmSerializer : SerializerBase { diff --git a/source/ChanSort.Loader.Samsung/ScmSerializerPlugin.cs b/source/ChanSort.Loader.Samsung/ScmSerializerPlugin.cs deleted file mode 100644 index c5ff788..0000000 --- a/source/ChanSort.Loader.Samsung/ScmSerializerPlugin.cs +++ /dev/null @@ -1,16 +0,0 @@ -using ChanSort.Api; - -namespace ChanSort.Loader.Samsung -{ - public class ScmSerializerPlugin : ISerializerPlugin - { - public string DllName { get; set; } - public string PluginName { get { return "Samsung B-H series"; } } - public string FileFilter { get { return "*.scm"; } } - - public SerializerBase CreateSerializer(string inputFile) - { - return new ScmSerializer(inputFile); - } - } -} diff --git a/source/ChanSort.Loader.SamsungJ/DbChannel.cs b/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs similarity index 98% rename from source/ChanSort.Loader.SamsungJ/DbChannel.cs rename to source/ChanSort.Loader.Samsung/Zip/DbChannel.cs index ccbc3ae..97bf4c3 100644 --- a/source/ChanSort.Loader.SamsungJ/DbChannel.cs +++ b/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs @@ -2,7 +2,7 @@ using System.Data.SQLite; using ChanSort.Api; -namespace ChanSort.Loader.SamsungJ +namespace ChanSort.Loader.Samsung.Zip { internal class DbChannel : ChannelInfo { diff --git a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs b/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs similarity index 99% rename from source/ChanSort.Loader.SamsungJ/DbSerializer.cs rename to source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs index 26dd6c7..9633541 100644 --- a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs +++ b/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs @@ -4,11 +4,10 @@ using System.Data; using System.Data.SQLite; using System.IO; using System.Linq; -using System.Runtime.CompilerServices; using System.Text; using ChanSort.Api; -namespace ChanSort.Loader.SamsungJ +namespace ChanSort.Loader.Samsung.Zip { /// /// Loader for Samsung J/K/M/N/R/Q series .zip files (2015 - 2020) diff --git a/source/ChanSort.Loader.SamsungJ/Utf16InsideUtf8EnvelopeEncoding.cs b/source/ChanSort.Loader.Samsung/Zip/Utf16InsideUtf8EnvelopeEncoding.cs similarity index 99% rename from source/ChanSort.Loader.SamsungJ/Utf16InsideUtf8EnvelopeEncoding.cs rename to source/ChanSort.Loader.Samsung/Zip/Utf16InsideUtf8EnvelopeEncoding.cs index 23d22ad..cb267c7 100644 --- a/source/ChanSort.Loader.SamsungJ/Utf16InsideUtf8EnvelopeEncoding.cs +++ b/source/ChanSort.Loader.Samsung/Zip/Utf16InsideUtf8EnvelopeEncoding.cs @@ -1,7 +1,7 @@ using System.IO; using System.Text; -namespace ChanSort.Loader.SamsungJ +namespace ChanSort.Loader.Samsung.Zip { // Samsung 1242 format does not store UTF16 characters directly, but instead wraps 16 data bits inside a UTF-8 lead + continuation byte sequence. // A 3 byte UTF-8 sequence is used to encode 16 bits of utf-16 big endian input: 1110aaaa 10bbbbcc 10ccdddd represents the 16bit big endian integer ccccddddaaaabbbb, i.e. 0xE4, 0x84, 0x80 => 0x00, 0x41 => "A" in UTF-16 BE diff --git a/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj b/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj deleted file mode 100644 index 3462992..0000000 --- a/source/ChanSort.Loader.SamsungJ/ChanSort.Loader.SamsungJ.csproj +++ /dev/null @@ -1,94 +0,0 @@ - - - - - Debug - AnyCPU - {33897002-0537-49A4-B963-A18D17311B3D} - Library - Properties - ChanSort.Loader.SamsungJ - ChanSort.Loader.SamsungJ - v4.8 - 512 - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - latest - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - latest - - - true - ..\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - false - latest - - - ..\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - false - latest - - - - - - ..\DLL\System.Data.SQLite.dll - - - - - - - - - - - - - - - - - - {dccffa08-472b-4d17-bb90-8f513fc01392} - ChanSort.Api - - - - - \ No newline at end of file diff --git a/source/ChanSort.Loader.SamsungJ/DbSerializerPlugin.cs b/source/ChanSort.Loader.SamsungJ/DbSerializerPlugin.cs deleted file mode 100644 index a1ddb0b..0000000 --- a/source/ChanSort.Loader.SamsungJ/DbSerializerPlugin.cs +++ /dev/null @@ -1,16 +0,0 @@ -using ChanSort.Api; - -namespace ChanSort.Loader.SamsungJ -{ - public class DbSerializerPlugin : ISerializerPlugin - { - public string DllName { get; set; } - public string PluginName => "Samsung J-K series"; - public string FileFilter => "*.zip"; // "channel_list_t*.zip"; - - public SerializerBase CreateSerializer(string inputFile) - { - return new DbSerializer(inputFile); - } - } -} diff --git a/source/ChanSort.Loader.SamsungJ/Properties/AssemblyInfo.cs b/source/ChanSort.Loader.SamsungJ/Properties/AssemblyInfo.cs deleted file mode 100644 index 3b54e92..0000000 --- a/source/ChanSort.Loader.SamsungJ/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ChanSort.Loader.SamsungJ")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ChanSort.Loader.SamsungJ")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("2e9d8977-acba-492f-92d9-d070d4e43a87")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj b/source/ChanSort.Loader.SatcoDX/ChanSort.Loader.SatcoDX.csproj similarity index 94% rename from source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj rename to source/ChanSort.Loader.SatcoDX/ChanSort.Loader.SatcoDX.csproj index 2c27933..fc82764 100644 --- a/source/ChanSort.Loader.SilvaSchneider/ChanSort.Loader.SilvaSchneider.csproj +++ b/source/ChanSort.Loader.SatcoDX/ChanSort.Loader.SatcoDX.csproj @@ -7,8 +7,8 @@ {E6279FF8-362A-41E6-AC0D-D0861D43F01C} Library Properties - ChanSort.Loader.SilvaSchneider - ChanSort.Loader.SilvaSchneider + ChanSort.Loader.SatcoDX + ChanSort.Loader.SatcoDX v4.8 512 @@ -64,9 +64,9 @@ - + - + diff --git a/source/ChanSort.Loader.SilvaSchneider/Channels.cs b/source/ChanSort.Loader.SatcoDX/Channel.cs similarity index 64% rename from source/ChanSort.Loader.SilvaSchneider/Channels.cs rename to source/ChanSort.Loader.SatcoDX/Channel.cs index f8d64da..d0e66dc 100644 --- a/source/ChanSort.Loader.SilvaSchneider/Channels.cs +++ b/source/ChanSort.Loader.SatcoDX/Channel.cs @@ -3,16 +3,16 @@ using System.Globalization; using System.IO; using ChanSort.Api; -namespace ChanSort.Loader.SilvaSchneider +namespace ChanSort.Loader.SatcoDX { - internal class Channels : ChannelInfo + internal class Channel : ChannelInfo { public int FileOffset { get; } public int Length { get; } #region ctor() - internal Channels(int pos, string line, byte[] data, int start, int length, DvbStringDecoder decoder) + internal Channel(int pos, string line, byte[] data, int start, int length, DvbStringDecoder decoder) { this.FileOffset = start; this.Length = length; @@ -24,17 +24,24 @@ namespace ChanSort.Loader.SilvaSchneider if (line.Length < 106) throw new FileLoadException("Unrecognized channel format"); + // 10-27: satellite name this.Satellite = line.Substring(10, 18); + // 28: channel type var type = line[28]; this.SignalSource = SignalSource.Digital | SignalSource.Sat | (type == 'T' ? SignalSource.Tv : type == 'R' ? SignalSource.Radio : 0); - this.ServiceType = type == 'T' ? 1 : type == 'R' ? 2 : 0; // 1=SD-TV, 2=Radio + this.ServiceTypeName = type == 'T' ? "TV" : type == 'R' ? "Radio" : type == 'D' ? "Data" : "Other"; - if (int.TryParse(line.Substring(34, 5), out var mhz)) - this.FreqInMhz = mhz; + // 29-32: broadcast system - this.Polarity = line[39] == '1' ? 'H' : 'V'; + // 33-41: frequency in kHz + if (int.TryParse(line.Substring(33, 9), out var khz)) + this.FreqInMhz = (decimal)khz / 1000; + // 42: polarity + this.Polarity = line[42] == '1' ? 'H' : 'V'; + + // 43-50 + (115-126 or 115-131): channel name byte[] nameBytes = new byte[8+17]; var nameLen2 = Math.Min(length - 115, 17); // version 103 has 12 extra bytes for channel name, version 105 has 17 Array.Copy(data, start + 43, nameBytes, 0, 8); @@ -43,20 +50,36 @@ namespace ChanSort.Loader.SilvaSchneider this.Name = longName.TrimEnd(); this.ShortName = shortName.TrimEnd(); + // 51-54: sat position var spos = line.Substring(51, 4).TrimStart('0'); this.SatPosition = spos.Substring(0, spos.Length - 1) + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + spos.Substring(spos.Length - 1); + // 69-73: symbol rate if (int.TryParse(line.Substring(69, 5), out var symrate)) this.SymbolRate = symrate; + // 74: FEC 0=-, 1=1/2, 2=2/3, 3=3/4, 5=5/6, 7=7/8 + + // 75-78: vpid or ____ + // 79-82: apid or ____ + // 83-86: pcrpid or ____ + + // 87-91: sid if (int.TryParse(line.Substring(87, 5), out var sid)) this.ServiceId = sid; + // 92-96: nid / onid if (int.TryParse(line.Substring(92, 5), out var onid)) this.OriginalNetworkId = onid; + // 97-101: tsid if (int.TryParse(line.Substring(97, 5), out var tsid)) this.TransportStreamId = tsid; + + // 102-104: language + // 106-107: country code + // 108-110: language code + // 111-114: crypto code } #endregion diff --git a/source/ChanSort.Loader.SilvaSchneider/Properties/AssemblyInfo.cs b/source/ChanSort.Loader.SatcoDX/Properties/AssemblyInfo.cs similarity index 100% rename from source/ChanSort.Loader.SilvaSchneider/Properties/AssemblyInfo.cs rename to source/ChanSort.Loader.SatcoDX/Properties/AssemblyInfo.cs diff --git a/source/ChanSort.Loader.SatcoDX/SatcoDxPlugin.cs b/source/ChanSort.Loader.SatcoDX/SatcoDxPlugin.cs new file mode 100644 index 0000000..419c1e5 --- /dev/null +++ b/source/ChanSort.Loader.SatcoDX/SatcoDxPlugin.cs @@ -0,0 +1,16 @@ +using ChanSort.Api; + +namespace ChanSort.Loader.SatcoDX +{ + public class SatcoDxPlugin : ISerializerPlugin + { + public string DllName { get; set; } + public string PluginName => "ITT/Medion/Nabo/ok./Peaq/Schaub-Lorenz/Silva-Schneider/Telefunken"; + public string FileFilter => "*.sdx"; + + public SerializerBase CreateSerializer(string inputFile) + { + return new Serializer(inputFile); + } + } +} diff --git a/source/ChanSort.Loader.SilvaSchneider/Serializer.cs b/source/ChanSort.Loader.SatcoDX/Serializer.cs similarity index 90% rename from source/ChanSort.Loader.SilvaSchneider/Serializer.cs rename to source/ChanSort.Loader.SatcoDX/Serializer.cs index cb61388..4d41691 100644 --- a/source/ChanSort.Loader.SilvaSchneider/Serializer.cs +++ b/source/ChanSort.Loader.SatcoDX/Serializer.cs @@ -3,7 +3,7 @@ using System.IO; using System.Text; using ChanSort.Api; -namespace ChanSort.Loader.SilvaSchneider +namespace ChanSort.Loader.SatcoDX { internal class Serializer : SerializerBase { @@ -36,6 +36,8 @@ namespace ChanSort.Loader.SilvaSchneider list.VisibleColumnFieldNames.Remove("Hidden"); list.VisibleColumnFieldNames.Remove("Encrypted"); list.VisibleColumnFieldNames.Remove("Favorites"); + list.VisibleColumnFieldNames.Remove("ServiceType"); + list.VisibleColumnFieldNames.Add("ServiceTypeName"); } } @@ -55,7 +57,7 @@ namespace ChanSort.Loader.SilvaSchneider if (nextPos - prevPos == 0) continue; string line = Encoding.ASCII.GetString(content, prevPos, nextPos-prevPos); - ChannelInfo channel = new Channels(pos, line, content, prevPos, nextPos-prevPos, decoder); + ChannelInfo channel = new Channel(pos, line, content, prevPos, nextPos-prevPos, decoder); this.DataRoot.AddChannel(this.allChannels, channel); pos++; prevPos = nextPos + 1; @@ -81,7 +83,7 @@ namespace ChanSort.Loader.SilvaSchneider // when a reference list was applied, the list may contain proxy entries for deleted channels, which must be ignored if (channel.IsProxy || channel.IsDeleted) continue; - if (channel is Channels realChannel) + if (channel is Channel realChannel) file.Write(this.content, realChannel.FileOffset, realChannel.Length + 1); } } diff --git a/source/ChanSort.Loader.SilvaSchneider/SerializerPlugin.cs b/source/ChanSort.Loader.SilvaSchneider/SerializerPlugin.cs deleted file mode 100644 index 43fcb5c..0000000 --- a/source/ChanSort.Loader.SilvaSchneider/SerializerPlugin.cs +++ /dev/null @@ -1,16 +0,0 @@ -using ChanSort.Api; - -namespace ChanSort.Loader.SilvaSchneider -{ - public class SerializerPlugin : ISerializerPlugin - { - public string DllName { get; set; } - public string PluginName { get { return "ITT/Medion/Nabo/ok./Peaq/Schaub-Lorenz/Silva-Schneider/Telefunken"; } } - public string FileFilter { get { return "*.sdx"; } } - - public SerializerBase CreateSerializer(string inputFile) - { - return new Serializer(inputFile); - } - } -} diff --git a/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj b/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj index 81d4322..1371e8e 100644 --- a/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj +++ b/source/ChanSort.Loader.Sony/ChanSort.Loader.Sony.csproj @@ -66,7 +66,7 @@ - + diff --git a/source/ChanSort.Loader.Sony/SerializerPlugin.cs b/source/ChanSort.Loader.Sony/SonyPlugin.cs similarity index 72% rename from source/ChanSort.Loader.Sony/SerializerPlugin.cs rename to source/ChanSort.Loader.Sony/SonyPlugin.cs index 8f9861c..7be50b1 100644 --- a/source/ChanSort.Loader.Sony/SerializerPlugin.cs +++ b/source/ChanSort.Loader.Sony/SonyPlugin.cs @@ -2,10 +2,10 @@ namespace ChanSort.Loader.Sony { - public class SerializerPlugin : ISerializerPlugin + public class SonyPlugin : ISerializerPlugin { public string DllName { get; set; } - public string PluginName => "Sony sdb.xml"; + public string PluginName => "Sony (sdb.xml)"; public string FileFilter => "*.xml"; public SerializerBase CreateSerializer(string inputFile) diff --git a/source/ChanSort.Loader.Toshiba/ToshibaPlugin.cs b/source/ChanSort.Loader.Toshiba/ToshibaPlugin.cs index b2262e7..f8e132b 100644 --- a/source/ChanSort.Loader.Toshiba/ToshibaPlugin.cs +++ b/source/ChanSort.Loader.Toshiba/ToshibaPlugin.cs @@ -6,7 +6,7 @@ namespace ChanSort.Loader.Toshiba public class ToshibaPlugin : ISerializerPlugin { public string DllName { get; set; } - public string PluginName => "Toshiba"; + public string PluginName => "Toshiba (*.zip, settingsDB.db)"; public string FileFilter => "*.zip;*.db"; public SerializerBase CreateSerializer(string inputFile) diff --git a/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj b/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj index 0fcfb29..9934b59 100644 --- a/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj +++ b/source/ChanSort.Loader.VDR/ChanSort.Loader.VDR.csproj @@ -66,7 +66,7 @@ - + diff --git a/source/ChanSort.Loader.VDR/SerializerPlugin.cs b/source/ChanSort.Loader.VDR/VdrPlugin.cs similarity index 55% rename from source/ChanSort.Loader.VDR/SerializerPlugin.cs rename to source/ChanSort.Loader.VDR/VdrPlugin.cs index 6aed7c6..2b38738 100644 --- a/source/ChanSort.Loader.VDR/SerializerPlugin.cs +++ b/source/ChanSort.Loader.VDR/VdrPlugin.cs @@ -2,12 +2,12 @@ namespace ChanSort.Loader.VDR { - public class SerializerPlugin : ISerializerPlugin + public class VdrPlugin : ISerializerPlugin { public string DllName { get; set; } - public string PluginName { get { return "Linux VDR"; } } - public string FileFilter { get { return "*.conf"; } } - + public string PluginName => "Linux VDR (*.conf)"; + public string FileFilter => "*.conf"; + public SerializerBase CreateSerializer(string inputFile) { return new Serializer(inputFile); diff --git a/source/ChanSort.sln b/source/ChanSort.sln index 7f4bc5b..aad5231 100644 --- a/source/ChanSort.sln +++ b/source/ChanSort.sln @@ -5,14 +5,12 @@ VisualStudioVersion = 16.0.29025.244 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort", "ChanSort\ChanSort.csproj", "{5FAFDABC-A52F-498C-BD2F-AFFC4119797A}" ProjectSection(ProjectDependencies) = postProject - {33897002-0537-49A4-B963-A18D17311B3D} = {33897002-0537-49A4-B963-A18D17311B3D} {74A18C6F-09FF-413E-90D9-827066FA5B36} = {74A18C6F-09FF-413E-90D9-827066FA5B36} {68DA8072-3A29-4076-9F64-D66F38349585} = {68DA8072-3A29-4076-9F64-D66F38349585} {A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5} = {A1C9A98D-368A-44E8-9B7F-7EACA46C9EC5} {F6F02792-07F1-48D5-9AF3-F945CA5E3931} = {F6F02792-07F1-48D5-9AF3-F945CA5E3931} {E972D8A1-2F5F-421C-AC91-CFF45E5191BE} = {E972D8A1-2F5F-421C-AC91-CFF45E5191BE} {4D5AF0A3-1B96-42C8-910D-0C4852EA22F4} = {4D5AF0A3-1B96-42C8-910D-0C4852EA22F4} - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B} = {5361C8CB-F737-4709-AF8C-E1F0456F3C5B} {D093E7EE-D3AD-4E7B-AF82-C6918CA017FB} = {D093E7EE-D3AD-4E7B-AF82-C6918CA017FB} EndProjectSection EndProject @@ -39,33 +37,21 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.LG", "Test.Load EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.VDR", "ChanSort.Loader.VDR\ChanSort.Loader.VDR.csproj", "{74A18C6F-09FF-413E-90D9-827066FA5B36}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.GlobalClone", "ChanSort.Loader.GlobalClone\ChanSort.Loader.GlobalClone.csproj", "{5361C8CB-F737-4709-AF8C-E1F0456F3C5B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.SamsungJ", "ChanSort.Loader.SamsungJ\ChanSort.Loader.SamsungJ.csproj", "{33897002-0537-49A4-B963-A18D17311B3D}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.Hisense", "ChanSort.Loader.Hisense\ChanSort.Loader.Hisense.csproj", "{D093E7EE-D3AD-4E7B-AF82-C6918CA017FB}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Samsung", "Test.Loader.Samsung\Test.Loader.Samsung.csproj", "{1ED68A9B-6698-4609-B9E6-8E08B6055F2E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.Hisense2017", "ChanSort.Loader.Hisense2017\ChanSort.Loader.Hisense2017.csproj", "{9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.SilvaSchneider", "ChanSort.Loader.SilvaSchneider\ChanSort.Loader.SilvaSchneider.csproj", "{E6279FF8-362A-41E6-AC0D-D0861D43F01C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.SatcoDX", "ChanSort.Loader.SatcoDX\ChanSort.Loader.SatcoDX.csproj", "{E6279FF8-362A-41E6-AC0D-D0861D43F01C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.Sony", "ChanSort.Loader.Sony\ChanSort.Loader.Sony.csproj", "{70E29C6B-B926-4859-9548-23375BF1E1B5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.GlobalClone", "Test.Loader.GlobalClone\Test.Loader.GlobalClone.csproj", "{AA31A65D-9437-42AE-89C8-98C7392B450D}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Panasonic", "Test.Loader.Panasonic\Test.Loader.Panasonic.csproj", "{D1E4454F-DB09-402D-AD87-1E3BD17266A9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Hisense", "Test.Loader.Hisense\Test.Loader.Hisense.csproj", "{2717DB4C-7E94-4277-A880-FC2571096E74}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Hisense2017", "Test.Loader.Hisense2017\Test.Loader.Hisense2017.csproj", "{8D592EB4-3BE2-4D99-8923-FA0794C729ED}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Philips", "Test.Loader.Philips\Test.Loader.Philips.csproj", "{0A162099-DA92-426A-AB70-36F88F9E5DC1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.SamsungJ", "Test.Loader.SamsungJ\Test.Loader.SamsungJ.csproj", "{902EA731-EBB2-4B18-BE87-256C05277B3E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.SilvaSchneider", "Test.Loader.SilvaSchneider\Test.Loader.SilvaSchneider.csproj", "{C0528858-F32D-4C0C-8EC8-CEDB53C01402}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.SatcoDX", "Test.Loader.SatcoDX\Test.Loader.SatcoDX.csproj", "{C0528858-F32D-4C0C-8EC8-CEDB53C01402}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.Sony", "Test.Loader.Sony\Test.Loader.Sony.csproj", "{F732435A-0188-456C-8F06-7FBA1842FB35}" EndProject @@ -199,30 +185,6 @@ Global {74A18C6F-09FF-413E-90D9-827066FA5B36}.Release|Mixed Platforms.Build.0 = Release|x86 {74A18C6F-09FF-413E-90D9-827066FA5B36}.Release|x86.ActiveCfg = Release|x86 {74A18C6F-09FF-413E-90D9-827066FA5B36}.Release|x86.Build.0 = Release|x86 - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|x86.ActiveCfg = Debug|x86 - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Debug|x86.Build.0 = Debug|x86 - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|Any CPU.Build.0 = Release|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|x86.ActiveCfg = Release|x86 - {5361C8CB-F737-4709-AF8C-E1F0456F3C5B}.Release|x86.Build.0 = Release|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|x86.ActiveCfg = Debug|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Debug|x86.Build.0 = Debug|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33897002-0537-49A4-B963-A18D17311B3D}.Release|Any CPU.Build.0 = Release|Any CPU - {33897002-0537-49A4-B963-A18D17311B3D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Release|Mixed Platforms.Build.0 = Release|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Release|x86.ActiveCfg = Release|x86 - {33897002-0537-49A4-B963-A18D17311B3D}.Release|x86.Build.0 = Release|x86 {D093E7EE-D3AD-4E7B-AF82-C6918CA017FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D093E7EE-D3AD-4E7B-AF82-C6918CA017FB}.Debug|Any CPU.Build.0 = Debug|Any CPU {D093E7EE-D3AD-4E7B-AF82-C6918CA017FB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -247,18 +209,6 @@ Global {1ED68A9B-6698-4609-B9E6-8E08B6055F2E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1ED68A9B-6698-4609-B9E6-8E08B6055F2E}.Release|x86.ActiveCfg = Release|x86 {1ED68A9B-6698-4609-B9E6-8E08B6055F2E}.Release|x86.Build.0 = Release|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|x86.ActiveCfg = Debug|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Debug|x86.Build.0 = Debug|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|Any CPU.Build.0 = Release|Any CPU - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|Mixed Platforms.Build.0 = Release|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|x86.ActiveCfg = Release|x86 - {9282E1DB-CD1F-400A-ACA1-17E0C4562ACF}.Release|x86.Build.0 = Release|x86 {E6279FF8-362A-41E6-AC0D-D0861D43F01C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6279FF8-362A-41E6-AC0D-D0861D43F01C}.Debug|Any CPU.Build.0 = Debug|Any CPU {E6279FF8-362A-41E6-AC0D-D0861D43F01C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -283,18 +233,6 @@ Global {70E29C6B-B926-4859-9548-23375BF1E1B5}.Release|Mixed Platforms.Build.0 = Release|Any CPU {70E29C6B-B926-4859-9548-23375BF1E1B5}.Release|x86.ActiveCfg = Release|x86 {70E29C6B-B926-4859-9548-23375BF1E1B5}.Release|x86.Build.0 = Release|x86 - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|x86.ActiveCfg = Debug|x86 - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Debug|x86.Build.0 = Debug|x86 - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Any CPU.Build.0 = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.ActiveCfg = Release|x86 - {AA31A65D-9437-42AE-89C8-98C7392B450D}.Release|x86.Build.0 = Release|x86 {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {D1E4454F-DB09-402D-AD87-1E3BD17266A9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -319,18 +257,6 @@ Global {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|Mixed Platforms.Build.0 = Release|Any CPU {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.ActiveCfg = Release|x86 {2717DB4C-7E94-4277-A880-FC2571096E74}.Release|x86.Build.0 = Release|x86 - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|x86.ActiveCfg = Debug|x86 - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Debug|x86.Build.0 = Debug|x86 - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Any CPU.Build.0 = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.ActiveCfg = Release|x86 - {8D592EB4-3BE2-4D99-8923-FA0794C729ED}.Release|x86.Build.0 = Release|x86 {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -343,18 +269,6 @@ Global {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|Mixed Platforms.Build.0 = Release|Any CPU {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.ActiveCfg = Release|x86 {0A162099-DA92-426A-AB70-36F88F9E5DC1}.Release|x86.Build.0 = Release|x86 - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|x86.ActiveCfg = Debug|x86 - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Debug|x86.Build.0 = Debug|x86 - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Any CPU.Build.0 = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.ActiveCfg = Release|x86 - {902EA731-EBB2-4B18-BE87-256C05277B3E}.Release|x86.Build.0 = Release|x86 {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Any CPU.Build.0 = Debug|Any CPU {C0528858-F32D-4C0C-8EC8-CEDB53C01402}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU diff --git a/source/ChanSort/ChanSort.csproj b/source/ChanSort/ChanSort.csproj index 0cb4ade..d068f7f 100644 --- a/source/ChanSort/ChanSort.csproj +++ b/source/ChanSort/ChanSort.csproj @@ -482,14 +482,6 @@ {DCCFFA08-472B-4D17-BB90-8F513FC01392} ChanSort.Api - - {5361c8cb-f737-4709-af8c-e1f0456f3c5b} - ChanSort.Loader.GlobalClone - - - {9282e1db-cd1f-400a-aca1-17e0c4562acf} - ChanSort.Loader.Hisense2017 - {d093e7ee-d3ad-4e7b-af82-c6918ca017fb} ChanSort.Loader.Hisense @@ -510,18 +502,10 @@ {1f52b5ec-a2f1-4e53-9e1a-4658296c5bb5} ChanSort.Loader.Philips - - {33897002-0537-49a4-b963-a18d17311b3d} - ChanSort.Loader.SamsungJ - {a1c9a98d-368a-44e8-9b7f-7eaca46c9ec5} ChanSort.Loader.Samsung - - {e6279ff8-362a-41e6-ac0d-d0861d43f01c} - ChanSort.Loader.SilvaSchneider - {70e29c6b-b926-4859-9548-23375bf1e1b5} ChanSort.Loader.Sony diff --git a/source/Test.Loader.GlobalClone/Properties/AssemblyInfo.cs b/source/Test.Loader.GlobalClone/Properties/AssemblyInfo.cs deleted file mode 100644 index a9c5616..0000000 --- a/source/Test.Loader.GlobalClone/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyTitle("Test.Loader.GlobalClone")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Test.Loader.GlobalClone")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -[assembly: ComVisible(false)] - -[assembly: Guid("aa31a65d-9437-42ae-89c8-98c7392b450d")] - -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj b/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj deleted file mode 100644 index 0a71e29..0000000 --- a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - Debug - AnyCPU - {AA31A65D-9437-42AE-89C8-98C7392B450D} - Library - Properties - Test.Loader.GlobalClone - Test.Loader.GlobalClone - v4.8 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 15.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - ..\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - False - - - ..\packages\NUnit.3.12.0\lib\net45\nunit.framework.dll - - - - - - - - - - - - - - - - - - - {dccffa08-472b-4d17-bb90-8f513fc01392} - ChanSort.Api - - - {5361c8cb-f737-4709-af8c-e1f0456f3c5b} - ChanSort.Loader.GlobalClone - - - {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} - Test.Loader - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - \ No newline at end of file diff --git a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj.DotSettings b/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj.DotSettings deleted file mode 100644 index 90b4104..0000000 --- a/source/Test.Loader.GlobalClone/Test.Loader.GlobalClone.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - True \ No newline at end of file diff --git a/source/Test.Loader.GlobalClone/packages.config b/source/Test.Loader.GlobalClone/packages.config deleted file mode 100644 index ec5e459..0000000 --- a/source/Test.Loader.GlobalClone/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/Test.Loader.Hisense/HisenseChannelDbTest.cs b/source/Test.Loader.Hisense/ChannelDb/HisenseChannelDbTest.cs similarity index 93% rename from source/Test.Loader.Hisense/HisenseChannelDbTest.cs rename to source/Test.Loader.Hisense/ChannelDb/HisenseChannelDbTest.cs index 094cbaa..a554d00 100644 --- a/source/Test.Loader.Hisense/HisenseChannelDbTest.cs +++ b/source/Test.Loader.Hisense/ChannelDb/HisenseChannelDbTest.cs @@ -3,7 +3,7 @@ using ChanSort.Api; using ChanSort.Loader.Hisense; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.Hisense +namespace Test.Loader.Hisense.ChannelDb { [TestClass] public class HisenseChannelDbTest @@ -29,8 +29,8 @@ namespace Test.Loader.Hisense #region TestChannelsAddedToCorrectList private void TestChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTotal, int expectedTv, int expectedRadio, int dataProgramSid, string dataProgramName) { - var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\TestFiles\\" + fileName); - var plugin = new HisDbSerializerPlugin(); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\ChannelDb\\TestFiles\\" + fileName); + var plugin = new HisensePlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); @@ -54,8 +54,8 @@ namespace Test.Loader.Hisense [TestMethod] public void TestDeletingChannel() { - var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\TestFiles\\channel.db"); - var plugin = new HisDbSerializerPlugin(); + var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense\\ChannelDb\\TestFiles\\channel.db"); + var plugin = new HisensePlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; diff --git a/source/Test.Loader.Hisense/TestFiles/channel.db b/source/Test.Loader.Hisense/ChannelDb/TestFiles/channel.db similarity index 100% rename from source/Test.Loader.Hisense/TestFiles/channel.db rename to source/Test.Loader.Hisense/ChannelDb/TestFiles/channel.db diff --git a/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs b/source/Test.Loader.Hisense/ServicelistDb/HisenseServicelistDbTest.cs similarity index 92% rename from source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs rename to source/Test.Loader.Hisense/ServicelistDb/HisenseServicelistDbTest.cs index 7e96bbc..e71f46d 100644 --- a/source/Test.Loader.Hisense2017/HisenseServicelistDbTest.cs +++ b/source/Test.Loader.Hisense/ServicelistDb/HisenseServicelistDbTest.cs @@ -1,12 +1,10 @@ -using System.IO; -using System.Linq; -using System.Reflection; +using System.Linq; using ChanSort.Api; -using ChanSort.Loader.Hisense2017; +using ChanSort.Loader.Hisense; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.Hisense2017 +namespace Test.Loader.Hisense.ServicelistDb { [TestClass] public class HisenseServicelistDbTest @@ -32,7 +30,7 @@ namespace Test.Loader.Hisense2017 private void TestChannelsAddedToCorrectLists(string fileName, string listCaption, int expectedTotal, int expectedTv, int expectedRadio) { var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense2017\\TestFiles\\" + fileName); - var plugin = new HisDbSerializerPlugin(); + var plugin = new HisensePlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); @@ -54,7 +52,7 @@ namespace Test.Loader.Hisense2017 public void TestDeletingChannel() { var tempFile = TestUtils.DeploymentItem("Test.Loader.Hisense2017\\TestFiles\\servicelist.db"); - var plugin = new HisDbSerializerPlugin(); + var plugin = new HisensePlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; diff --git a/source/Test.Loader.Hisense2017/TestFiles/servicelist.db b/source/Test.Loader.Hisense/ServicelistDb/TestFiles/servicelist.db similarity index 100% rename from source/Test.Loader.Hisense2017/TestFiles/servicelist.db rename to source/Test.Loader.Hisense/ServicelistDb/TestFiles/servicelist.db diff --git a/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj b/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj index 35c1415..4f44719 100644 --- a/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj +++ b/source/Test.Loader.Hisense/Test.Loader.Hisense.csproj @@ -68,12 +68,14 @@ - + + - + + diff --git a/source/Test.Loader.Hisense2017/Properties/AssemblyInfo.cs b/source/Test.Loader.Hisense2017/Properties/AssemblyInfo.cs deleted file mode 100644 index ac6df41..0000000 --- a/source/Test.Loader.Hisense2017/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyTitle("Test.Loader.Hisense2017")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Test.Loader.Hisense2017")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -[assembly: ComVisible(false)] - -[assembly: Guid("8d592eb4-3be2-4d99-8923-fa0794c729ed")] - -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj b/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj deleted file mode 100644 index d445f8a..0000000 --- a/source/Test.Loader.Hisense2017/Test.Loader.Hisense2017.csproj +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Debug - AnyCPU - {8D592EB4-3BE2-4D99-8923-FA0794C729ED} - Library - Properties - Test.Loader.Hisense2017 - Test.Loader.Hisense2017 - v4.8 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 15.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - ..\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - - - ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - - - - - - - - - - - - - - {dccffa08-472b-4d17-bb90-8f513fc01392} - ChanSort.Api - - - {9282e1db-cd1f-400a-aca1-17e0c4562acf} - ChanSort.Loader.Hisense2017 - - - {68cfcb2f-b52a-43a1-aa5c-5d64a1d655d2} - Test.Loader - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - \ No newline at end of file diff --git a/source/Test.Loader.LG/CS/TestCS.cs b/source/Test.Loader.LG/Binary/CS/TestCS.cs similarity index 90% rename from source/Test.Loader.LG/CS/TestCS.cs rename to source/Test.Loader.LG/Binary/CS/TestCS.cs index 9addce4..9d59a41 100644 --- a/source/Test.Loader.LG/CS/TestCS.cs +++ b/source/Test.Loader.LG/Binary/CS/TestCS.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestCS : TestBase diff --git a/source/Test.Loader.LG/CS/xxCS460S-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/CS/xxCS460S-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/CS/xxCS460S-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/CS/xxCS460S-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/CS/xxCS460S-ZA00001.csv.in b/source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/CS/xxCS460S-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/CS/xxCS460S-ZA00001.csv.in diff --git a/source/Test.Loader.LG/DM/TestDM.cs b/source/Test.Loader.LG/Binary/DM/TestDM.cs similarity index 88% rename from source/Test.Loader.LG/DM/TestDM.cs rename to source/Test.Loader.LG/Binary/DM/TestDM.cs index 775dc81..7cda671 100644 --- a/source/Test.Loader.LG/DM/TestDM.cs +++ b/source/Test.Loader.LG/Binary/DM/TestDM.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestDM : TestBase diff --git a/source/Test.Loader.LG/DM/xx2350D-PZM00001.TLL.in b/source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/DM/xx2350D-PZM00001.TLL.in rename to source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.TLL.in diff --git a/source/Test.Loader.LG/DM/xx2350D-PZM00001.TLL.out b/source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/DM/xx2350D-PZM00001.TLL.out rename to source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.TLL.out diff --git a/source/Test.Loader.LG/DM/xx2350D-PZM00001.csv.in b/source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.csv.in similarity index 100% rename from source/Test.Loader.LG/DM/xx2350D-PZM00001.csv.in rename to source/Test.Loader.LG/Binary/DM/xx2350D-PZM00001.csv.in diff --git a/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs b/source/Test.Loader.LG/Binary/DvbsCleanup/TestDvbsCleanup.cs similarity index 86% rename from source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs rename to source/Test.Loader.LG/Binary/DvbsCleanup/TestDvbsCleanup.cs index e779dd7..3b68ee7 100644 --- a/source/Test.Loader.LG/DvbsCleanup/TestDvbsCleanup.cs +++ b/source/Test.Loader.LG/Binary/DvbsCleanup/TestDvbsCleanup.cs @@ -1,8 +1,9 @@ using System.IO; using ChanSort.Loader.LG; +using ChanSort.Loader.LG.Binary; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestDvbsCleanup : TestBase @@ -36,13 +37,13 @@ namespace Test.Loader.LG { // copy required input and assertion files TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); - TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); + TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); // load the TLL file - TllFileSerializerPlugin plugin = new TllFileSerializerPlugin(); + var plugin = new LgPlugin(); var serializer = (TllFileSerializer)plugin.CreateSerializer(baseName + ".TLL.in"); serializer.IsTesting = true; serializer.Load(); diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.TLL.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.TLL.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.TLL.in diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.TLL.out b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.TLL.out rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.TLL.out diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.csv.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.csv.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM620S-ZE00001.csv.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM620S-ZE00001.csv.in diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.TLL.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.TLL.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.TLL.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.TLL.in diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.TLL.out b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.TLL.out similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.TLL.out rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.TLL.out diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.csv.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.csv.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM640T-ZA00000.csv.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM640T-ZA00000.csv.in diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.TLL.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.TLL.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.TLL.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.TLL.in diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.TLL.out b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.TLL.out similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.TLL.out rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.TLL.out diff --git a/source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.csv.in b/source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.csv.in similarity index 100% rename from source/Test.Loader.LG/DvbsCleanup/xxLM860V-ZB99998.csv.in rename to source/Test.Loader.LG/Binary/DvbsCleanup/xxLM860V-ZB99998.csv.in diff --git a/source/Test.Loader.LG/LA/TestLA.cs b/source/Test.Loader.LG/Binary/LA/TestLA.cs similarity index 95% rename from source/Test.Loader.LG/LA/TestLA.cs rename to source/Test.Loader.LG/Binary/LA/TestLA.cs index 120a77d..44b1b92 100644 --- a/source/Test.Loader.LG/LA/TestLA.cs +++ b/source/Test.Loader.LG/Binary/LA/TestLA.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLA : TestBase diff --git a/source/Test.Loader.LG/LA/xxLA691S-ZA00004.TLL.in b/source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.TLL.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA691S-ZA00004.TLL.in rename to source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.TLL.in diff --git a/source/Test.Loader.LG/LA/xxLA691S-ZA00004.TLL.out b/source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.TLL.out similarity index 100% rename from source/Test.Loader.LG/LA/xxLA691S-ZA00004.TLL.out rename to source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.TLL.out diff --git a/source/Test.Loader.LG/LA/xxLA691S-ZA00004.csv.in b/source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.csv.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA691S-ZA00004.csv.in rename to source/Test.Loader.LG/Binary/LA/xxLA691S-ZA00004.csv.in diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00001.csv.in b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00001.csv.in diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00002.TLL.in b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.TLL.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00002.TLL.in rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.TLL.in diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00002.TLL.out b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.TLL.out similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00002.TLL.out rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.TLL.out diff --git a/source/Test.Loader.LG/LA/xxLA7408-ZB00002.csv.in b/source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.csv.in similarity index 100% rename from source/Test.Loader.LG/LA/xxLA7408-ZB00002.csv.in rename to source/Test.Loader.LG/Binary/LA/xxLA7408-ZB00002.csv.in diff --git a/source/Test.Loader.LG/LD/TestLD.cs b/source/Test.Loader.LG/Binary/LD/TestLD.cs similarity index 90% rename from source/Test.Loader.LG/LD/TestLD.cs rename to source/Test.Loader.LG/Binary/LD/TestLD.cs index ad8fc6f..bbffb21 100644 --- a/source/Test.Loader.LG/LD/TestLD.cs +++ b/source/Test.Loader.LG/Binary/LD/TestLD.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLD : TestBase diff --git a/source/Test.Loader.LG/LD/xxLD750-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LD/xxLD750-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LD/xxLD750-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LD/xxLD750-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LD/xxLD750-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LD/xxLD750-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LD/xxLD750-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LE/TestLE.cs b/source/Test.Loader.LG/Binary/LE/TestLE.cs similarity index 90% rename from source/Test.Loader.LG/LE/TestLE.cs rename to source/Test.Loader.LG/Binary/LE/TestLE.cs index 59825a1..fb1c8fd 100644 --- a/source/Test.Loader.LG/LE/TestLE.cs +++ b/source/Test.Loader.LG/Binary/LE/TestLE.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLE : TestBase diff --git a/source/Test.Loader.LG/LE/xxLE5500-ZA00002.TLL.in b/source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.TLL.in similarity index 100% rename from source/Test.Loader.LG/LE/xxLE5500-ZA00002.TLL.in rename to source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.TLL.in diff --git a/source/Test.Loader.LG/LE/xxLE5500-ZA00002.TLL.out b/source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.TLL.out similarity index 100% rename from source/Test.Loader.LG/LE/xxLE5500-ZA00002.TLL.out rename to source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.TLL.out diff --git a/source/Test.Loader.LG/LE/xxLE5500-ZA00002.csv.in b/source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.csv.in similarity index 100% rename from source/Test.Loader.LG/LE/xxLE5500-ZA00002.csv.in rename to source/Test.Loader.LG/Binary/LE/xxLE5500-ZA00002.csv.in diff --git a/source/Test.Loader.LG/LH/TestLH.cs b/source/Test.Loader.LG/Binary/LH/TestLH.cs similarity index 93% rename from source/Test.Loader.LG/LH/TestLH.cs rename to source/Test.Loader.LG/Binary/LH/TestLH.cs index d0c1e02..00c5b95 100644 --- a/source/Test.Loader.LG/LH/TestLH.cs +++ b/source/Test.Loader.LG/Binary/LH/TestLH.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLH : TestBase diff --git a/source/Test.Loader.LG/LH/xxLH3000-ZA00002.TLL.in b/source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.TLL.in similarity index 100% rename from source/Test.Loader.LG/LH/xxLH3000-ZA00002.TLL.in rename to source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.TLL.in diff --git a/source/Test.Loader.LG/LH/xxLH3000-ZA00002.TLL.out b/source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.TLL.out similarity index 100% rename from source/Test.Loader.LG/LH/xxLH3000-ZA00002.TLL.out rename to source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.TLL.out diff --git a/source/Test.Loader.LG/LH/xxLH3000-ZA00002.csv.in b/source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.csv.in similarity index 100% rename from source/Test.Loader.LG/LH/xxLH3000-ZA00002.csv.in rename to source/Test.Loader.LG/Binary/LH/xxLH3000-ZA00002.csv.in diff --git a/source/Test.Loader.LG/LH/xxLH5000-ZB00002.TLL.in b/source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.TLL.in similarity index 100% rename from source/Test.Loader.LG/LH/xxLH5000-ZB00002.TLL.in rename to source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.TLL.in diff --git a/source/Test.Loader.LG/LH/xxLH5000-ZB00002.TLL.out b/source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.TLL.out similarity index 100% rename from source/Test.Loader.LG/LH/xxLH5000-ZB00002.TLL.out rename to source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.TLL.out diff --git a/source/Test.Loader.LG/LH/xxLH5000-ZB00002.csv.in b/source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.csv.in similarity index 100% rename from source/Test.Loader.LG/LH/xxLH5000-ZB00002.csv.in rename to source/Test.Loader.LG/Binary/LH/xxLH5000-ZB00002.csv.in diff --git a/source/Test.Loader.LG/LK/TestLK.cs b/source/Test.Loader.LG/Binary/LK/TestLK.cs similarity index 93% rename from source/Test.Loader.LG/LK/TestLK.cs rename to source/Test.Loader.LG/Binary/LK/TestLK.cs index f91eb5c..e08f50a 100644 --- a/source/Test.Loader.LG/LK/TestLK.cs +++ b/source/Test.Loader.LG/Binary/LK/TestLK.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLK : TestBase diff --git a/source/Test.Loader.LG/LK/xxLK450-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LK/xxLK450-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LK/xxLK450-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LK/xxLK450-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/LK/xxLK450-ZB00001.csv.in b/source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LK/xxLK450-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/LK/xxLK450-ZB00001.csv.in diff --git a/source/Test.Loader.LG/LK/xxLK950S-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LK/xxLK950S-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LK/xxLK950S-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LK/xxLK950S-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LK/xxLK950S-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LK/xxLK950S-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LK/xxLK950S-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LM/TestLM.cs b/source/Test.Loader.LG/Binary/LM/TestLM.cs similarity index 92% rename from source/Test.Loader.LG/LM/TestLM.cs rename to source/Test.Loader.LG/Binary/LM/TestLM.cs index bb7df25..1ff9da9 100644 --- a/source/Test.Loader.LG/LM/TestLM.cs +++ b/source/Test.Loader.LG/Binary/LM/TestLM.cs @@ -3,7 +3,7 @@ using ChanSort.Api; using ChanSort.Loader.LG; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLM : TestBase @@ -45,8 +45,8 @@ namespace Test.Loader.LG [TestMethod] public void TestDeletingChannel() { - var tempFile = TestUtils.DeploymentItem("Test.Loader.LG\\LM\\xxLM620s-ZE00001.TLL.in"); - var plugin = new TllFileSerializerPlugin(); + var tempFile = TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\LM\\xxLM620s-ZE00001.TLL.in"); + var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; diff --git a/source/Test.Loader.LG/LM/xxLM340S-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM340S-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LM/xxLM340S-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LM/xxLM340S-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LM/xxLM340S-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM340S-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LM/xxLM340S-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LM/xxLM611S-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM611S-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LM/xxLM611S-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LM/xxLM611S-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LM/xxLM611S-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM611S-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LM/xxLM611S-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LM/xxLM620S-ZE00001.TLL.in b/source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM620S-ZE00001.TLL.in rename to source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.TLL.in diff --git a/source/Test.Loader.LG/LM/xxLM620S-ZE00001.TLL.out b/source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LM/xxLM620S-ZE00001.TLL.out rename to source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.TLL.out diff --git a/source/Test.Loader.LG/LM/xxLM620S-ZE00001.csv.in b/source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM620S-ZE00001.csv.in rename to source/Test.Loader.LG/Binary/LM/xxLM620S-ZE00001.csv.in diff --git a/source/Test.Loader.LG/LM/xxLM760S-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LM/xxLM760S-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM760S-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LM/xxLM760S-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LM/xxLM860V-ZB99998.TLL.in b/source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.TLL.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM860V-ZB99998.TLL.in rename to source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.TLL.in diff --git a/source/Test.Loader.LG/LM/xxLM860V-ZB99998.TLL.out b/source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.TLL.out similarity index 100% rename from source/Test.Loader.LG/LM/xxLM860V-ZB99998.TLL.out rename to source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.TLL.out diff --git a/source/Test.Loader.LG/LM/xxLM860V-ZB99998.csv.in b/source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.csv.in similarity index 100% rename from source/Test.Loader.LG/LM/xxLM860V-ZB99998.csv.in rename to source/Test.Loader.LG/Binary/LM/xxLM860V-ZB99998.csv.in diff --git a/source/Test.Loader.LG/LN/TestLN.cs b/source/Test.Loader.LG/Binary/LN/TestLN.cs similarity index 94% rename from source/Test.Loader.LG/LN/TestLN.cs rename to source/Test.Loader.LG/Binary/LN/TestLN.cs index 7131986..c332d81 100644 --- a/source/Test.Loader.LG/LN/TestLN.cs +++ b/source/Test.Loader.LG/Binary/LN/TestLN.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLN : TestBase diff --git a/source/Test.Loader.LG/LN/xxLN5406-ZA99999.TLL.in b/source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.TLL.in similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5406-ZA99999.TLL.in rename to source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.TLL.in diff --git a/source/Test.Loader.LG/LN/xxLN5406-ZA99999.TLL.out b/source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.TLL.out similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5406-ZA99999.TLL.out rename to source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.TLL.out diff --git a/source/Test.Loader.LG/LN/xxLN5406-ZA99999.csv.in b/source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.csv.in similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5406-ZA99999.csv.in rename to source/Test.Loader.LG/Binary/LN/xxLN5406-ZA99999.csv.in diff --git a/source/Test.Loader.LG/LN/xxLN5758-ZE99999.TLL.in b/source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.TLL.in similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5758-ZE99999.TLL.in rename to source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.TLL.in diff --git a/source/Test.Loader.LG/LN/xxLN5758-ZE99999.TLL.out b/source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.TLL.out similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5758-ZE99999.TLL.out rename to source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.TLL.out diff --git a/source/Test.Loader.LG/LN/xxLN5758-ZE99999.csv.in b/source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.csv.in similarity index 100% rename from source/Test.Loader.LG/LN/xxLN5758-ZE99999.csv.in rename to source/Test.Loader.LG/Binary/LN/xxLN5758-ZE99999.csv.in diff --git a/source/Test.Loader.LG/LP/TestLP.cs b/source/Test.Loader.LG/Binary/LP/TestLP.cs similarity index 90% rename from source/Test.Loader.LG/LP/TestLP.cs rename to source/Test.Loader.LG/Binary/LP/TestLP.cs index 8ecad99..bd7cf5b 100644 --- a/source/Test.Loader.LG/LP/TestLP.cs +++ b/source/Test.Loader.LG/Binary/LP/TestLP.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLP : TestBase diff --git a/source/Test.Loader.LG/LP/xxLP632H-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LP/xxLP632H-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LP/xxLP632H-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LP/xxLP632H-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LP/xxLP632H-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LP/xxLP632H-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LP/xxLP632H-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LS/TestLS.cs b/source/Test.Loader.LG/Binary/LS/TestLS.cs similarity index 94% rename from source/Test.Loader.LG/LS/TestLS.cs rename to source/Test.Loader.LG/Binary/LS/TestLS.cs index 1e5a548..dbaf562 100644 --- a/source/Test.Loader.LG/LS/TestLS.cs +++ b/source/Test.Loader.LG/Binary/LS/TestLS.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLS : TestBase diff --git a/source/Test.Loader.LG/LS/xxLS560S-ZC00010.TLL.in b/source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.TLL.in similarity index 100% rename from source/Test.Loader.LG/LS/xxLS560S-ZC00010.TLL.in rename to source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.TLL.in diff --git a/source/Test.Loader.LG/LS/xxLS560S-ZC00010.TLL.out b/source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.TLL.out similarity index 100% rename from source/Test.Loader.LG/LS/xxLS560S-ZC00010.TLL.out rename to source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.TLL.out diff --git a/source/Test.Loader.LG/LS/xxLS560S-ZC00010.csv.in b/source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.csv.in similarity index 100% rename from source/Test.Loader.LG/LS/xxLS560S-ZC00010.csv.in rename to source/Test.Loader.LG/Binary/LS/xxLS560S-ZC00010.csv.in diff --git a/source/Test.Loader.LG/LS/xxLS570S-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LS/xxLS570S-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LS/xxLS570S-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LS/xxLS570S-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/LS/xxLS570S-ZB00001.csv.in b/source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LS/xxLS570S-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/LS/xxLS570S-ZB00001.csv.in diff --git a/source/Test.Loader.LG/LT/TestLT.cs b/source/Test.Loader.LG/Binary/LT/TestLT.cs similarity index 90% rename from source/Test.Loader.LG/LT/TestLT.cs rename to source/Test.Loader.LG/Binary/LT/TestLT.cs index 69bf8b0..93d2d6d 100644 --- a/source/Test.Loader.LG/LT/TestLT.cs +++ b/source/Test.Loader.LG/Binary/LT/TestLT.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLT : TestBase diff --git a/source/Test.Loader.LG/LT/xxLT380H-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LT/xxLT380H-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LT/xxLT380H-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LT/xxLT380H-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LT/xxLT380H-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LT/xxLT380H-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LT/xxLT380H-ZA00001.csv.in diff --git a/source/Test.Loader.LG/LV/TestLV.cs b/source/Test.Loader.LG/Binary/LV/TestLV.cs similarity index 95% rename from source/Test.Loader.LG/LV/TestLV.cs rename to source/Test.Loader.LG/Binary/LV/TestLV.cs index 345ef16..6225299 100644 --- a/source/Test.Loader.LG/LV/TestLV.cs +++ b/source/Test.Loader.LG/Binary/LV/TestLV.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLV : TestBase diff --git a/source/Test.Loader.LG/LV/xxLV375S-ZC00001.TLL.in b/source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV375S-ZC00001.TLL.in rename to source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.TLL.in diff --git a/source/Test.Loader.LG/LV/xxLV375S-ZC00001.TLL.out b/source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LV/xxLV375S-ZC00001.TLL.out rename to source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.TLL.out diff --git a/source/Test.Loader.LG/LV/xxLV375S-ZC00001.csv.in b/source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV375S-ZC00001.csv.in rename to source/Test.Loader.LG/Binary/LV/xxLV375S-ZC00001.csv.in diff --git a/source/Test.Loader.LG/LV/xxLV470S-ZC00001.TLL.in b/source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV470S-ZC00001.TLL.in rename to source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.TLL.in diff --git a/source/Test.Loader.LG/LV/xxLV470S-ZC00001.TLL.out b/source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LV/xxLV470S-ZC00001.TLL.out rename to source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.TLL.out diff --git a/source/Test.Loader.LG/LV/xxLV470S-ZC00001.csv.in b/source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV470S-ZC00001.csv.in rename to source/Test.Loader.LG/Binary/LV/xxLV470S-ZC00001.csv.in diff --git a/source/Test.Loader.LG/LV/xxLV579S-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV579S-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LV/xxLV579S-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LV/xxLV579S-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/LV/xxLV579S-ZB00001.csv.in b/source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LV/xxLV579S-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/LV/xxLV579S-ZB00001.csv.in diff --git a/source/Test.Loader.LG/LW/TestLW.cs b/source/Test.Loader.LG/Binary/LW/TestLW.cs similarity index 93% rename from source/Test.Loader.LG/LW/TestLW.cs rename to source/Test.Loader.LG/Binary/LW/TestLW.cs index 00c3970..268d069 100644 --- a/source/Test.Loader.LG/LW/TestLW.cs +++ b/source/Test.Loader.LG/Binary/LW/TestLW.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLW : TestBase diff --git a/source/Test.Loader.LG/LW/xxLW4500-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LW/xxLW4500-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/LW/xxLW4500-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LW/xxLW4500-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/LW/xxLW4500-ZB00001.csv.in b/source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LW/xxLW4500-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/LW/xxLW4500-ZB00001.csv.in diff --git a/source/Test.Loader.LG/LW/xxLW659S-ZC00001.TLL.in b/source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LW/xxLW659S-ZC00001.TLL.in rename to source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.TLL.in diff --git a/source/Test.Loader.LG/LW/xxLW659S-ZC00001.TLL.out b/source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LW/xxLW659S-ZC00001.TLL.out rename to source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.TLL.out diff --git a/source/Test.Loader.LG/LW/xxLW659S-ZC00001.csv.in b/source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LW/xxLW659S-ZC00001.csv.in rename to source/Test.Loader.LG/Binary/LW/xxLW659S-ZC00001.csv.in diff --git a/source/Test.Loader.LG/LX/TestLX.cs b/source/Test.Loader.LG/Binary/LX/TestLX.cs similarity index 90% rename from source/Test.Loader.LG/LX/TestLX.cs rename to source/Test.Loader.LG/Binary/LX/TestLX.cs index e4b44f9..5ad9693 100644 --- a/source/Test.Loader.LG/LX/TestLX.cs +++ b/source/Test.Loader.LG/Binary/LX/TestLX.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestLX : TestBase diff --git a/source/Test.Loader.LG/LX/xxLX9500-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/LX/xxLX9500-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/LX/xxLX9500-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/LX/xxLX9500-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/LX/xxLX9500-ZA00001.csv.in b/source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/LX/xxLX9500-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/LX/xxLX9500-ZA00001.csv.in diff --git a/source/Test.Loader.LG/PM/TestPM.cs b/source/Test.Loader.LG/Binary/PM/TestPM.cs similarity index 94% rename from source/Test.Loader.LG/PM/TestPM.cs rename to source/Test.Loader.LG/Binary/PM/TestPM.cs index 37b4ef0..3d61529 100644 --- a/source/Test.Loader.LG/PM/TestPM.cs +++ b/source/Test.Loader.LG/Binary/PM/TestPM.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestPM : TestBase diff --git a/source/Test.Loader.LG/PM/xxPM670S-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/PM/xxPM670S-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/PM/xxPM670S-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/PM/xxPM670S-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/PM/xxPM670S-ZA00001.csv.in b/source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/PM/xxPM670S-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/PM/xxPM670S-ZA00001.csv.in diff --git a/source/Test.Loader.LG/PM/xxPM970S-ZA99999.TLL.in b/source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.TLL.in similarity index 100% rename from source/Test.Loader.LG/PM/xxPM970S-ZA99999.TLL.in rename to source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.TLL.in diff --git a/source/Test.Loader.LG/PM/xxPM970S-ZA99999.TLL.out b/source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.TLL.out similarity index 100% rename from source/Test.Loader.LG/PM/xxPM970S-ZA99999.TLL.out rename to source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.TLL.out diff --git a/source/Test.Loader.LG/PM/xxPM970S-ZA99999.csv.in b/source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.csv.in similarity index 100% rename from source/Test.Loader.LG/PM/xxPM970S-ZA99999.csv.in rename to source/Test.Loader.LG/Binary/PM/xxPM970S-ZA99999.csv.in diff --git a/source/Test.Loader.LG/PN/TestPN.cs b/source/Test.Loader.LG/Binary/PN/TestPN.cs similarity index 90% rename from source/Test.Loader.LG/PN/TestPN.cs rename to source/Test.Loader.LG/Binary/PN/TestPN.cs index ce881dd..43a9e20 100644 --- a/source/Test.Loader.LG/PN/TestPN.cs +++ b/source/Test.Loader.LG/Binary/PN/TestPN.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestPN : TestBase diff --git a/source/Test.Loader.LG/PN/xxPN6500-ZB00001.TLL.in b/source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/PN/xxPN6500-ZB00001.TLL.in rename to source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.TLL.in diff --git a/source/Test.Loader.LG/PN/xxPN6500-ZB00001.TLL.out b/source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/PN/xxPN6500-ZB00001.TLL.out rename to source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.TLL.out diff --git a/source/Test.Loader.LG/PN/xxPN6500-ZB00001.csv.in b/source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.csv.in similarity index 100% rename from source/Test.Loader.LG/PN/xxPN6500-ZB00001.csv.in rename to source/Test.Loader.LG/Binary/PN/xxPN6500-ZB00001.csv.in diff --git a/source/Test.Loader.LG/PT/TestPT.cs b/source/Test.Loader.LG/Binary/PT/TestPT.cs similarity index 90% rename from source/Test.Loader.LG/PT/TestPT.cs rename to source/Test.Loader.LG/Binary/PT/TestPT.cs index b088721..92288bd 100644 --- a/source/Test.Loader.LG/PT/TestPT.cs +++ b/source/Test.Loader.LG/Binary/PT/TestPT.cs @@ -1,6 +1,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestPT : TestBase diff --git a/source/Test.Loader.LG/PT/xxPT353-ZA00001.TLL.in b/source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.TLL.in similarity index 100% rename from source/Test.Loader.LG/PT/xxPT353-ZA00001.TLL.in rename to source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.TLL.in diff --git a/source/Test.Loader.LG/PT/xxPT353-ZA00001.TLL.out b/source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.TLL.out similarity index 100% rename from source/Test.Loader.LG/PT/xxPT353-ZA00001.TLL.out rename to source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.TLL.out diff --git a/source/Test.Loader.LG/PT/xxPT353-ZA00001.csv.in b/source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.csv.in similarity index 100% rename from source/Test.Loader.LG/PT/xxPT353-ZA00001.csv.in rename to source/Test.Loader.LG/Binary/PT/xxPT353-ZA00001.csv.in diff --git a/source/Test.Loader.LG/TestBase.cs b/source/Test.Loader.LG/Binary/TestBase.cs similarity index 93% rename from source/Test.Loader.LG/TestBase.cs rename to source/Test.Loader.LG/Binary/TestBase.cs index b5c5ef6..1b263a5 100644 --- a/source/Test.Loader.LG/TestBase.cs +++ b/source/Test.Loader.LG/Binary/TestBase.cs @@ -7,9 +7,10 @@ using System.Text.RegularExpressions; using Microsoft.VisualStudio.TestTools.UnitTesting; using ChanSort.Api; using ChanSort.Loader.LG; +using ChanSort.Loader.LG.Binary; using Assert = NUnit.Framework.Assert; -namespace Test.Loader.LG +namespace Test.Loader.LG.Binary { [TestClass] public class TestBase @@ -21,14 +22,14 @@ namespace Test.Loader.LG { // copy required input and assertion files TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.in"); - TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".csv.in"); - TestUtils.DeploymentItem("Test.Loader.LG\\" + modelAndBaseName + ".TLL.out"); + TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".csv.in"); + TestUtils.DeploymentItem("Test.Loader.LG\\Binary\\" + modelAndBaseName + ".TLL.out"); var baseName = Path.GetFileNameWithoutExtension(modelAndBaseName); // load the TLL file - TllFileSerializerPlugin plugin = new TllFileSerializerPlugin(); + var plugin = new LgPlugin(); var serializer = (TllFileSerializer)plugin.CreateSerializer(baseName + ".TLL.in"); serializer.IsTesting = true; serializer.Load(); @@ -130,7 +131,7 @@ namespace Test.Loader.LG protected void GenerateTestFiles(string modelAndBaseName, bool moveChannels = true) { TestUtils.DeploymentItem("ChanSort.Loader.LG\\ChanSort.Loader.LG.ini"); - var testDataDir = TestUtils.GetSolutionBaseDir() + "\\Test.Loader.LG\\" + Path.GetDirectoryName(modelAndBaseName); + var testDataDir = TestUtils.GetSolutionBaseDir() + "\\Test.Loader.LG\\Binary\\" + Path.GetDirectoryName(modelAndBaseName); var basename = Path.GetFileNameWithoutExtension(modelAndBaseName); // copy .TLL.in diff --git a/source/Test.Loader.GlobalClone/TestFiles/GlobalClone00001.TLL b/source/Test.Loader.LG/GlobalClone/GlobalClone00001.TLL similarity index 100% rename from source/Test.Loader.GlobalClone/TestFiles/GlobalClone00001.TLL rename to source/Test.Loader.LG/GlobalClone/GlobalClone00001.TLL diff --git a/source/Test.Loader.GlobalClone/TestFiles/GlobalClone00002.TLL b/source/Test.Loader.LG/GlobalClone/GlobalClone00002.TLL similarity index 100% rename from source/Test.Loader.GlobalClone/TestFiles/GlobalClone00002.TLL rename to source/Test.Loader.LG/GlobalClone/GlobalClone00002.TLL diff --git a/source/Test.Loader.GlobalClone/TestFiles/GlobalClone00003.TLL b/source/Test.Loader.LG/GlobalClone/GlobalClone00003.TLL similarity index 100% rename from source/Test.Loader.GlobalClone/TestFiles/GlobalClone00003.TLL rename to source/Test.Loader.LG/GlobalClone/GlobalClone00003.TLL diff --git a/source/Test.Loader.GlobalClone/TestFiles/GlobalClone00201.TLL b/source/Test.Loader.LG/GlobalClone/GlobalClone00201.TLL similarity index 100% rename from source/Test.Loader.GlobalClone/TestFiles/GlobalClone00201.TLL rename to source/Test.Loader.LG/GlobalClone/GlobalClone00201.TLL diff --git a/source/Test.Loader.GlobalClone/TestFiles/GlobalClone200-inner.json b/source/Test.Loader.LG/GlobalClone/GlobalClone200-inner.json similarity index 100% rename from source/Test.Loader.GlobalClone/TestFiles/GlobalClone200-inner.json rename to source/Test.Loader.LG/GlobalClone/GlobalClone200-inner.json diff --git a/source/Test.Loader.GlobalClone/LgGlobalCloneTest.cs b/source/Test.Loader.LG/GlobalClone/LgGlobalCloneTest.cs similarity index 95% rename from source/Test.Loader.GlobalClone/LgGlobalCloneTest.cs rename to source/Test.Loader.LG/GlobalClone/LgGlobalCloneTest.cs index 4c8a899..1fabae1 100644 --- a/source/Test.Loader.GlobalClone/LgGlobalCloneTest.cs +++ b/source/Test.Loader.LG/GlobalClone/LgGlobalCloneTest.cs @@ -1,13 +1,11 @@ -using System; -using System.IO; +using System.IO; using System.Linq; -using System.Reflection; using System.Text; using ChanSort.Api; -using ChanSort.Loader.GlobalClone; +using ChanSort.Loader.LG; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace Test.Loader.GlobalClone +namespace Test.Loader.LG.GlobalClone { [TestClass] public class LgGlobalCloneTest @@ -41,7 +39,7 @@ namespace Test.Loader.GlobalClone private void ChannelsAddedToCorrectLists(string fileName, SignalSource signalSource, int expectedTv, int expectedRadio, int dataProgramSid, string dataProgramName) { var testFile = TestUtils.DeploymentItem("Test.Loader.GlobalClone\\TestFiles\\" + fileName); - var plugin = new GcSerializerPlugin(); + var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(testFile); ser.Load(); @@ -68,7 +66,7 @@ namespace Test.Loader.GlobalClone public void TestDeletingChannel() { var tempFile = TestUtils.DeploymentItem("Test.Loader.GlobalClone\\TestFiles\\GlobalClone00001.TLL"); - var plugin = new GcSerializerPlugin(); + var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; @@ -116,7 +114,7 @@ namespace Test.Loader.GlobalClone var tempFile = TestUtils.DeploymentItem("Test.Loader.GlobalClone\\TestFiles\\GlobalClone00201.TLL"); var orig = File.ReadAllText(tempFile, Encoding.UTF8); - var plugin = new GcSerializerPlugin(); + var plugin = new LgPlugin(); var ser = plugin.CreateSerializer(tempFile); ser.Load(); var data = ser.DataRoot; @@ -158,8 +156,5 @@ namespace Test.Loader.GlobalClone NUnit.Framework.Assert.AreEqual(orig, changed); // need NUnit.AreEqual to only show the actual difference and not 5MB + 5MB of data } #endregion - - - } } diff --git a/source/Test.Loader.LG/Test.Loader.LG.csproj b/source/Test.Loader.LG/Test.Loader.LG.csproj index 96b6b17..9e06998 100644 --- a/source/Test.Loader.LG/Test.Loader.LG.csproj +++ b/source/Test.Loader.LG/Test.Loader.LG.csproj @@ -1,5 +1,6 @@  + Debug AnyCPU @@ -15,6 +16,8 @@ 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + true @@ -55,9 +58,8 @@ - - False - ..\DLL\nunit.framework.dll + + ..\packages\NUnit.3.13.0\lib\net45\nunit.framework.dll @@ -70,33 +72,40 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + Always + + + + + + @@ -115,7 +124,14 @@ + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + 6 zSogRO`>9>3I`}FoFvh7;R42D9d6lWJlt}?s15#=lofQqo-X~;jC_TPf|9y3JeW@EBZ{y+pwm8g1!`hc-a-YyEq`euK! zz9+W`HhxBCo?&GmqaE1i`x#z_Qn$G8kaGW8O1=D7sz0@E|5KU%%^x?o|03bedjct8 z-@RBK@kMFcD`ip#PwQJ--G{dygH2?4O7_um(B93}0Uy)Au9)~3>^ut`4JB-N@uVN6T}GQ^o^mN7V(T-*?huub z!3cTh!Zj3__vd9}g2hIuTuWSKh@;^k&=5$`P(=4aO)o1$!Q&EW{SA--4>Zy~oyFf1 ztkTfA%%-AK*B|r%15_tOKL%LQggJT=y(kC^O#AA5F`k?5NUUqwbzRW_V+<`k4KU{a zXP@T_6mc-Zhm;#$phT^Z$4859}vNr{xC zq=0mNbN=XcdEejjeDC|MHEY2+XU?8IJAQl5%s#-AhXNA%?OpE-PDGyD4}Bx)#uBb! zs}4%gEt$*!k|Hn|dpSpLTX7+ekJxRxbbIN5uMQySiVz_cCE~T+Yta_L&stl@LkhElL8! zfM0xm3bP`Xx(eFwmeU`B38^#BuE{A1&r_u4aM7!^Os6tirht}n>7tqx%llwTxBk?$#o+T2LM`Pi%)f%ccoyqsEm--K&W# z#)-M-oEKxK)m*B9(@$QFfo+k-)t#bP;%B~1X-uLfGSv?%3KV|ZvK zSn#Vk=4pWCCb)gn2%K3_W)B0>hd;L2) zUAn}Os*s4pP_@#>xskTJxWe~%A}-XOn3H@uuFiECxk3JChDZwnMzrj~{eHPUh50kK zIyIO(LYa&QG)Q>}2j|~0{9od#%g^s)t1s;h=j;^e=1Pk{&@M)_*z;P&vN(^(UrA-w z5?B8s_HSE!Ck|qrx}EgL@a52+nKYQwC70ODWr)xxrAa z&hid=%}&Js^G*Kb-AwoYzwV|MPL!u^_D50Ebkvu-&@HgcxsOMpqtq*WbNHzLReqJ6 z*NM6EP$Yn3k{kgr`QOal_)kv*Yt$S$q zgfRS^bQ|GbZ1uY?RcZVnCcG=YZk5s*aAS`P_CjvNxf5!k_R2Tyx9<|2OzzqWTQ^an zKdKAepip+p=2VB)b0=Hk^EKW-R-rxzwE^5$`5L)kuj&FNg@G)K0n*KRT)PNwi(r9p z;N%U*ksB5m-2iE`jIhX&*lmd+#KAL5ZvYNwtdJv&xcOWG6(SC$Xx#qmrKo?!2U*42 zrYwzMwcNmeBo+&83Vt1^O)^7g6@2&B0Hz7h8;0verhIR3(DK~@3Hiwb!)$Vk8P*>E z#2~+Et-?~YJdG6)gI4Mlx7;88+gmc~QYi9}=B)uYCxZ1yaSzvpxI`7?z%W=L!Q0;V zjy5U+I>&Obn7q2wDLAakFY-?u6@QvPWZW1$|D=&~etjkHVCUa3dZS923yFnzJlaG) z#s>H_MFLzUWPe4os4mu$e?kLT7Qb$BWul=)1?zf^6+^t?YafQY+EG{#wGe8TS}iC` z3Se*rd(0q?z@a1{UAqYkmZ;Q*P&V1l82*F`Y8W&Ur~eWoUbbGjGy?2L{|To*HUg^h zG~`eAu{DaG(Mr6FaDjE0?@lJM(L9N4TF22r#z zinjYRET-aBBUG?M|0iR(aiEe75~P1pfsAo|!U`?cLu7y(zV#uAVd513mN7;cuvM0U z$?mab8_Dg0RM)9K4|8)70Rq|w>(E_*Je`$az(G7Xo?&gs*ef^O$xl6)>^mNXuw~cv zI?w7GC z11o?w0opZCR}edgwjHVrVn#AcJMcr%Ye;OP`Pdskrq=QU2^r7T-V2OcZk9}0-oe+- z2|$FbgnWZ2>-f?!Z@!zst6L@3$OWj#qs3N&nM0X>8DyOOfn>KV4O+Od+vy);1S5(D zmQvd(H7tH98xy2(yWJ|mRNnQ#Wx%?6OK%lLxY3t$@zbSb zT|wnhcj@Wh6eeVMarwq1s(cMCA(Lq_Yq`m0DF#5nMjA-&yMy%rkQrDe*hq882kk+y zx#)QgH#;3rppS$+8F;KqS)`zQ=+^&0tL(y`d@!nv!URsF2TYBPYfsuai042e-SeSZ zd8grYt>Ns1Hc$Pp%uW^__)l6CP&Q=xt0cxH!n=Ik^ft?I-|93XPyFc+9%nLY##>(~ zSAGTKHE>qS31W~y^apx^L|T3ET_pGjXB4%SA{A6TDAN5C92N(QaYBE`7-cdE=A*`p zdUrUgc7Z_6{>V=ZuY#laW{;(b<$zXUkK%1IGo#{Q%2(&j(u4D*<@;;QpRrU5s`WY8 zOcH|;5HT4K+=lj_qL3w`Fk8Z{^IlmF^_8T!l68`#zKzW?nhK$Oj7JCJ{qY(>n2e8t zhF45W$%I;dOfy+dcLb!rX)wo79hT#Tm}ece+`6Cr6q`5w0(VhvA;MNuK~uYXW8(Pl ztn0~XT-rKGUf+gcIYd*TLEyXc08g&?B7sK1#r%;T%GbxLw!oKsZq+wYI(@H4!d=EFB z>~7$%+&dE>8SRyp(atZ5&nR;@Xwd>o0Rn2mo4R+7h0k_6q34gbxl+*Ma__Hr8o}CR zgS835gntjhdp^%{;W#=PHO?Ai8=2NURDrwb!d;-dH-4~nf>dzHw;j3EI4KyPH@NaC z4FnQ%`=YQ{Fh!M`v?2xXeRyZde?z=JrHBzEifgR)(saa{jmR~0Yj>{@aQH-&U*m^ucC(>||?kHZIM$PRvK`tVh zZC{FB9YjUE>%VRV;QQAeUZHn6>B|UfjFBEvt*Yw0z%{{PErZFT$30i`6nc)FqPSF~ zZ)S(&p+dRRS^h+_yuSUodEc@IXE&w6HPu9WlV5D23a{@Sm!e?GNf5B|tYxZ6LJ$IgwHl39ae6UFNdS+RyZR`GkE zLb%OHu~>S8%zIvnp#5IYNC2i@8d1?b0?>|X-uuM7M~wze_`%pWwxJn%C^Tit$XM8# zLKClhK`~?~fcRm5{g57h2}v;@A)N}^|7~+mkZ4!^AuNG?C@eAD9QRU1S!7Gk1cjj=USd1EF=G)cMnD5LPmEUw=TdBvNYYnB2W*nyBCFU$ z6oZ!gxL`ek_n;rQA`KI6)-rGWGyU>O;!lQO7`jv^b{(M?if1^d9dDo&N?Seeza77D zC5_DGwcB2PQZ81ZwDa@woW*6$Kya_>{V%GT$jHaawckUhP0UyktY9CymU4nb6GGFz zn=T==0@jrO45Q5gRP1v0iTpk`ePvZQ)4;<$bv1$ZDxIvn{;9+77;F8!Y-qq) zc=THF(%vXUNqM8Yn&Mx*0V-tbV<$F7+h8Wtz za@B{Sq0s5YQ4q+7c|L4lALY^1jzI))V!%(zHBPb4S99jbJwg-!_YO0_iRGKA7c^WVBto}^HR0SJ0dSArkzIa2jU%WvK ztqY;NJvJE1)Ucx3F8p#!`2^o8NgE11u6s+?tn4TRorWqPTtBHz~ ziF?qsb~(agPeJWmCqEM+=es4z50~~! zzOiqVvx8G5&lgK@rHxGos3oVf%BlnTQzm9phUph?=F8bW zay)};i25weLgd;nMEy&n+85~j|>P-HxI7qohAZE3lS^0 z0wC?j5P-CTD_w}9dCS?I=hs8jLxJ6>2Lb1V5iMUPJCv7&A1~SLIUBE$aF$2%zy6#8r#(bfmP-6uA zvrnTb?(K_SWEB2<#WdG8%xtGF^`Mv}>Mch%-HD~bUQOyjDapX_`0$zmV+-tDtLc5h zGe7r^IpVb2K#p9YAb#W(g*gs5{+yG!Wxx{m-LOkbwwzZROexB;FtRC*D!3Oexl_rh z1Eo5YP$H=&EFxKaQ5m36Y(U&ffyCZSn_WH$-am38^2i;^eg8-Os5yaWN+ zC*IL2n~4^9op`GH_i?w;5+3aJL%&ogM6&Y|Wsk!MEq)Ksw&n8P*UK2%cbEYfMRm2q z`o9rxXk5gQC9#EsJRRu@-+XB->ET9@c-d3HBBUmVXO`Zh)2gZ^^6~Ovog-KRkHHeV z7Uak>+^kutAbhMhPNY$ZG}RuHdoa``biIJ7L)`JHoTE|eUyrE_x<0?J3MCf;X0(F% z0@Hs+0SBJ|M;0)pfU?(J8q3}HN5P2!*ziKKzhYCVK^4gMkg8!M`GYSgQ~*j(;(k1V zv|H|Yl6-?MEem!@lOhH-3VxT-5-v-2`oG))<^=lf7ho@Nfiq5So1~&|qZsT3S`+xz zoN^Db#kCoB#k6f44yu8v=EW{>K2`%g6(yZ!!UJ>%k_Zuq?RZi`5eTxHW*(Z?^MR z*cFdmsVWp)kM*GY=;uiB<6Ns?2Jb+G%YdrzW1HfBnaoWCGx{U`b4Nx_5{Uj>`mtRf zXji*5ehFF=G>7M_JRQ-SFcV94vgRJth0f?fT3r`A$5}FTM8MKvVw?-yIjZY6qKLth z!nGBA79ht?ukHB^!LW6nRNsh?lsp`IweBnlZJW`j=j*hd80do|8zYt-6MTq>cp!cg z|5ovQ=d3f5U64RWEDJKSoaqCF%Cghnhw;dsLK;(hAU+a_M__0&Yo0?;G6B*Qq~Q)N zb%D4E)H=_(j&;Nd`&TxH(f-j7J&193==hxc4kPqtk~{A|r~*BQ4!zse^Rnk;H+)$i zDnt*Qm?1tAcH8*#NPq4G`ba0RV2QWWXYTnA7mjcXBerhYf)i?*oi75waYs30ckc^l zHdT|sHVLMH#3P-6NC+u>*oSW+9eY!=m@$-c)ShlAyx?5D$m{=M9x89JVU7&BHDU?y z{|v!K(u8=&(X4$wLfHRVNYHO7A&o!M5$w;vF!Y4L_x?m0iZskxZ?usefT^kEN~)Y!nr5^zl>Ap*Tp?|)`;dfh$%u8 z{0`%_9EV*m3<<#QM6ZFE)?@M>=~`Gs+D_6vCZDDa{}^LBU<2b%bVCA<1q?jG6(IA? z7yrrE_4*V^9ME32*~~jnv5*YGQ~~^evV^@Toq$dQdFYUH>zOx*Xuz|77LoD5%|voQ zN4m`SPk0+JWjD&^rZqg5P1o=>m)drU=zj(<0k0vIst=$MDI#(>BLA=4`>SaScfd>_ z12P1g=zk+mo75radNC3iPT$8joy#7$(tkn_jGOhLRB(&|-wpT${^2+3x9ER|V|$7S zKTnE(!ZA(x*)Q1qzf^{ry6JR5m+NT%r2^^j<5W-T!vp-@ZHhm+$tTJ^s<< z0@7U0`OW)vs+1Lvd1ydEtPM8!Xb4CL9tF7qGa;w2merR|f=DVrwg_X=ABRPnE-+$x zD;V@+yIiPX*m1Ycs1Kdl$ZC6FPtogrQM*9Mi{&c$Xz&n#^?xH3a8ht8HrWNrq4UrF zudo54flHf?hLMSS&249h5E2z$k3vqtety$!g8+t=(17;LJ6eO6#)&RfLeqGO(5G~#M6NqQLvik zXE`6K9Qe$!H`09#jYr&M$*fyoR0AR9Ust_>biVUM^tahVe??pf0wigXc27H#?hJv9 z3YjOUfZPq~k!)re&XB;^4(oqG4(v)LbQbLNT5v4(Lh0nL-fU4*?(xZw3@4Ej zmXs6g)WPnoc(>qO!yTvQ98y2!@;u zWbKmw7jVo9ou9Kt5LpbZ@a5@&{YA{MEbvK2Uy91 z)>iLc!3?@itE|`ThZ%J3&)Gs*N{S}n;trj86;9XQjhW%9JN>10VG{jKXvTBnX$%U7~DsZfAHS%GS`5_>agNqEVmHDjsagIMo2Hx~n7p)woQZ0XHG!Ilk3%pZMH6{qLbmjv%=%Qn^RtcY zlUehRg=y1hFVGAyZ&2UhxRFF5#7;C~Wx-%GI?Rc%68xyNLDc+`Pd7G<_1noQFJmru z6H(Z@oPmKnBJ@&$FPZg$v9vgvc1Z@`3^N!{$&{44h(UW<;X~#`g>kD&Lu;I@>GR$V zRjoZM$?$xkYk~Psp*k;Bz>7)jKs5%-XcWTkqdK^>AY;@~z1yar=*{*<-kVMHj^YPg zu=hh}&XIWy8`Id9Bjd7-yZ$HIv}fl~?7Z;PR!g*ndJFiraghq{efg7$}6l?E8v1I$Pc8S=kB&;5OwZXIrxQDnk} zRm8y3iX7XTpAb7AvqDXtDPJ2*GP(Pfxd9|!@kJQYH|@~|$$jhak7Nezo<(P-e8II< z@8jZuP%sc15G7mNLCO$HT*BBC9`9`qT!c46{>S0KOA>T%X0=>sO*jOAUkO!86WwdND!UiNGz(s`S(T!_ni<*fDJUH**u zWx|4Od!Ef8RUZuq>SEsR_U2l-w@Ki4Z-#*H&FmsqG>a~4V(Xp^sS)$%+z0S&BX`&T2oU z^|WcXE)9QBnPB(Aw#ieq$W5zHh{ZgKg@7&Nb=;DWj=#QB-hhIb8yAwY~U!t)neQKktdjJ%w;Uq((fk4wJ$#{CUn+C22n7_TMiz?wi zEm>QUkZOz~L))~)LwKu$-9Q3^j<}Eh%aW;724wc+dhknn#73j!pEQ1186=)+7HF(3 z&I;CR6t8vzjiMkvye)pL3F`%J7wHe_F4f}zd6OA1<&sll0XfWW2%$xHdf$dbXrq_C zO|TY#^kyVI6mj5Angnp`h7mc}Ru!8D$3{H&W74OWJ6ON`AH_@J)~a1S$}TG0WHLD|}ZO?bS4lbgH=2s;Ro zYQT)^(tqCDCX8w@rowL!bZ4J2pJI?!dAFpK5}GV@532J7~0o zGxnGoz$nwzKWu>NBMew|NbSYcDwpuzJVot7ptEY;Vc@7GGZ?e?1{`N-1#jAbQ!V)S z^9e9;1em<7H4HCb8bRa@ipqn}#d_O##n9psebC}w`4ByG+vCh_<+IJ~auxQ#iaFd74fsgjxg4%DB4J!?@My>X}{Oo5-?G2b?h~TeOre z#B+AdJA)?qDbbhw6rjz|1<3?(>xgr^ly7H*Y1E(G z=g6xgl6h%8)lv)a5qmUh#Nih7;xLNt>NCxgvL zqMptt)5Ba0cxPKl&Uva1ea<^2MzLvr%kHl>GM+=xh5MNg??_?Q4b^;f-lI*hAEdB)&l+9Ktuvz;};#T8Y;1~Kp z>|?4NqI~T13k1#qAzq0E*V-KtaRVg3`AWtohKeE*?7n5t6WC(tK5qXUk~;9!q{f%s zB39ygJ#v_P@Gw6U8`wQE`WRR;iBoN9s&OL$SwIz+1hB#k{x=S0wXu91@yv%iQN>Fm zKX82&MzXyJw|{bAR`+}| zp5t_ALEcnvH*o>cY{^bWM_})ynlesPp(&{AKG_+bO=_z&U2xd}T0@dhoMpGs{eGJ-i zb`qdh1=SIIE<7O)MLzaRi);?5`dKX4oVr=QbPV#TU4)&f^7x%?`}J18r=W8!6=`pB zui>``m`!kFSBaBt0@%le9KZ+lk6nr075F6PwBEukuP_+nD*onVN6nywp1Gn%Y((~r=&Lxt zb&&W0L_S4`3W6+1MUw0_;he{{(SdQUkT z#Ri_1`?BTwz->&`wv)$3!JPF_y+W&r9PO*9q6#tly@>D&dxv{Q<1@k(MhZj1Od7)K z33j0*X=WI?i`2O&%OSo)UE%5w%1&%dPayaFMg2$nU#A?HGnH#A-5%`|dFc1O{Sjw> zYqIiJvGV#u@$ITXRSr^7WOEwF05K*mCPYs4Ji%({Gg;i~%P?JkmO$qY z8>U6TYJQ5mRt7~$R8OGyrQgdJS{e<?Li`W8q?AYJ*(8#<+{ zmndP+l}=f*#JKaV>#MqqId%`Y5nbvG>;lWezCwSq{|zVp`Vz!^gZnvVwW`wy_&XH| zRc#a39L5SXYSPsO27e;m_H_WDeqSdA9+PbFb-+LDdg1&~X#R_OqJ=`&C)eiJt!esM zxg?>^&9MQVkBFbU6D^haZMDg9g*&6Y&(j4U{-s+uU=`_CCBbx%`!0MhUEQryzhl9r zlt8!Qx)pGSq^&*htwUGw2GagBvX1M(2M_kEHF-z`$~w+6`F?IuJQt)Mv3!V6+7_*t z+tsyHPKw?H0s#DT{W|AAwGu|T&-k&{;YUhKV7f76q5_o2UO-F`kkcl^&yX-1d0O0g zc$P@TIQHVl2W?-jPVi`XY1aObUKs%CmxsC`e!^U&e)eAWtcjKyu#OMZnvwA+ixN2r zks;y|$>SD=r4lmD8sip^976y>mKx_=pZ6Uqaze(T>MY8xX;(Z*H|qeG=AlBbf?}9h z{}8sz)u$oo&H+w(pA!v-U#55dCj5c^`{%y@9*LjEMIt^Q8yJYHao#_Fs1xDSDS#Sl-?>PBowcYJ{9g(@iCE@W5qGRt zlpzxyWzaGNI?bLB(1E8t{Mi9pe**9=kUohDZl)>|R^#@c2TYFrvMKT&4S;y%9eCo8 z=naOciSC56@mGI({4@cjF0z;fVV@5kmI)M?iWHO7*3Cw1?rS z1Ne91@nupJNbOQ=r)BBkYdOILB3e>y-i7v`f9%S-p z7Jxw0&B@ru$3S{yUI3RQGLhI*GXi2t#XAwuMS7QVA^OBP4!=V-j_WBCCNgQLOK1hy zT88V)`L=!hObkw0hPdUNK3pwW?=y)e3BL{%xUGdG?{>Aj;^~5{$`U=eK>Bt|);*1y z)pV-r64SR^N_Sjf7H7g=ly^B{=*AYLoTtG@>|lK~MEyJIt^Yge-KhC1>8(C0F!}W_ zUedq%o_gJ3EQsGB$onHH7Zm=DLJOwvIt9lVt$9xnT-i;?l64KI7>u8Jn3Mh=2XH$o zXl~5|(4Ub@hFwi5?j_YzO!q94j=T1RNoO!gVRAWpz#vu+dpRHE%>#Jib#Uzcz~IJU zaB4@;Y zz~t|^Pqi^VN+PQUL51uUqyj!e13%5y;8e(y7N)CvM~4z1K5(TdO5jRc^4RgOi2UvQ z)MYH;Y&Xu0VzRk4y*2GjdPL-Ow~6Q>3q+2t+eBA)Z+0|FyXI4)hiH1dInZ|rmq#D- zC+_E_-xg5{D=)C^=<{Zx6h`$pUm!|Re_^o{%+$D&FP2L@_>;0PN?!u^ryC30zZSC$ zY zfR)Ev`HlraCjBLrl39>SyzSEVLD0RM;YrER>inT=i=pKo8ZhDw(!0-9PtG>STUvVF zZNJ$L+-rDy=C-+fd^plIb+*5re5FC`^SXQZb|D9JvetWcw6NT@dDiv(aN`j#@1ryD zZ>~?A>`u2a8my|1Xwsmn>L=9)+t9buWp^jL?G278PyRD|J5Q&Bh7hbuKC7zg`r7@I zh2w>-JR&vw>I7j!zC#oIjJa$4k8uPyu}d1NHMpigXt}UmfIehaxRsES)pquCksv|hVDo67AGFJ{8xt~a{azQXGN}K$#U-1!dV}( zhSs;^<9RE`v#v0GpIxwfw$F3L&2K&h0o_(jY$C0W#p?6#oeI|8qwncjL z?AtxJuiw@yj@C|Q@?&amIab7rvbVM@@4CzG9`-WdEDM=9TrsWoDU@oNdX&-U$-z>8 zx#Bp{KV!rHK~K5+p2;(3&x5Ij{obnwJPK!)liY@fk9K;`*li2e@7f1uEfmYJ<)=IjNjznK<;?ncw`mw^k`y$eT<< zxP|X%U;NP4)p>6vaOV_Jo&DSkx>}R{Wqj=&DcxDU%U6ZoHx8vk90wz|Z)%#Gcji^S z9F9z&QIV6H<7-rBS_gRckGAw*>PJASHj@DrvZ_M+?jaXB^g9EG3>}}9k9*a;48N(e z%aQw|m|!DQkYI&{EU`>f@%u{GD;Ca^Y0n)$f71OrHKrfOs*Iaz%l_QGdeD0J$eRzf zS{|{(^}?85L^sw-PS_J#;@F+MR%L}E>ZsJLS%TI|nv1n>?%qghdlDUN!*KCPoxA2q z)yAU!9=Nss%TYV%)B2_(BeI90Kt-&~>ZAVEYIo!{4du`R;(GCYkBMl_wia3pi`Qd`%4|Ln z(DF?Q9DK=bd2arlK5}sJg2_|OeD;Rw+>9L`nS`?;?8P3X*E&U)FAGeprMA}`#q?sV zJWd@{#JXpH5Zi%8qkWW@V1)ELndv0C70Eu!odKeW8NcM}pRsa^KG-Eb1Kh_PaB zczZK)tvq}Jt8=eJOZRNw%`9S#D8JYJ_|^tq<0$1N+UjJZqe%OPJVfhdg#aTq&Wa&P z0j0uQdm+Q4X+1^W@7LZgirODg%l+)$c}H6K?3<|SZv2oylSf@?#u=T;IREZdrn4@~ zlgC_}Dmf$kr@Zsf{yi^(y!`5t*&X`GD@i2{*l+U(cm3|!WF$C4ou}8I-ZeUt`GVlc zcJ+X-D)bsWQ`_AS!HA8cZri`;_ExC&^i|j6hjRAzOhYjydhO0Ej1@wEdKVMi6mbx3 zJBg1uGAXYic!NjTnJdBn7%&2keNL%YjJE02mTCk1%O@X+W zGm~=5v-CDEu^XGzXKzeNd-sy_5S#AQv@dSd&q8eTFg2o^B3lh}`}*<+`iNX`j1Qfl zsaWU6&*hz!gZFoYyvAScx1YJSooPLZBU0GL5I$^|S|%-aJ}%5S=Exn|d9zCUBK?H= z%nFtx8I-+EbnP%~Kjy4_`0KJoY}Cnx$WPA4m4EtP1tarzC>-cpJ*=s4E2S=^ormgp z`@s#fhc(q^vHN1sjggIg+xsv#yR;5xXxD@OT<*UMir8wH+?)#EYRF4!+W^`>(C6V2 z(Kk;yE-XDAc|AsSEqHBu-?lB^!8?O+7OIk2Yw(+GpoZu9b!wlMxMN4~bX?^$eu&u% z{1J4IQ{_`$zSH=4nO?n}c1yDJ9+2Sa$nP#C{Cc8W4NaR3_W(C5`)<2fFXj>JCn9 zMLk#(;5x#;cX8_cVeU#{Qr^HRQqJsuMaJ5I;H1rt6K|b$ExR6nS#lHwiYXW1 z+n$06=I)CtiK4>N;jqiCGpOQC*f&4cu7emBN0biqONQfe)LUjx?w>x&SLvR82=2^I z8DF0AmihW;%p==lBBUaP;R()Koy$reybNfYo|1rPl{4NzVwq0aZly7&SV(r0fbb9_ zwp&Wqf^}#2k-d9o_tZPuRx@)YzQK65MGyYP4Kp}UzzXJ`ldBYda4%1DWq7p8o|x?bhgc81w` zR-)CyTf^Zk^Ih=IW1dpaTCdxuYY?UFAlW?R_h9YN(sYfSb`H{wW#~CP6N9IF?v zuJj&GDVMKq9yU?hU7y_tpMNFV~juojxh0wLAF6UL}^i|*s^Ka&XhINNz%_7cZ#*kV#fHlN*!Uv-cFuG!| zRj>BbG@}N36WI6O%wWMb`D5|Cck8K-%y&p|R}k*Ky>ApdNK(IGAuaXWe@qpynDN#2Z`hO(0=L`S_T59@lY8r0;E z`r)K6th}aJ%UW~?!#G$z0?Yi?Bhvk*kK{vcgW0$;^TXcbq!Xhtw%pqTs5wHnQc~aE zF|Jz1anir5EUWZ0N6eni`+z*xqHxv*g?Uqc!_}alc*RZiLsAM(mD;v~o5zKYz-wan zQZz8IFj%*Dm&{UTJ<5nSX~V{Dk$Xc5)qZ<9-D+4WSYpB4yShP|B)w^}8aKKYd9@~! z-5M`?D|~Ho*N<+*zAl}>Ou;97WtdKKw!Vl9Q{o%mil^!a8h&(?cp1SDo>AK}_rkeN zx7ZC{bGhMBV9|YTS_p`uA9WIAN)KekB)rCCKf%btw>V0RVt&2q`3NBe9)ANhgd%m_ z|BaJak?i73v=5qWuui39`Gb=$gm*(?p10ayv4^0iydZrtj@om}?UvcJchvQfH3RAL z@NV!Zq8mRr+s_88J=P`2xK-?hNDzLXbpgRkF}sd|P+ww4F%eChME)JwvX9@tCjy3+ z4W7w%tmA(VxEB4{gq4d=;tT3Nlun-U*^oGVpz19{U;=t$g3R|!UiWL7t2)C`%?~8v zau=_wJ(F!aMKNwr$9hsk@amH6H`dJ%>2db$4nsz|E=R%9y_+v(1zir%0+Y}ilb#z) zW8H`ra1rU4VMP7O7$roxPt~4IsHfOPcMJ9QEjl%qmTaXolFGJ}0Q|VO8$^(|WaM0b zs9jO_8j+3&&h1OtejRI(-I9iA_ur9Ld9mgs)@Nz^49HdzQbk_R`s6)Jo-^UpCUEUm z#`eo^jVer11>;SGC#ZE>SKBT;HI_s95|sXR!O>?r=Ch<9+WjojD$79g@C7l>rsldI zSmDYz-Xf8_aj!3kzYK0`M<-Neg6t>ocY6r<$@Y4Be3((iZVlky^b^mMTb#muqIc2z z7Uy!Yqu3GIMCDDaymq{SuabEPBgI|s;XGkuL1X;+<4TMaghbv=ND1_+nBYZZDts

S0nzj(Ha_7 z4Jr7tN7#};?9Kpf?GPTJ3l55Dq}q6>3(59?Yj+*hs1)@9hWF);)G(#%>lxc0+$run zb3_r*qm0HM@>Z7!3T2c2$9R?s4rik_%X^Fw;G>C}NicH>`bM%3l7iH+oMcz|u66 zeCy8S0Xk>y{ev6c`jGKAqfFXs^s|X7#C$TD?L&3%c~NNVC>y!$IchhhGPPc~qqa`$ zTyA_woucGcIz+{K35AW`kC|%$gVO@bwju$|^n$mcgjuh=e|M;}srYot>+2&YO$8q$ zpR@{AUVA#N5V;~Sx_J}D`tf3-E-@$JGp}UyU!kFA-K9Y$ll#69n)wB9qjbVdC5eDm zK}m5!u?!(x6i!tvu2vtaFz0ZIX|V*DAk}=JF_1pB)@u*CL$r2AK|d~x#=&;J(W~3` zVh`HwCkPj0Q134c`-}_XcvDn~jWaf-xh(Et5$55bBmn!XrR=ILrokFPNBJy6t-u~= zGAS5>W_`gMGD{~kWyFnfH4}Os`swYN4vMezP2EtX$FCQosVpv`NYOjq_Pp3tn{gw& z0>?W&Qeadh$O*%BF&{nr1C#w4k&^|lqTKW-NMe4tj4_6GlIA6a*mCMc)(pj8lCe$hQ&FUd$&|aOBtV?j=C~j(69wW?^d@lL|Ig z#p=!Fr@Zf!IOEC2sYfb=T?kdak{-S0nh5-#{JoQzX;+d zpMC?A_~{XK6e@r3)dSm?Qs>Cp&qw0XCAEOpGeX+Os2}B=^x%f*qVMfDO?lgKsy(GY zkni7{#Se&)EO}M?%;x%$=9QO9gr>&J|&+j_*7!_VfAmSoA|9x>3&c;Lhwa z$}R?hX?=B!<=3Wd*{w?)FIp+O75A`Vv-600XLr5P+BiWy!ZlK1`JBU_)K^{;56wRK zhbe=*oOC&rWb^=ewq?UxgHTE%aa3lbU$n|jR`Eu@vkTU#Ls+Nno1j2U;2ru7{snQ-~BngZD#!npH8flYzx01F; zMNQ`B-bdshfJ+;_F!Q%_)H3w$hE=e)z8h20mg6}&X9ByFf`zmwkB9#CH@sd(F5YLS zAFdkSH7d6_P{S&kOoW6wh3)wiBUvISa|zP21iU>LIt1fy!nfWCEO`PegU2Ck3-T_F z^03TMYPE1HQ)f4qpyVdGt>qN^+Y;0`RvJgmZBHP9dF4`GLhSVWE~>JF0)|nTUZ); z*|u44#MVY-?}&1>{p!(Y2_e8~)63bG4+1FGHN_jOpJs1tpyTqF`sbqYO{U#(*Obq$ zR)P-qe6Kpw_ho_(H*y?zo7&=n zqjs007&gA3QA9pm^A@>v2_H>Wj%N*;o-d<{pzpY2j@9ffrg`EYeozXg8Aa+VpoZz< zVMeEE-%#JP$>)oeCh%$#BZ^@U?;BObB@%P`+wZ*CU$R!|&n&pSeIa&r4Eymi%E0G2 zub?-xcGveQ!&tw*s=Fl<_pR5^ta0J^?PX7E>APMa)0%y<7d?7TqV#DdL}>nPZL>CV z7Fg%&hlt30Nzlq(%=K}Mr4FhMF7JfG(Ec!!(iL12NQbasF9!)Ag;Nk@wI&uz{-lj$PRHt zv{2k#dm+V02t)@*;a_VBbH!ya6W_ixiCk%C6h427eE2tECtaeydGfTqPQ&PmZ}FSq zBQcZ+`s~0;-XI`?3pQFc_whQS+H8>=4-wkzG^H5ng}JzGjR~E)Jdymf>aU((g*G^7M)m?%x)$<7H=W-o z5oJx$R&X3-abj%Qx${{kD?)A>h3msLKa@BRtEQe1Wr?yrDYy)8F!F!yIYa%Qc0_~Y z75q?%O0}}?;^JId&aK{PLqT~M{koV1qGh$eF+N)A8dcl;dL~5nbGN-|`z1TRlxjh< z%*@jt6~1--@h!wGCVX6$F?3IlzZ5F< z++5x3ea}ktU6Gif*lWI9%*@Pdf4SlG5r>&(fimxB&?$NGWLsWd(_MehcU5O#q0rtinGTvKQ3&V5QGfspPJ+4i9G z>1@c9;P!Ht=KgZmLGBw1`;_s6E=c|$mxH5UX<;$M5PZ(AJLI>Z#3EamHEX(-@jBD` z^|Q4+&GF5Lnjh%hL>VDwJgc#i<80P%5ua|)DXANZzk22g9`Zf7*R_?E^OO!RB)RjW zD>H6aGGf=yg+;dIXPmZdr2eNkiwctRH0|nG|0#{AEO5G!qTwTA; zETLk$^>nL$E+o3fa%-n!CA#otvLa3Lw?vOQ8etW2l5EZ~Wm4xy(eL==d_Px}E54e- zPm{2oYN)+Pi)lgrqIoMvc-Gwzs@E_3Tpm3+V45Q+?sd@O&{3JWWKYm0w6#~6oUVBq z&sInK>vQ?XRHL={5GsEU`G$B*VX~(r;v`=bRMXhV?Aduemr|Xgs#$t%RoREmUU`I; zA1u!~jw~yit!>h8;v5}mjSkx_Oit~-dEeSlInQ2qnb1+_7by{1Zy;z;|4|ar)Hm7& zI-IA_)lHA-0m>gnSdT+F8!9eZlJ$aEoESJ3X8f`nJRAF*}0~*8Y0cMMg z8NEJPDz-uHxhTcc#X0%gkdM;SLrC-hTW6YScT`DnJ*k#H!G&!pf_CRqZ@!RT(8XTD zS&j!elZ1p38(|`(t4_IfwEk|t#M-_`4OvjWxH>ICYN~5DtMg^eQ`6~J>4!SnPCSP# z==My{UN+sOebsXYeUbT@4*pG4jyu+w8xH-sGR$TFM!|)>Uq~ zu{e9A^8Qekm!NgyW}rAbBsYayz8oeZsY0F0c8n^^Jw>oP7H_0dEc$dEdWr_Qd}$H&Q0he4C$5e}=jiZbXY zp1cbUxJL6neTwjY@+Zjc)Z*qd<)JI)fJg2g69}k*lrM9@A+_TS_ColQx z!-vnd%H=$BjVx_=?$Jv!DCwukK~+fM1b%>fid^ZX?!!axWSJk0{F~}^S4maEqc5h9 zG8^!x&{CrgU46BPV5X7by{|NW)baFJDrGCGelRnh0Be5^4dIgVo`kHN8);@@X{Dn~ zS(mTJdpChl$IOD6XpeDgL#k<88$tG%6(cojopKwhQxPwO@Y~gEq!3ZYP&zMPJ#7nG zD0)OcJT3{S4wW| zOya(~{m5l@!6LQ3s<(OAmrKzrNPdL`$8UL#F}k;SfOhuu^y1kOdD`(Di{loiS2G8r zZR+&H7xJPHKTI|V9aKTzr$iGye1b>G3kMgYE8on~o)~>;X~OyO?N+_>5$w`Cc$sTsp_1UfHZf7(-qK0GErvdK@-=KcMP4`P`2AH3;o`MI$=q4D z7C*vAjhEJI=jfYE-4y-R(#EcMPUjR5sl8*l?7T(9r`)iZwWYK_!CD|^S$2s~viKtT zqI9IKlUxH_lPzM4z_4**v{sJ~pUbqE>w zIvlhQ1fkJi;%X8b7cA!F?a3ESdcCIOP+d*pLI}OJNpB}fgp<>(OOv)QX@v$L$chqn z{@|n$n7Ms*%XSPQNR=XJzdlP1oX-f1I}U^@40IXLFmSi|I>HK>J#9`o8h=qSC?>{J z^u}+b;PWwVIq-VhoP!%!qAGfP(X|b}ZZ$HWFpGXNc_NuKle|VZa07L$LjL^e_?^;FiV-NuBkQ9=#g)f^*S07-I9G)!_K9Xmvg5p(X@& z=jvc#BD!+XDyg)bto0AL4uARDn|!J!kNKY;(JNOnS6aHD(37ff`;4vbTd)lyv#w)9eLR&VMSZ)DcGvpCIu` z@s}R;k60jj4B>}Vo7fS~2R_ML?lZ&0@UW~+bQ7ayJf&bV-Cxlg<#_T}N40@Ni2S5`DRi@f%{h{F;?Mcp%_5 z`|{)+h?1ZdL__@ND}RWEBp#9sDYPPMEq$m5kOo1#jyQsr;djHnZ!2x#TXQg*$M-ap zIpcTbaL!0t!76kepWduY=KuxcJhE}@b$?XOdRJH zTFxUud_#lF&^P&LK;OjBy6Nbt*o`-Jipl4?-4&lU+IWn~vwyVHO$Tz~YgzlON@(9T z`(4i31%4O%zJAKDj0OGJAQGLKQ}wOq@&Si5In^k*P;+B={Wm48BBWP zd$}Ydwq@+ympVO!MtpnF_b$zrDWa%MbC~!|Wl?ebRZF~cYt=+8`%=uf9&HYuyAyW268z4U)n*OYHZCW5R}Ze~-Q4-?y!hSo z3RYZtul`tF{N8zW4LUIV^Xz%N>kpxc>f?`Z+dn$6Uw`3G?B4S#)%3mDVcA^S+Lnew zqi5Rd6Z`%v&h@5rO(KVjhJ zzt`e?_dJa2IZO+&Bexm57LRW!ya{sF|%f; z6@+)F=<3?Fa`F7brll!21GK1SI}|zonH8D(G3^Kb>i`B7yC1#*mr3`W8)EVv4j5gY zxGinNu&RE|2kooLW7GWP7dU!2fG2O7LE~>IWq&4rDBGX>mW(fuSDebair};l%8}bW zF({yt89%~>cKiVUVUpmV!I=K4e&kKv4I)Uof-cb7Y$tnrk%kz0`P_0Fdgv@{McTa2 zooWM9UX=o^x-2dfI&(4h(ykGc6Io;vTjluf_|5iEm13?eWO`7S)$-_lwWO}X8q@5m z4}U8FjO%;rJ~QsWY1SCO<9tT%rF|R)+RRQ~f^W<|#GPHVV1>%XxKREqeUM_;GW4g^ zjo41TkRT_%d-LA~z5ai4VN&?RR#HGg+#DQ#S`Bh7_&R@CPGJ(0?^gb{3A>52xr-#U zh7#3b$9Mby>U$wcyhk{L$(POFSCecYD1X-rH=zHVO9m>Swr?sx1Ol~7M3V*!9?wRu zjj54}LW%HHWlShkc2q%&=1EHnrxmv_`fPU>4Ao_afT=Y#g?I;4uU(z_hjRp`I8eJ8C(0n#bWKypx*yf zXWT#O?RM=2;ovzJ4R4xh8h=X{I{A~mGq6mwQcuC4VDEx<^dq2vfd6qc&)12AF}?MellOkgKUj=z$^y19A#Y-LKt@!+qQ3Rp2c%;$Chi;0i#TuK8N-khU> z2IDXQ*~BgT5EOdTs{fplB%WR!E%>OR%yQ;c*MKZ$$$-C=8`KiVlz%vYh1X^NFNtJI z(W@nO6tmPag#ZH-Z$~ECaBf$IaMLDSqX7YRFoeXkg{<4Gv;`;6!||G&I}M=%3=Yv!`VmCzci@1Y7`y zIGEDUCfpT%#h`hdVN4)HC*L96@yvBi+LP)*=cFgr2hcKa7XP?&t}0uCDzsdK7dZ0JA9uaErM+!a;!5qyv?gu>sK-X?Yjf3!U*B#U8Og z+cT|jV-wQiI)5=ilmCqi{t?!<5&lbsyCuz6#U*`=+LR$&p?^JtBrjQPr#4j`dv4mKR`XZT zv=1g-k(ui@1%KrIF%V*OJz>M5=yM74M0-ZF7bmV^U z@gkEa?4p7S3+gSv17Y`YF4ZQiL|%M_ee_WY&pUb>kYeAr)wF1Lokxe;y~0TB&@Hsx z8g$aa*nc;D&71l#*EtHj77Sg=yI%NLML2)9RKP9N0&MCsxA9yqXtM3QWm+6g&m=dK zbXc@Q&r^C^r)0@-)8~qY+QMPU{RQbE$WGau!{{xbglID~KhT32E)O|LSzeje6k*+w zFyRB<5$O(zPzkG#$e3@RUgFVwyMQ%on3I#+5r0ukklMbvGH^(!#Ub}f!~kB=Imtt$ z6%s=IMLcD|ucdfY;D{3-M{q*MO1(&R|Q$QB^Fth9;bBJ@J?j+m=;qXO=o z)W>7R^X&p`{Vj5Na_=Q-)3YPi;P2qq%Wy^4BZw@vbiw2P7V1XGWW2j|?9#J9)UsHZ zxqoD+OJq)RG~};l8KYvf+Qq5J-7L0jk1Uv=!%&mpehR zN04%oWaK8BCpILBxs6{v<>l7A=J5ZPnVAqGgGtW!3#DO6IrIW59t9N;C$ z!ivFvd8kZ?J!r@sR!8(eI51KWy0Bcgd!YthV}QY6C-k7fZs=B!heKZ*H=vONSdSHe z78K@Sk)+-GlyTDJK30K&Y9w~wc&XBJE&v!jcHY2o0V@^o+`e5+>;h zcK3?MK=0s(`7wJL&Y^$FV@h+XAb)#}yU=sE9GN%@4Gu#lXhC+k0=j1k*dQGRFV`W! z+{S#v9Th1#&Ut{5oExn|6XBE4|(nHYT2jCDp^$fy`(0NxtPgZ*af-JzE`rd&d1s?L6 z(36yh&7RZ7mKQ|*{h+0D7*(Ulu_VX$U|!1&1?{>ily5^bIe)(Ik%X%@fdzxc(wcgl zYq&wO{B#9X5bXx7(FZgf3ML|6Y@~5GzB^EurCrtB)Y18%J;Yi!d#QI2W@TAl^Jvx( zsAky%J_g{b(vZsoByu^BR%HEw9bwkhXGVcy+@c9%%Ro0{{}UcDtX46LUUt`234TC` z2msw^@ueuo+kY1?t_y?B6ev`W9hXZ{jE?e2oFV9h+DrvJwQ+8%2j~ZI*6e^J9xu@8 zW0Y~>Xqb+j?-);yT=k@6e|g7vN-Yg}L zbYe!22WCiL6+xp)&C4mLu0j3FFztvZO9u0Fz7Hn}Y=3RjJ`_3;{6DSdBQ!g;Wg*j* z!zKWqkI{#S=tHhJ2V@bj3jx)?Iy`=e5D(U-NB=Sh7I=Szx~ORoKx0A@Nq;c-_!#p6 zJzoie2MohLEZb(dL4iN;tjCz~{;pP$doRPl3O%$28W=)3E>=7#!ikG z>d>HX0vJ^Tn0>fWI_h~scvYSkc0e^oMP+=dq~!tOPia{B=t+;C?G$s+mMve*Jfz$Vmw(1#b53@kv6%$RM_LvkdY|9B7sigytw0|s0U9K5R)q=2bk z$#w5LKDM=e^DK0m%`xNGOFA9BCqH1+haqkrQ3D^2!lC>C2PHTk;(uVtxU<2>WoPQF zT7MqURV$B&z^sQn*fKEXvNX4A!DV&Hy82J#OB%rud!0n7abQCmGHu49K zDWhWHyy-LuuO#tq2rMjOHX+UpaMY41A=HS$K^5t6{ALHeI`K?ZO9p1?hGc^Xup0w{ zi*OLh5DxH%m37oy3HJkp<>7U38s1kT9mGZ7 zS{=OWVT)DFmoWTI;@lkcf+0W>qsPDq5%AUUQ*c(d;KLk4;daHcgbo+cYhjNM894z= zd0(@w)c|-gYlcus8w_sP9ui<#9N7YrCxWw(HjkiEa~;xug%~XGx`T8=#GXOdpMUO~ zPB?qI6#;y}DRuc=_QEFJU02`@jXr3ZsDAaW4QaQPX3H@cn)>o257`&V7SAW$5D@}D5WEfQIj=L)>j(|+#>geC`T(Pv|^~bdZ z?*Q<8YzbPc#;v7|_bTs{lDZDdU+F6Fw01h1+AIP>;}KJH6vJ-952U30oVF6)o+6S@ zX(&Ye9w@!QLg}(J*hGvK*CcKfx*F)6<5TR%#Rj{9d5<(p?j;{?5}Q9F9DkYRvChwH zb#Ce`v3yW~--?yw#&;-E53y2lQ2BF%fjXPV;GOQ@O>QYX0_a|Hped#|tJkBI$A(x| zdj+He=b(NR3tSta8AX+$UUFn3044uQh{b+p8*CIG%ONN>H-Q*7l_VQRT%1}62 z06r4$fer8b1PSn|A^5lN^MCjqc>jx|)(dgx_Ja8~rB(R^VL-g z$hf@%G5h>Axy0z7#CC+`9kjNjU9j4i^XzqSyf~`4=Y(w7xOESL$%zvmo9H1HeO|EJ! z)SuT-j~Ag)K-FpF@_4w(&piZ;9_D72m6oG+m--7M@w=ezIyd+rAS7{|ky3K=FudoH@Xwn~~;R zU6~iyG)5fBE>2-_Cx74l{we#F#_Rte*Yrx3P!m{u@6B{&YhyN6p*XTL z+g+i2vma_=X7!o{WaL3dE4O*KPuIy&gkl1cS7j}rpl>{L!|=hK2XDe#K^oJuXn7Z| zHrFUFw?{EWh1HQQtpX~JeF)uSyvOj!=5%i(a$kTa2BIeR}IY92r=HILI!M{dz(X5>n_qG$6&$-ypgbMOuU-rh>br%Wruz z=>~8yp^ES=e?kHQjSG*uyX@f^hls`qnNkdFnS5qhn!`H~O4E!rpjKN&{+*BwD9jM~ z8e8XDN93u>3V(nr(?%OI7BWCHA*PY7?9<6-96F97G9nZs!Jiqssb+jc5rn4#aXLVZ zisFQ( zcqpG`$4Cm{&eI^Jc;MS^xbU&XOxe-HN)4{sMG*aU0b7XOiDn}P?2%MJCFkCXcGgBS zu8t626ap#)@B>nu>8K0EUUQo!ISyfafh}rgqv~6g*gC6L;e^9p;IvnZxPaEoY}n?i zP;gvE0)Nv+g70QGaZ%UAuDW#>Uo$sD4``kR2^6_A=tL zvwFO$3-B^~_>*=*eQW*7+J&{-n^)FWZm+L-#=&8Y%}B6-Mi0tq1`J(*qNc&zxU#Zw zO|&rjdxR?{j*4|en0DwndxVakDnP4eUr!GpIv_qJq1M&6w%0CS8-H|l4gb$^$$D4R z#eXnfLnI&yH_!_P_+PYJ#2ijq9YGDs!MJH|U=&P|BV>E1FL|k$Fm_FGQLkdG7vZ0n zX?Ub7G|eHWY0aU7!G(hTPOHDu%kt5C?1BfuVLwL<-u)D>T!6#6xrm*)RnTzz1qg?b zK<385sm9o;2Z~o60Hli8`bd0Xwn)wA5r3w86^|anE>cq}QQ%>_jYEg(VY}3WqB~qs z3h~?MdK$l_U_!&I?kJ>?Nk<6%mUN(eLP&puf~UKTs767G!9()#y*|58nvKsp4dIPB zY$Zl)wHXiyn+Jc5l+zRw6kgJ}PN7vIg)Q!J#EYPq;xub0D-d)L{g~*<1!mXAqkpAi z2w);_(^$y*is%ev7@Dd*rn8qeMBf%Q{&S_F2danxq<)G@#3ul1>{4NYxOxvLfH_uc z`{uvLKfr&-kA`HE<;cm7+Ya7K5rQYASFk&fC4)kP`Xr%Sun{Cj8C;P}6-0)u>IkXO ze4<-{e6r95L=1{It!yiv3JA6eUw_ADPtC&R_e*++kPo3kbSD~oHb8(?*V_h|m7P9m z)cji4eU#xq-GwRGY-XK;OHm*lN?T&fARv+}aQTHIBS&C7BXKtZn$2O|rLBT?bLaRm zxoX*R2SQ_UY4n7GtRqT0_8|+uF|J7&87D5vz(j;^9L#;<&Xjb%D|a%)lYc7(SJL=r zdC?byg;HuS;HMH&$b`|ZTiwFF(P?r;z2Mr2O2Ef8Ilk|4jGDFqPax6FS{fcd(9}cf zh{@B7i%Ynkt=66HzQtlVkwZF^zgXfHq}_tI2H8l%xQ}oukl+#U4Ua}d?dKz-wvoC5 zyc8t?n1KKfQv)=}IegVEjDJ;k5HJKBof^6Ll0sazChbiy9%4To9M{o@oi60@G*Jl4 z(;DAT)gdhd-Vg9l9(E{^(mAyaVF!1sEgXR-9S)F)0QzS{RvUc?17|lHJv`JHFFI{@ zIQn~v-IJ3|Rb9u+1n%d!pO%a4DA=dy>#5>3#w!WYMX?FbsnrmApMQ+lCqz54y3#DW zxI}PmQTdB6o!y2illcPKK!2$23z#kcja{1;#}5j+ zeLBhbL0TY06Ow0iL%53_KY)}7{Ry8#!Gq-?^u4zEL>a|V{irotyg9%t+oFHUb74+} zlcUY=6~bj3b7>wIhzxP5}dGB%CkfOPyG2jvJASN>{h4*Bho%Ezuejnck^#Q zAJ??O9Lnh8z?{U$O6P{1EW}XZvIQ^QHuN}_x2ke@&(2>l*V-k90FHo0Hi%*N9DEsy zD`L!Zn;sJ5?x7a9F+0Jf`tsuqZgM#}nENSl zTSUAuZ13ijIb)~Q39#%VK)DYywJi8tl@~#NtG2KA6I2kQ#VTy9_)@m#YYtCM`KhtU z7fzq!g*kH+-==f)eZm~Yr)rMg_GBH?6U|XnYRqxv^f|7~nWOkNouls)<|sZ@bM&?+ z>wiq=C@MAPxO(~=MP%`f>0TAzrgQXt!W_k?YL4FaWS!|8MWx0Z*G`|~+MIP1-==f) zeZm~Yr)rMg_GF#u97QEyKcLs3*zP8T`&^w56*D3@q5(UsUVPV3JJ2a=WNe-WL2J^* zbOxIwY${M2kkrbRkx~GDVeY`q+^`8TXMg?P!y(&@WKPTaKv|Q$3u-VtFu0O*iR0}_dQ4d zvR{!rfV#=qp1YngP~J18{^EI5ixYCvt5AVo(LsD=WK@ z>}9*uKZT}pl-Z&rata0L6qRi`kW5>|wFBG~xOAXurkr|ndPb}IES|h`ihm$^1VZH_ zCf*_wKwi#WSJJm$$O)zAn@L)ftYl6vyw4q}r+wk;W>Zl6O375z4yxL&PaE89YHDxP zzS$JjE~kiTmTDIm4q)DwoH-#VIhe3}fdSA}E^S@6blM&2LV|rSQ*v`QGs{$>6gM3@ zAYn_{K|EMTG&tm@G|n8x+kcglcnM7Sath72GX&gq0OxnSjE}wou_Ks!Gxbfg0Gk#m zZ%y+9HArZ#G?dt5$`5it3g@9zK{cZdoIh7%+i-QT8kWiFskz6w@ z*8bx%O-r-FYcpw9B!i@xtit8lcjB0IlwoKN@i;+{lXiq`@DZ;S9Dm5DDJA7N(~gsH zoH6G#${_>J;*{frHqGM8v#DsBpVQVA;5pKK>nP}-gAM|*Vi29yYs7}#PV7EtH1?5i zPbk@tnSj0Tnq87jA7DP{xMkQu1g8c9Te|xsNC+fL6Vj^J5(J`b4|6haa{>W2Ci#fL zh|LA4!BEX+BSSIzPJe(n&WNZ=AvpZ=o_#UT$lhqSVERsxV$sC(!!&}X-2SbGKP~09Dm-)FrP0OAFSj54#|lA zw*Fagv8sHtdO-K20`PEc^n_xc7<4W?l4*l$uB)6(uyG#X? zoRhhh@SBX9sG!p0_FNL$bVREZ+cRk-XhE%V>|Qkei`Nj+g%7sw-A}qbo7EX4+83f%m?HSUh3RU zpoAHmFn@Rl@Evp@#Lco&z-2N~z$qXIfC0bYPXHb{!!$my%inYZzW{xSp#z0X!5C*i z#>8Xboo}5#%3%6H=wZ`^V2Xl2UxKqD!!ly5OX-GR`mKT<36OI@zaz8Spa;Y?3>!#; zTF%V^lKYgX8?Z$HR0Y>sF;G7Sxln+*7pzyl8Gl-ZG;RZ+isi@ZLq7v*0cl)zQcgB; zp_wMXP<&P(b3xeReAnbzLK%AQ;{X4gPYX8x$HoC=CO-cZFV87!AH#E*P7neXDx^Jz zYb1U^FmXixrM5U#42gDck&wsF(dzI`qrq@6P|9}IWHW1o`#|uI4jrPn6TE<|Kcn}7 zDt|WU%80Nbe5rNen_ER5fLM*F(F`}Q(9+IG76?M%NXCbpmPR7F4tu%t&0#(RpVQIj zn?t^#k)@`m4#{rcVcsu_04Ty49Z#8>p1;4MocS&)ja+v%W1*i+b%$;ZuIJD5fZ zbrmpa$+!#PeME`Luh~c9^T`w50i3dlLVr1bE+>Kjpor!{^AO)CC*WGI51in(z9Y`> zI#P?=_XK0juL@%ae?5XTHM3E1hjjR`ds2W9})d$+54o75!b;A*=a(^dK zB4|WrJv~xVX*mSSTez%ZQ^U8(GFwlcMslJ;+;y>(#&H@tiFhjIu0R%Qwlg{~6+#AQd2Ou<0KbfG0cYF#0?S!1yc;{^fOo;>!*hr6Dl z=MV#y#fpyK0cJHK6dvPs4UCeD1AnwxJN|%Y#O!%(MM2LP`T$f875D-JB2C5@_QAi1 zOD@umfC`2S5w9bVI3UU?gUU-(BSFg%NL+42TsqT16V$~F`Tz*Cimy=knCcH9z}JEh zGeDgZ3UJ>DkMUa?jkjw!ae@0(CCgDb!MFMs)ZfexXJ zfrx}b{O)@~d1QW%C{u9n!aKnxo1yq7*5?aXTiwZ@LU7=xuk6jlvB@T1h`Y!zJE&hM z{)Pg?5zLPP(+1aQCq-C%Xhjg*rrAJ#C&xkAijutk$hsaN*9Cd&&_9}0{!8a?UV7ns zf7|@IQp*0#i+_u_EbyMN(0^l-T$x&v&#swDe|r6YDO0RWL^KVTgo#XD5`-+*=-W2J z`P!u~hf5{*_rOMZg+SarN66;~i5%y^V$zUy_V`L^U-U(B_%;QFg8)UI^KuFv} zF9%S?Bmu^n6B--048+lq@}ILMbFG?7c+4`_>vevQ5Pu~z+`in+EOE`m z>7lFP^xa_sP_Wqx@Es!j=rhRG&5E;Gh+WtAA0LS{!}Us+o-cLrCBa}s>S9r(mb%zt z^0c}n@ZT1=bZJiR;@R=LCoOufSGxFolfHQRq(u?eq%Zm=eR07_Uvvs+e|#i*uO?05 zt3A4S%3)2Xha%L&41bP-;=03IvClc$Q>YBb?vgyf?Y*#5_SekKCRCq0u zRs?=wDG=}QGMs8bAn+|g)oAdkQcH_u&n6Q#VEV8M;Qp}#Y>o}aOiqSP@vego@*!Y| z!w^UumaY~M(FZh9YpSq_;W;Z}Q7%Y*CB>pDH+glyMWK~y3HnuRf8_9L zwq@DC+JYxy&2u6|yK8?GmwcV>tItPwfi!Z`-3MY)tItGt+1WHFd_{Lr$W3?8kT9YJ zHapg6)kAmDZhxJ~E6+z{0a0m)3BMrGILq$$w2Q4LP=2^V*nAgGGT@$hjS* zNi7VQLCOqF0iNM?SyyH?o2g~WLe*&cv(K zn1#qQ67mqdCG9B5NJO|v8-RK$E%Dn-v|=LUQP3IqnVSh3e|p9+PM`FQXRGBKE_LM; z{Q>^G(tlQM({`l;OEaD~RNj<CW^z!*F2L-)TSDJ7D1o!1j-kV{b*uObBI35G|P0fd4_G!J{j@NvGZIn z41k*#i z6c5N?Q4ps56apeH0`|o&tOznHIf%*jRwtXPLXjJH#VHG+;A8NFj`PqJlD-j`{E$3U zNq;9^2B(MV07ofG;KL28lRzF{FW*j9Jx(6yh=@Zj)Sbmbm1nw*!C`$O6Q7A01}7|} zfy4Wh<8?R~L6wextzK9^_|;+TmC;Nx-)T}gbc%>WcxmC>RVFY)IL9%5>Ff`F@PlS^ zTd*79>17PICO8uxX!0|5+J>Bm*{-MWNPk#0vRG2_wwX-}(OgAI3KLVrvgbvpEd$0I zaziWTXRK3nfXT-(e?djoKMKL?T@=o6c3Lusj}f(tPT)sS&%zpb^5!X4567Y|6tNyB zlYwF`Ud$-5<_f|UeJ*UwuHaL94pBUkb}4cAIARv#$|wj>iS%f$z6IzJ#*9MB8-F}T z{iuoEMHmd2pYPivR>su@iqDBfyKX=hWk#E74LR|H1AcZm_iRxttNDPliu&$jL~fv0Vr}efO7T}Q3%Ny z3qD!=5$4^!ijX21(_#~FoVt=gs(&tiiss^0n`bBv_Tic=PDAqs<3mKi)&9ProwdfF)(%!Rw+5E1F0=?E=C{^wj`${ryR= z5g~?GP(vXm`X8F7o;T>(r;kb-=x>4Ct6pyVoG;3T^yqv-Hs|6<|2!2~Y7a$viUxpG zHS7Q9MTN@QxPNoR=JyrL zQoTwQfOJZ2iIwK1nV$2nQr<4NUdHs{(}YZZ1)Tu_0%sC>8L9j`F)fcydgGHv#P)^Z>U4&j(7p7E211j@tW zyzPLgARd@vY?OmsB{@8D1CfK`Qc^@8FHL4qPd?%}+rXTl+M!%LzF9M|OgPI5CFGzC z5I1$8QPo_9CT28MvwtFBZ>Q6fpg{y%b>oTzCnaiAwjT-$=^^;KKJo@Dp)J!EH@97T zSjp!!=~+Yc=3T=Y{W)%=i$IP}U&C{9?j+}i1p6xv>(}gRBXtEF-$KALdGF#J&&%qE z&+CZ8H;)V8C6Ui7gK*q%aYdY2p%J}}1hx;`2u=4CVP+o=wSRd0UPb08SH*P%$AT&v z`F&*0^s9*bmv;#lh{(m_1fkkt2semSd|C%!94;S4Dt64||8i1I%5Ma(2V|+4JURJ! zv*oMfM+gT8V1uw)gM?Msm^pN0;D;|<0k9s@!GJQAkKct$NOLSUZ+pj+ZJdMYI_e-X zQu9~#`w&UO?SEY*P<&T8H@o1dbX6eL_nf&S#V)SWIR#e9O-TO>Yvn$9{tEj^^7}vMoa*X2r-mcLfPYPqU3E^K`*|+^=l`@*{PW=v zNxDBuZ0Xyh?sPdhr|?ZZZWcWIpCu}Qi!W+EBXa1f1qZF4&7$j#&o$rQTP>+88HzCO zUCqh^_~+xfx(R|uPo~kf(WLzTKVwG!kqqjh;%}Rfv!BrmhHez2M3|J#$g~`H)eG&T z6D=_pR)00n&=9~I9qCL4{=jp(+ddHS9J$^l*Bc>OB*oibPFjzyJ@-nccd|PX4C2nM zY`&bp<~blQW+##{YNcBWmjtRPGK@<(8l*d{_WANa*}srf>^qB@@{C4(0axv-S${H4 ze~DMZhoUQuUXXwAA7A`N2uK;Ulo$3d6vxS4>RMM`-*dR6 z!+-PU__^O>|sy<}xeDm#uY+^S65cM|R=BliG%&Pqm-G$w$*PPaei z4q!+;lKb9tAMY5s{se$LkDTLL=3b00dnu9OVT2Ji_3v7H$+P!EQENc6a#!4cxux=! zcD?v-b{CKY`r3=1J714Qx_rrK{a@|>=6|M`0)+V%amkb$^s?;`WEmuas%IjF$ zjIopsl2?Z%<1)oI)a-@_u4VXum+i3(Xc=$(XPpRG4^u{i#0G zQcpDUdxTaKnUr7$c}fg25t8PEiIVy~T=r5b-`!$-p)45~VpO51_ScpRq4rB*| z1^!-QQ~X}Q>X_|Ejo%j1puAa#!iF2YDrJ=N%|7#u*9MDsx2jLPv%PQ47Jn$)h=uwp z3|R5KZ1-kKJENhn;;>fo8yvzf7uMQmGDxvW@wY|trGKqrE%4~H7`tahT18mbjxr^_ zUPx{|XAJIlr}xX&y?y`YgY16Xdr42OT+50Kbh40Ikagri0egf=ocD7S_4(DfMp+l8 z#ErWb6+(r(nox_mg*GZDNq^M&@QuBk7)kdHiF@~RzCd8wIemUq_KNX2y|(A6elrv# ztN4u4&2{%!Ri=s<6B@DwA?k^NeBEN9Mud;I4D;@SY_8`t)thvD8#mUOm1(sV?{Wbvc_MK=kEZF9_%uHU!NMEkISHnWa5f2CdF?ybGly)?-pgM5?sXTO z{+=aLn_kBc5v`k0V(JU*8Pf;#4PvFXiYz-pd|O$nS9-v|=wm{wkkR$|=UA3l(Z?;HcWTsI`%M zv^JK{f4DdlelYdTdK`eS043}YHu(zLIB=F)f)O(udAm z$@+6pgm6bIfuzs#<+Dsa|4CFOe65yii<-$<8-EC;tALSyY z5#=SalvdduS?@T?tBj8$NPbpPMVtW5iB02|Zjn)&*llr@DRN_yk+Ny&la%t`4YF-( z^6L>*I~l@jd9YM9N{3iwFC8yHEOddS6;+Lld@bwgPIjNjFL8fC8>cL9@S}yANuUU~ zlz-(!wS=h<1hH?KVN&n83}H&NJewe^;p7q=!ESD-#DY}`(Gv$R2=3|9CS?|nwxw1x zN|&itpn}-TBSKgph?r%k3vMoD#)B}XoZ9>spkY>Ei1OGN4UNxbW@TKi*S-o}zQh2nh>*vF2l~YcDp#_~GRFuj4DBsT2kVJJ zRA;<}@pp@djd%>g^bg8I{#_;Ln^}t33iQ7IRc(J(JWBPXucYtWgDSxLCmAdz-G5Ou zF?|?8E#oR6D(&ZxWEMxi-1W++=+gSJcoa+|4$G`KCh&#kEg+iitiMpQLS*&scsRl9 zyG352JKUOUheg%qf~`I}Tz@gLg=AtI=M0N${TZukY^%!I82t`suIbt&2X7M%)_tFt zwqK1D>^x7)lJ+VV_B60lFA9jV?c&VmUx_< zJtILV2@y#gJnEzR*x!jPl4!g1yAa?u__IF65c;Cwf@m_Em%|AvKz~?U7`jV0 zWIppQ#_rw;*~JWmAF%hE!?s#wwcNU#u9q*_$z(ooW&38kb5b9m0C`#&f)Nq77kK)V z&=A`Si%U!qwVc0;l4>5Ho4c&OI+hf~=+_o!dp(>HM{rd%9QwYsDz4DE#pv>-gCOaL zb_cfPcBfzC=#;7w|PLh8)s@_3;NJeCOUDE{(7cj+8L_3Dl|O ziVTnI&zGpM)g8lbpaH?PQxZ-FHBI&1Dy8tyJ_=OE(rS+f3ou-8q%y=K|F&$Txe-&! zQGu_(ie$@tLTh!6If^g{F1giaH8tl-w!qxZ8+aVn&j#eps5hGg-GAjM8kh>O+b;Gx zOsAcjRq*W}8z=2yosoj~yT3zDb~LGRoZJNv&du(nFZ8bl$CVf8A7IyNLzH@pa*ggT zQbuUjZm&lc^ovEv?@k~U>p8wuM~(`Q>0-1Us*S9Pn1)QESCL5c*A$ALh)eJd$Aq(1 z)Tm0PEI!odAF?dB0)MuvI8079POYNL4iGvl($?sUnA12Ym5Y6J2p4d9IEPHs$*I-C z32~aTs@@h|s$Hg*T_ztLaj7PF;dT$F#UUq5L}==gMZ3671cM42EDs<2ar~)6t0fD} zt+6M^+0dQ3q|!RGl{Y=cB!h2b6wZD`u2_w11W>^o<+YY3y?-ggY8ZTL&g@|Q^C|MJ z;IOtsBPGY=e1i~Wq>h!!fQ`-LkcR-!@Iq|UgW{7&=_;FbmV$o&tHJ!=>i?M0Y;iRO z|LVDx3~H(^nAVqU1;7fvS~#x1_7`nB@l`XQtuNh@z8RQk+h5zQG56W}X#Z+2UmSAx z%$5JQ^{uAD=zl3=Ti*w~GbGzMruLT%fBN9jn8|qMwoPNJ1o4&WzxZBh=>RTk%&Css z_8*0(ghKj)czA|D@pghU{J-D-)fTH;b67&Oz1<}~N75gSn8J$>$PqQ3)n*I60yRap z{$c_J^dEzhg5==?h?_qi^~~bsF3dk7FGWHsZ+85mw0{&PyuOr?qJHf<@{F&_NKpxU z&4!-ONwE=p5_A-ZKNneXsiQ8nGF#k??#xUYb#zX~^ad#C{w8j_Ztd($FdMXRqcl4i z#aT(6wfiw4%_*&l zvpTlLtAB+HsabCu7XoD1?t)z+6(vl0VX9jWXJ@;#FmhS)W{{)ggA^xB>d@T^{EtJH z&ygP$1hYA2v1c~BOHh~PByWxBQY?arKmMqU0Mqx+esMB}dpe|Xh$R_`b1w_#avzDw zMDI@SHZMAwn6wqqPD)B-2WD} z_3h?|?AI*%xg{tpbvmVAjm|pp_dFXRZ=8KZs)lk%P?RVW*U!Gye05mvFCdki9ksdD z1v>6SJRcX_n_zxuFL;~07VBTezU~T+p+))HcpBw<8{oGXRH1RHQP?0lREIn*F_rtH zF@L-?hghme?j3V;PYEqMF_4ivN09yl`Xj+Ce}7Oq8uVoyBT^hk^{P2Yjt3<&yNPS= z{SpF~6kR?z0!eHp!(#%#ce#|#A5~lQ)J3C8CVFlW&Bed`)!)cAGnqLC7Tj=4d=QfD+AFWq)sJ;H1j07T*5ZTmj*$M9f*%0R^`id+>&# zV~XyH703oVRU8I`^6W!pQz3iGvRlsjX=9nq2zi>f}0f#ZiWGaAuh$k5?6 z1+q`hNt7S!w+vEY8d4vYK?Hjm<`3CvpkK`#lXY+X>;OYRyubNJvd3^Db=BV2kPdpZ_LHS^Xh$I>ihq0|4MfAjkow? z@6k6dU&8Q<)h@@tYmKvrd+eBe$vg(H?A?ES`%1R|7VqD>aV5KP=k68du8RPekJld` z$v&<{X4d}tzGSj7v8!tmQfh8)@3kBc(bz-Ulo_Hk{Zd7J+&D7YTZJmV){+ z2(clLjZN;{eP>S09QlVd!&D4n$cd+-m=5EBOD5;v?Q<;zd#%ATp>e2tOP7BR<^g6v za|a0+bJ4MQJ*1&ARRVc=u{^|rKO|F#jB^lMeAS6~H=$*TY}9 z7w-GCv&(&Rfkbh7Z3r+lWTAg@2RO8L{QG`v_c<$7r6PeNZ^PjPpaysHZx^@`ZD4p#L*j{70uKna67KkdA{$9dq6B>6=y#X??u4 z<%4ZBY)nG2IU?i@Y*uE?LuSw>@Ts)C5!BDIS?j$F#nm3yz_5j>!`^=x5+GG8q%{K) zw>#*kSR9&m-p)shd~lJ8?VaQVuk{e@Y))}(Hv4z`R4@yHFdh!Q;*IY+ISNKlk>ymm zN(5a#$#dL>IxIP07s*mHzUner->?6hER@8sqS{!o<)#aBz zY2oJy$ZB1*k=W|5dYgZjq^NAp<8$P0lkV%N?3dJ{jET`JrYzLN?C6DhKmRlh(aG^F z%}q{^NSbKLS+*9#LFJ$*x1p`bcMPrIG{lMAfocx!b# z55Rm~N$c610{-aUh{-d}B^VMia9=M9y69rx0 zJ>|S)-T`nTn*vHDpT)Rm4RHG9VpR4?ONe+W7>NeJaWQ{8veBXAN;my$Z{v z%e!Q}g(7ubf0A4H5nwQZ2_#Y}SzXX^Y1tBFi3C-9P6UCQ921P(G7s2;a)qQKSt*`= z?Dn0pk&}NYt4`7`5vjzRGBy4A&b$~#cE|QNqe{Q^>Z{FTsJ(P#d}Bf`Uiwd(uk!7$ zQ2bAu#lQWPihrkBT#M=AjsI@*)jvxWKPtL?O(>*PFHMMzAevvhCzC+4>RX5`*Y2Qi zH6K7gQ4-923oRioMON4`x;ALD^5i1vm>*)>;N*V@C43w+diu05-Z;`3gZ&d%eGnp? z8l`hSCMJ-<(CDCxjGz+&!ffTA>JUZY2-%4ZyJJ_)IY;9|Y3J2hwrL_K+$%0WYn~k~ zimoG?*A0V=P(vVS>u=G0W)h>S)cUYUH~FjpqK{m^Ne zhM<2^6x{ZRhSuuwAn$_m(z#UUmA7Wfz{&ZR8rIz@kv9s3?1Mle$U+%Potma&=N0wc zs*r?ca+DFv(}j*@5bnDp%#+qpBpQrv=gvivx8J#+z2d`oqAL6|iv~_Ugz!1}JJC$f zf0BG+@iuw#5#dOQP5>Ldz>eFpji(9Y%;A3%34|68FglEX$F?B+eRH2aE{@MWB>hwL zfCToW5srU<9S!{Kql6#|FC00L^NZ+K?#)Q~w4bAs#OjSHr1WyE_t?wPQQ5hfcd)C! z{GhY)~E8{q@`ku$uSC?Xk1-D4cs)*6C-!w{BY4Uu{wW5 zUN7)6A(kdp9G%+*(unXN@ns8-abz^{knSQ@j1Mm~+j=pc?0m5Pl>(@mPb9Cz?{_=5 za4wQ@?IPEedo!9c<9~`An}GcHP4Bxy=v8Wd(s|~ieDTW1YAkVW^?a|s68s7+e&b@+Bl0b>qvi~VGVn79XNP~TLw|x@|Vjwkp@TTNplv~|DBM? zbexjUq}wdR*|f%@hR}oES1fdaguxUPs-O=JxvrN4J}Tmeu6#c-kZ@XL!BwE z;jc#9Z$8^2;Gitl9~Gl(yB#?2x`g{h<%=ojuCE}DlOpD?kD7aJ7iZYwI2wOkwA>?< zID4GnEPFGbpnPA;9_1@#8E+PczODbb?3c;eBq(&_amnZydaqMA)L4 za8-%SelX5uKnunr^FT%Y4JlKtMro(ctj5Q*k$kQEi{$8;w=|8eDz|}ZCs^e3gM)-^ zbhk6b2#m?os;#?9Of$t;N-%$xtKWrShzS4}3Gx}%{6mBn=Wy8)(3)+(H$NrBY305V zjN4xGTrG(QK=C|9DedCe2p=PgK}?e*2H~N;u`RqcKcU=Bno$X6l?TB3NDlH9`X%P|!&30_ZNY!dCkrBPWr@ik zXq#J&`#MQu^7SVPc-G;R#4YDK{l7(Ai}PtWg!z;OotN7@kIsDF9M4d@a=75BY?{O` zFzNba-8mM|VYDr)F8S0vh8pltU&QIK#+-DWXmMrQ^n&xoDvs7K$95SVBU=LGtH}+0 z$05S8FDNW*GuY+__U?aaTUsRnK;EChhL@w6NHyEk^UUTG6-V1G^WHRv% zhwQffLdL?4b4IaiE?$jO9)#rF1!ZD1v-Ax&K&VU)I1T8*^k|Gnt|dB?m@c*+ld^2A z&W)aE-etnR>4SE@rl<1rjF}%MfeDfmPOihl>0*-0lQSm*%LR4@x3lJkq8l8CoJOtc zY28aLAEUE&({FzQN)^R53vr_g+S9bnOFX}GLf){2j)#J(FkX0v6P!`sCytBMMU~4| zXQVvOb*Dhh4XttXYtk6P9+8=&|7s?!#Wm0z*g)22&0(7bmc5|sXvRHJFV+uS{8 zx-X8QJ7duM({VpUwDJ{&xvu2GKE)_WoFJ$B9Qbx;83%s==CUEy;-c)F-gv;a4+2fI zyaEJ!h9lngzlAqpI>B*V^2@i=-h0bzrE^j7jUJ!Q(kQRMRSZ8*cFPSjsj+p6(*`jmR zgfElWWHbc^DF$>qn7!hT$jP^_VV?l+^XQs+7OoKQDsAkVSH2>9hKowS=Q_gVA3-s_ znBq^EW>^3f_JK?E3TGWBbn_y@z7Iian028uh?u0 zfggWQoa6`Kh_q93(hwcnD@90IY8JW+7Mdlbs=3YWV6Je{ThgKGSbxgB;$}p!V1Jkn z%NeV6h^=&*t7GO+u^%~n{oH6{NdWb;WAcfWclM9=*)c78+&V-5@}GXTpJ()y(AQ&a zVTG4I|6roP)a9U05I>hIv8IPTBw!u6^w57DhvMm}h_V!I^y3Wth^;o~s+QA)9Y$m# zV>Vm=sxJAxV~F`UF2W|L*wec7LI*>>dS(1inx5u zg`mrS1T07^lApZKhkrUFfq%1WihXhX4PfX0BT^BKSU{MZ35OYmO?OCzc`otjm|uT| z<`BBhP0(Hc9C4@)OR!UVTQW4HCv!KNSJO?e1@(d7f-qO83W&_sTzkinelG0yFyWlW z4$J6g+~jr^RBgT&UvXJ;T8`qk_cky4O8; z0`Xo5AASjDTn;AzZq%!#B9g78OpAY+z4))F9sNvkdMpt)-05L{0KyAJw&G@AsRW$C z*TFGe6NFQ;;}{Ji*1|V>LmFiHZ31wOg~5X;#}!{fN^uBpvw$Vn!P7G`;sUfz#6_J| zCNDOdK`~MK2nb6A{MNaUc=honM10I1_;HVUQTj>)%xoNv1b`uWWzE5`K9TF8g1LSg9js-T=v4BuY|oEocmRciKY;A=I7Q z64fM8!nH~_R&818lXi>5OU2&zd0wp2 z_ztWsx1vb2FDYc}N@U$)HxEST6pEc{gc?1h2S`j)aS4GShcEfm0 z5W8P5;5|%`eg|d`L5(Ls@TCwoKY~+a#`T@_mk*FA*=Q@zO9+eJuyF5je?6>GCcR=*mrJ*)O z%@n2R1+jA?F}Yyw=;^ehrrlWLs>X1B0q=)ab~mC@&njWYT*m3u}!lhNS(J#?M%&K|{3N3-o52+tMIvoc!8 zUYnaMiSqr}^ZEmp#4q7&nZ&NQ17brQHlr1Cvrp>KWd7#+O07dWrqodup2Zi{-Stz# zH+rcn3?&>~TIzp}vg&5wX+f}02_k5Y;FBEd2nMgSFB0`y;gv63Bwkqm*HKok1ZYY; zyvZ>!9L=Ihc+-B5cmE!IDhr96Q3*R+P!3ETZua2q@!6M_Wt@4M#YEP(ri*Uh6^$J^ z_fRjfG2876F%Mx|N(|u0t=BoI)X)Qk3TJ?XB6*N9aSxnw05)=Sg=@VzY z4`$*dMGBc>(}}uFP?9dScizIivOgHSO zwD1`8ETq?VpK%$e%p4<)a2OfiB3LVqE7sHQl7n^b;RMK9DltoF-Y0j`>X|# zav=ek+U14ZO>j`EzFmtvoG#GrnS`$p-=33ZWOb}q?Owl{D z_ZZ3dARKZ3%3k^A&NsjD-Z!HKH11Id+FqD3yy~*Fl8?@w;=vYwpe-Zv0HrHzcg{QNF-*P- zQ=<0f)~TP~`Y=_wQ+ia4$vxO#KXu#lB8Rr;$h2ddJQm0(N~Ph>Y-DmJK^PuDv3cIv z{YLG`UW9X;xJc|1cK4otM04AYyDNXpjqJ#!Kd>)&3KM$yyASXVvk8fnNgl5^Y_AOo zQ0zNCJgzm2^3D|Sl9N;$3rR=2=iJ#!UCgIAeK!~L%dX{W2Hlhy?{l_VKZRRam+-ll z^f{NZ^b?WJ|G~F%a%Q>L4j1_p1-{{v{)4aORZd57*+%#B{-cZE$1}1R%Eo_`yo;%* z<@RmFgf69rVR`sNZr=KO*;{Zs#F;3iy|bz7hC&>4M8eQ;J%EK)#YEd1JB;^=O|I=< zx7!b~cMKq}noXX6c=lABeJ9u*$7dhFgxkE$aoE*Zf;M8C=jok_eV!Er5&~ER!pvYE zRdIU*nhE@RUIGfHMuZoz6Rdw?byEM~j9GvBZW*VEy+0l<@%)QmZ=nQGtFhRpE1o^? zlG>KpT!>E8EPqQ2%g7G$0no-9WcK_ZuiLom6*urvHG7-n-ptvyJy9_;inLMi&BnIa zTSS#qmo^9La5C32*&X!+dn!kZ;vMt|U?g!inV0qwH0!=Zam~($(C@>7`@1Hkk z^CrRea_cKg0;(1Q+G_axLk`u&0L`_WM+M$qe-1^ncY277!Er6)`p|FQx;%=C{q{Eq zF>JJO3b>Fh+{oiZn^wy}0$|uTU>odpq1|SuV{}~?;2M465vvX(7@1S@!3lKBf!SEV zhCva%?o;NKeWU>gNTYuURQ|nUZkRO2S0>*fu@a-jDjtWRhNUM+6BY^2nhie@&1VnY zaQo43KCO>&u;53AfY<#2+s$oQn{{AIfpy;xUfeW>%q)za4%!V`wD%nsZ8c^%?lfMl z7J&5F+$x2TjI03u=e7}gg1w4pqYI1>TMml>C1Mi*>*7Q?yXl5_ai-(!`A^x|>(8z^F~X{Hs@d5u;zN8E ztTo~|7x_GutgwITza^di+D48z;q0!-`S^9V%sNrUbPrb-7r@38BXSDgWrH{jieh>V zOzO0hqN^SU6)vugBMNp|`pj`DtOC>o=x^L9((jk^#Wg!!$O^zYpfFBqiz{gwYeXSk zZsVYtHN;G3`4;bl=5%i#C(IvBQpND1rbHAh*KYdpTrTYfLvBPS#?ae zYc6^BZL`wUoQ=)5Za6bc)BF-w_A=v2v^9;*Y0F$vHb`>D*BZIcwc%7^_Kf z3Unt7z2KqK{IrKjs5kCNdNgPgBxZfWp5Ppbsz&w_mT@75<+|w(yF8)KB6D*wkNyh| zL2rL>M(aQ+TK(kQnnlNv-Uu%PeSq9LR0BYfF_&BF$UgcxxjeJeciu*Yf(5WyK*r7Pf_H(a zQ9$ZBHvWOq>?k*&V67+zmZ1d`yW?Dw@NIXpeZo+c4pC$Q#>T+r>4ufYAeLi;Rg{GF zr6r1+^*3^PXVHVNZN+YZEI}yEy*@}?G8Uq=i8+fs!g?kPi~Q6sOBgY}Crdf!F!Fym z1HMbteD;f2C}tywF&%IlD3Q$jv~@rje#9o1Cuq%B2>AG8sMfqLzzc}dsC`X_HXSYQ ztO)s1#8+V`cCR58@gT^e#|U#G4AoKTfCvQ`hnTDN)1BY`1^^~U+^ir4ia`kQj?Ht@ zp_qZ8B1}^ZN|lHNBfBS1i~7AW^|{j8>Sa$ERj#K$4KN2R;aNO(p>6 zoH(gaSHME*d=X`bk(Y_2@RV$1-O`vNHhgDf@TjtU0A&P)Xyg%5gZ4!!t|fQr?DPS-Dxa@zE>(5u5 z&^#`h_)vvZ zzkJEiRUn8R<;_lZXD&Rvm#FlnPho*A#!l`LsjHkD=JKU*7GoI!T+R6aqi6_23!y|* zM#QY=XR|a~J-voWSdt&Z2Pzv7!d5M>G=Q2fU#eBzApvrB52{Xvh#mW`JZHWN*L1ndCErGp$D^kW zcg0=x_8NBEd9v$U!xDePsDPj$VZ_gfWOlcD?4t}UgRd|L{ucBZ)>3mBr9?B&~y{fV9`3z zvPDG;wPiPaK1WG$#$XHECo+0Ll^`&P#yFh0!E_v6j>cvOZIFKpxMiV^g1E01qxHw# zquHE+;ZT3D)8eY^KC^81;T}pMfW5^5=~}h|9yJdLip8`)3Dx#!aiq(*lwx&s{59$OJ7ROtZTHQ z7~n!uc0bpqhkG}!?!nV3;iq}y)f^fe%Q6PRlu~~MS)x!)v2$;+_gai4=eS~cNT=xF zl5&Fh(~I1E%&Av>9c!A!VIX264^P-tH48d{XvnB~eOf>B5Rok`Nh$lFPnHaQL;waW zi$r2lruF_2)j59PjiBsrG+I*~ddi@TNl~Gib{p$Hvq&>fFIZ4AH1mu6gJWtoGreIiQqtg*@g9!tnpO}AA z7+{M*U%DbQ?9(bLzuzu$6-#zC9e2>12>M(4bXw#N?f8rElt{Cc$vhyYH_^U5MvL1` zG}AC!9ps&)FW5K)jH5dM- zNHvNffq-oqEigB5#-N<44YIw+t8S?tbwgPv+^HhrcXO&JaiV6Pa1Rrc6_|gEArV()$9?tumuOa^=9XVnlIx?503_3k<$fF$GM zvg;rA=^8MY!Za>#(IJ6QHA3$yG|^?m1VKy(U5uidrrvD)F!#Lbr3Y{B-rs%ej(lKv zY-l;NSt53U&0Ln!!B`j&iF5UPGCLQpD3*4wu1YOSB}bAl@& z0*OxgM4eR=zD^rl7@$Q4WckaG^J(IQ61=f=6;n9t&H?QrRda1wfRa&P!3-x(5{Bf|V;ugS$ zslZp|rLbR*f3;1-Sy1N8HB=qrB-ZsXAqU+w-X`#VT7n)ld-ii?h^@d-80c5Sg*|KC&K2 zYV)$vCA6uH79=&l!v3nXY`MS>q@PH06Gq&nmuoZU(#e457{f2{{HI`UV+6!{X)5b(2Eu=i8&YFc86Um&>z@Zh*;qI+Rw;$}^zI*e|?)7Yg2KDA% zWVVJNYu$En@0dqI&zHX6(2rmzM*=OeR0=PwzB%3z3-N#FVzP)8lQPdwbj^1q_!}RT zIfH`K$ekj}duk5Q7?XhqU+*ej4N9<2p2e}%#O?gU15^;kawLhl@#aKr_Y|B5)dUU(UKxT&XUFZ zoP5@FSUG>DmZOEG_GtDteSPg}cJJ)Hef#ddrq`fZ{DEEE^_uH{GmE-hU9Y{FTzJpv zOj5xk?b4!yNFkh1?aF2sdUI%$QCbp;Cn(v1@0(0f6HX)$Rr^;v(P6dnKaWq^hdZyl;ogp>WK-uYG$=?}dgTBU3Ce1_xxW3;3eoeztHwpqlTS~WsBy6(=X7!h>aZE;H+>r~1Lkm}ElX6-I1<|e;y zZ5Mw=n21`+OG^=JphEG21ggYl<+dW65Fp&3=SgFpTkq;&>HQxeKVRD&{Sc}dKFxj8 z9Z#0oP6w2U-IDy009zBYr3iC-4VjFkgkyZN{!C#UVgN~%k#)`r80up?mdhxt1b3kp zW5#kZUCn-h{Xv}%W)E6gZX<@R`aJdVyL^8f;KMTnteL*y5(hc`(@Le=d}kQE^Rf%* zdvZbqdNnJE_@5XcU#H8%W)LI@h-V0Kh;nHP>{+NKdK|Zl4bUc9pDI<>^oM5y6su?DY7zJ8%;=h*08y%`cA8n;DQkUQCLpVoy&!_U_72BWX>ibpUD!2}E_pC;}?OIv@2<&B(P zbpU`CvmJc3wG0Pj6+GrM_C(-8l=ZG zPzSFCh=I+1rl2RqJ$aO$UJQSi`&mwA(mu+=Dg_*3%QIpGtqsTg3-?&l~S~ zFD+D%ynw6mMEI`kBqPu5`qPa!R;?ByR6fRRWtEBzEI9lY$2fP_pEdiCmgX(^cRS9= zNenuT8j-(HG8spSKP-%DX=aCt{BkpORL735O?o$-meWT599L^ce32-PdUx}yyi{`R zNCJ218-sfg8Q4(*3rK&!5-?g$AB+s@t|vbl`5)$mLbRL5d@}mU1wCw2!R=%lLKFny z!}S+3YRh^`_D40f=2H^4i$Q=`c`ic6u+P8&Y^G~(Du7+iRZ{s#%2Ff@;oq!{%CDsU zP{6G|zUKZ?#LKTeB037a+Q}XY{X}wBIReZ#!TQUUno%H2EaiWS(n0{ML9G{89a&rj zy+r2+x=BV?WnaYW;I~W3V7xgVDi05f1JMTqy=k7@q0yE}M_nr(#O%>E*e2KPOpqzr zRX@2@lX1ITWN+p$@__Detm?&$kcb`5G<%UGi+k2M+;BIRU&G>LxO)=qyQRMI+A-Q3ye1%qoWY+$^ccOy|E=OX@+#Q1|Wz30+fp7<{7hc zpMQj`m~URQgg&*DhrY@9E{%J+PmGd*&7YH%!xhBRDu^h@7G$Y${^3eOY8=Y@>{x0Y=a?aX8i(Rz}7}$S^rOkIe=)As8|*=)rD=s%ZC-63Pb# z(CgWW0vRHa(Jm$3R294WY0(j%ZgjuC>6k26igeIHKL-1IeD+jekpf2|AFxn~N-}hJ zhoCMPJh^|c$mpo6be@A};ckiQHw*+mb|DdbN6joq?PC4xz_b$j5XGETlB^-6aSyLbL)-kI@9!h1N|R%D;J^zN#i8WV8BKXKv9&$SR&ab zDIvNsimVb@WF0tFEYhsRKsxD0t}=sQfB|xtF`R$NAn=7JF%0;^<0L>z1p0U6m(25i z-&$)Q)-FoP4En-}SXF!Pwb$`Gyx;pK|8si!`Fby|O@^6X= zE2A+z>4ckBY&Z5cDig(zMc<4^kY&N&EU&@A{sT=-VePWpH9^PdS6BjESw-jL@g;wi6_B%;A&MhmF&rXtCh(0kUI?Cv;V_#@ z-@&UpP%56E0dNx&+{N{8Ii`EU;Dzi3NG~1JAjY%npDU=+EcmRVWDWwhsKpEW(;wFt zpMz~-@-03AU_pzW^D=QUE(2q$)xqh3SoYi_If3tSIbwR9(z7c5Ii`b6kgCcz*iwHB z>Ofax4%K0)6hA4<#C#b+%&ru?+!I+gwg^w2U$t>#u3HJW0Wx)D)eE?pCXPJxAzv+CkQTxnP-p-P1u!PyMF5!owX9() z`9iBv`wiKuSHA$L=dso+wtQ*|{y=|nz{ny*;O7+vdBGf#!+7`*LG&E*)f=rAPic%Q z_c*eQW0N8Z>2>06DCOkSO7C^lyCjIFoD#pRqOO6K&1X6sT0~FiNry2x>c=M8Y7r$r zRX<*8pkH+GRoL~|xjusniAAJXp0W?6eMw9qjm&0r;#`uO@%(P^Idk zNI8I#E;`C6uo=)_#_jc2kPDHysc0hS0==3S2G{lnz%Q&rV6~`dkWzo1IM$EGq=|oI zB*T;j{%Ce&7yC<@IqC$kGQlYk&DCyf3i}X4<~E!c=p?N74(5%2Z?_ z>uTOcLx=?_5{(wh*w=1^>kxlA0p4g^E?^C@j)Z&AFRX8BOQ!mTtr*(_t_tQ|(tgOT zFWdTrAe<2(Ge6sQ$NEw!zpk$pQ9-f{AXy-^ik)=gdnviJ%(T=IPDBf{BF_HKgg6drEyKoC;{h`o* z^>xwsl4X&QG<;=w$|L4l&RS97~1ss`ME!BTXhD#}=($atZlAJmj zE351Z&fk5?x8-3#)E$$oq`$vY(0u~b#ESuNJ7FUDWjcmAeq zQcY@kVFLNAs?}k!VhH=&WrQk5lCfil9M>u&5K$o5+nWh=9)Ur;iAKCZcJi3Eli5Dn zez}jPy~uBZr96LK%6sx$RX$W$%T7K2Q@>$gC^m9|YtU^ifuZnyla(fB0OMMI)d;8+vyApZ@rdGs1O_f0mU} zoruc0ACgtkVvFWl8}; zC_LhFW1Da-X7vqo1zAD1lIEiEPxGl^yCuJmLQ`7o&1-jv$e)eTA!tkxN@?IWWO``n z5{vI0277-x+wp>t%ZlHSAs~tbHwHQ*mEE=&wrh|nnV4LqfS^7v6tQ>-PRYWHag%E{ z{ehXGwV4sYL!s5z|IEPYtuw*JH5iYk6yeH$Q+mBegc_X-Yy%k+MQ7}f&w9FPiZVCS ze2_^peYyD6gjBmK>g_1as=1d<68|}oO<`JO*UNv{TzbU5cBVWq%wg7L_G!yZNoCw^ zb7b4`emBe!l>nQCxomd47Ob*-k5JHR*%WZ(%91G%WT5laLNP_=TUKx_`AScs&$*wm zY&Zcd+4yV!G*Hvhpx@gM`QQM93AhRB z(2ajPCz~l|fz(Nhvz`nz!!?TG=8ptoX@Ve{zbQ)yniRtMnkN%b<&0U{t;RjHq~Deh zBP4zk=di(fRwwp8U<1iqpU{i?B?5f<2{kIMq$HlPbDYp}D(CFdN(RgxLKaL<$)B;K zOuYSsp5_;#ZO(sHcCr1G{EqHM0=?ORiNAk`qbkHq-BTDWC*;_$f+7*~47Bwx3+}6b zs}?>c!jymsD?}(IFC{i>f6zZWAS2PGCQ6mPgpEuOg17Ig!em_7qd48Iy!gEL0i%Q! z4}?FP?2V|P*rJREj)xKo67PfJ`d3zc#V$r*=pxXT@wJ5FPE~B-&tu6bK0(5Gj8lKD zYEL~{b*KE(8<4Z!2|-p3FFN>0p)S67acSj}!m%l19)M(&{qWkHzZ4P7EZ-j9S7)nN z?up3WpQsP4O!H`|dg7DlDzlTuuuvi+lp~?!7;ITGYtA}noDt4Z)0OtunT~3!?+%TS z1X!qh3oYQb))86nYcfo#`9kno92MJ&f&mual4qwkPE3b}hjUFo4AC^vgs>&%AqomUv=j{BSAS)SOI7p2 zJgC2L_RN|)L6P8S%w`pFb5wOuoEPTOZEDARe2HvLS>rLJ;36_kDA05$K8b%|ImUvC zC^xlq-!tox)El#>H*ndDN1d~b(H`s;MYqqe@sA`=$D6anBAk-U4&iEeo8aEX0=yJx zNq7$#$;1P=ogD8f>x(lL2vlCfb5$06_=S8Jo}|zwsUkdGm6T3ZXVkywwKyX?u!liT zU<@%sF(7(T{Z$$0=hNPV3OavQC-nu1DM}JUAD8H5>J0*Fq!2ljAfIJvf#1_+DkiVh z@rSqolMlaxBKtE_JjhIUbg|TnkGzPQI~#Yfp+S2Wn3t+<4oE|lb2Ay})KkO+P5h6v z_o1lGLoGq0n49PTqv!?%wcJ#cIWvtmj`~mS4nmKC;eaEMUVvFpBsPDuA;1r)Z=~Dm z=+x{Db_LlF5~v*Hyn+-OFpI%7G5|l+72)gst9nS@LA>a`Ab!FjAX@@S8XrbHViGBA$T?GFS%j2A55}jBPtE zIccbFv>fM58_ZyasJDM}-FRxoMXIg2Hou(525h1(~dV)Cw8Sw zCV)N$&KZa`{-vHKnn7Qyt66Dvt-WwQ`%8GJ!}`aTn5RdHc35LoG*E7Iddf?Sv*3A- zPE=S>_Ix({zGbQ2Ya&7%!$d&Ab^Q^&L*zW-D+2o7A|6L%GN^x`^D?d>xQtl$mfuTp zbr3N8#}T89td*}vEj$768kxOT)wb*mg6e~R!(;b^3CG>uk+rueSTK8qt6AoAc~M5%1QU|eez z3Pg~N224A;*Js|#L`~~-eL_$45S@i-T>wZinrA)5Mkd^CBoVDZ!hQ-ei{lsXk5%!0tU>7hD=Mb zX&i?ZeQ}3_RmJGDR?)&f5|IUS-FO_3NKz92!SDfTF{(rsg|mOi^TmIVO)L|XrRnU_{d|px4$$I?{=*et z9g02DG!(^YQsqePjoyOb)J@=maFf`>Ya}Ibn)n#@W`@gvOXgV8rWjFztX48i{4JOc z(acbvCvFe{yv^t)m#LtqQnmX-CYcUUx7T%1dWgM@Q;Dd{xg{V@QVD*d%gL4esE10$ze4W_ciXI4YPKE-5KG?O|z-=_>lN$!$@$EmHMCsvzBnwpiq z_*5KE3g%Mh)Ei>L@`o)X>v(n`ZG>UNT2X;KHUuLw_H9brlhR<)ixzjSC)!|Z!zd!9 z9M+5B<13UKO@@k^QLutn>y#7eYLD(D6GVS9>HX1R=ZrMI4mIDlLN>z-ncNR%c&bK& zrh=q%6)FlP=FY~EZDcv0ro)|xFk?aV(W?WUaj$qvUTG{8yVi<4kFq|>_c8V_j0g#K zlI>8!FS2y{K@phtplrB;0!y$}g4NJZAi>F2#tvg=0~>*SOw}&hl31DZE65nUNKt<_ z>*oigS0v?*krVeWHK*LVRMQ(!jzQFCcIxGha+9>18C`^KEX=AnBgDtSR1ZH-IUQQQ zvZaRC?gyZ;WToJ^EX^;IN8|v4Kah1TE{+5W3+(g~kk-@u5wd+;fhclJQz!H-4 z7*~#QMi6gHYX>l!$}Rbv`!I1|Vg}Bj(GLi@7Ct*4BBIOb)E8$%D$-OILo$E&Ql_pN zn_(HnYP}225&EWDw`a+;bEqIhXJGLhB80N#U}a2UB;*R) zCANSLRA?g}Sz%pPzzs8ES4w~Lu|Lbkg0Ud5K476r@fWx`&PEQ+{rl zp;YxM8yJHd28ohIBJ1~B^4zrOf<(P3)FV*8xwB?{YuEpRRzQpt*m96@cad~H znyQN0B+~hVmy2`cRkGS&UW?rKO08Q5+E>(*ugoN&rg&T#^5faMP(V4+KE2CCJ}Q_T&0=2%&A zv0U2OKq`?~N^!XO6-KbVL-Dm(R>6cFz=mg=u46EC=n)pkp7EHTcg-^Mu^WjEYFf(4 zjaZU)JkE>0_;BQ*sZ3A9Y_#p8&M{SYhNa91Zl8#qtcv+62c6X&3_%6!Yrrsmv>es) zT!z{8FEFaq7L2$s${2F8W4cU)lKgAvN#vWME0qjlZA5=H#vr43UmC=jV9m4}S{;rx zQRtLx6H4ms)>{@TnVEV!^(#7{zThMxfLxs(eKtf$f%3%hYlnJU3L`=zHMf!Uh0QsO zaa04pDRF%BpliO0MJ0d*j(WqzuW>vhT53Ks*2-+)cgF{lUbV(W_YtH7|HB=JHvlkg zb-E@KqicWN4y7R>IehbwA`JY@I5vj9s#w7>sfJ96*#dRaZaK1-O=7&r=~!E{6O8NN@$!+Ox45)}io8F4Jm3V|ouoZX3+2sTa z#II0=&WZ4UE86&?2O=P(5WxKPM>@ilKlH-U5jQkjS-~Bl(0_eQ9iM1Rv!@$tr8X*j z8_LBMu@4yXE(f>2QOFH2=o!l=kyZ~UFg*Ra5o0Ros~sM1BNv|#Gorj*EN78`JDMEp zfir-!Hi%j954s9_&NP1Tf{EZCKm+w-*(&VS?s~I-@y{Xe5f$Zx3iSNVB6FU5Wr-e~ z%3_Cn@pd6{b~dar*eqe6uMYbh%vUO z2i+4YQM6WwVTw2yRD#>03igrB58zFOxkY@03!?}giG$AwTH|i@;XB0>#(P?t32dF) ztyPPE`lS)ykuuCOg<;E%^RoH4&6Ww%{LKpuGaQy-kh3Jc`N}nDXY(hPTJWw5B4;>` zuiq+n*>R%!Zx91+?*Ln^8I)LI8%z%pYt2VJ*E-TJshFyE?iz46@f2sk-|W@(V3S0z z)N<4e7w4MwR^-Om^DEWd`C-Nah=(xPS{4U?rt`exSGMb@@7inE%QE7_%_NCzl&om$ zhRhp$^*cQO=;vZ=+C-LtYAvatW_{9T2Ygvv8%8P}cLFhmA>*HHO3kiIOx5WU!ySJA z>-P?)7vJCQ4EM(4!Ts?El-q#+1>NUG3i|$dU<%LmFQ$Iw-`n>~rj}v9W2sqeKzL$* zxLfTfWh=sC6B%C^sp_wxHHR|7g3iGD-ZG9I4+Aj3Q=q zdt%kz#cjKE$G^8b=MAjSN-Y3Am_%oPb(Si?TC$4 zky-u5nxV?)mWkT@@fy6KGCc(LxzXv`4uxjH<*Myg&6_?j>H)9&Z5i6u1zPD>VrpxP z-z+^FqcY*9r-fhiGZQ+20R#0((2y$b&HHD88QfCB&!*UZ%KijNfFO5<2dUJ5Gg+8% zHAn0T7U9^EC)G?B6IKkwElL~vU5(cTJesGPLz*Vt#R8sL|3PFJ=|YqXG)2RZ4y0N3 z8m>65dqDlQP#>E2-%1u9h0~ z7`h^ymKzi`39S8<*4+e^^!yorwp*k`viFSnG&rA0gpB|b+1^LeDWr@T1Hs(rkbiewUG2=(-ZchKC`$lHQ)Zv9?s^*}kp&djAF|$eISVl^JiJVGCidWo? zS*Sz}?&ZtX`_=CSZNS-hI9Bak>)fp2eJ!y=S51!lA}#R&QJ(1}jQ7l?8>l|-jOV92yvLdWR?0@aD9bd-Sj&-I*6ou%3mL}A!)4Tu4> zFF8|T^kfJgi_D;~Taes;xCjMz16yvlO#!c@hBnbV=bUmYH&1_9xvC7TA%-W0KOO*C zgL*PV=T#;3;5^ciTqR&nRP~zQMvaX*m1xgZ@+QlSuX}4}Eir2V856)JZ5QET=yZEO z0NA!BYY5_w?Djn(^FpkQTk}j)&JnF9_H$QxK)9a9Q5BcGacbrp(P=s}4 zDs*ggi!Z(JlcEQIh1s7n%P^YD-UEdeKYNqjvv;z{x|rh#!AT2>O#?4|0FjD0{3O1; z_rOo-L4<4=D4c(dl0JKb2eG2RX2WDVN#`5|U2*qEGIwPz4S|tR4cxGeLh0m6~O_=hwGS<3(u{QAi_t6+rQ2V^M-_NSP zSPoQ02C9tPOw-$jr%$WED9D4#Sal_YE>Pxs^f!N0~9N^@!S104#4S zLAVTK6ECH(+Mf7k&kOMef1E5AIx|Qijg0jsa zb6{Zrz7z$TPSNvqqkSl(BMVD>4No2=EQe58aK+14v0W4l2bHg6Ms=_T{sHX%31K^e zzj=^ykNZXDdvRm|wjJwi=I957le@(DllFdgzV!IX@-%yf5 zoWAS>23-WnY22$Ck_ZD#qFsbmMa61wQ{s;_z)Ig_7 zq7)(aL19k5iYU`lFe9MzvmMu`0h=}`Z%y9r-!-@N#m`-nGSnMaHajL!G|7t-ToC5< zDJW9v`>wLPs4A~2BB(8-+;Z;b1$zKHAkdtgXLtJ3$CTGm7nVw3S~xkhEYmI!3HzX% zG|8rJC%flH_v%mx5oS=e5T!(aHc9%-EbAyI2IQpWERx*iS~l*8kkN|=KVZX#_RXDY}vY(4jLG0@)0*+jXtATl!o>x#~Q-D|XFvS;iA z|74=rv7sPT$xC!cO*hgO0Z)Z-5_ijBP}Oye;+diHDt`l42~_orXb1#cE~gQQzK(af^HIXPZ`PZ&L8)$l#jIW>Y-iKAVe6b!Cfq{f&)nOKSMyZ(+X{Ia2# z2;?LIqVv-};8AKNsRMuozp__4FvfPPQZ0l5aEUBKeU@S&Fd{YI?`~n33Z1L)6ou_8 zl5<7j;G+MshPM->-if-JBt?vNOG@i*v9ID|dXM$wLIEX7S6y6x)(kxp{za?T1$M>M zbvB-(yn90M$+ea!NKgt~9H9#MX_A6Or8Ui|v zn5)MIqu!o4n*~;X)8lCofCQ*1;8lh0eU>h=E)oBc34IQ+pyM@5Dkm}O}V=(59%XX zB5?&$JZNc{AElH{J9_CZmXM0YO^7Ya>W)QkgAl-MAS1+o;f5;aBi1A79p_xNCPqaH z=Vz8Wob*J3KHs#1(ui32@@2PSB7{;!0>N?)2^7V4Wi6bY4epkW!ID!-T-oPx|u@{s$I` z=m3fpJ@~DEKmXvDcl7D??;*LjkJS!+%((ISV~iT-zQ?5-z-m;iR9mMX<_&x(73K=u zpzI6B3MHAbNZGV)oxv5ibSkMg-Zg?T{VNF&t9NG2DDBd9_&93Nmg->EUC>JrqAIP6 z;L@<{#%G3XU`QbEk}P+}hK0j_HX7do8g%Ra;>#(2%sUbmmXK|8XqL9+`4yBzK*_>* zNf%YhrEMn_z6k9&A@QN!-|1cdaCG(OAN+S8qyIy2VZ>hq95rM=XFTfn;k#v1GQcL% z!4=wKg&e`BaED=h#@d7I9k-z|Hx+5Qwd-@(Mx|wLHZH-asn2EuR^W=N7NRe69sNBm z66sriia;ryaT5CejecgwWB;b51~uIw-p>`gx1{>;P%+k2=$`k*_5qd^E9W&z?Ke;9 zP|U~H_Ape?7q^<~+JDVl#crbgJ>$KOV#?0`n7zttr<#Y2k_vCVCh9eF#9dB7q=ULD z$t)&Xs@lmfcd;`Lt%pH$bItrb)n|7KIEN5_CdKU=W_TRo{~oZ=5I4Igj*#Y^cafVG zd^f=qp7$w7QSb|CMqSms;6Z0#1nFfdsu2dEFs};Rz>7|npmxLTCVubYSXiYQa-|1U zkdk1PrUiDwjn_WIf#JBfcG4f|w`a1REoh>aQ<0Mc*XDt$Z`b*4VUc~MnZ@$F1wFmY4l#y`GkgT#D;5i4=vg_8aG+=nloRYy9t-b5*D>2ZX zww`-Z8?d2LiMItu0+K)nn(MGo#-Wn)Wlt}y$tqp4URG&*E2E~=%;ixSO;O*(2*T`! zo9>?VOsvGgZ}N|(bTt2vH(N-H0ZneC|jP&NVTl zRrBgsg~ZaKFtC8yU;3CA9Ycs$36Nty_30w`C&1XL+_RF|Uf%7y66cV;B}VmVWwGAX z?S>I8p)Iht5>i@ztCGeT_lD~=V}h85F&3xkq|?O&F0y@Ha&Qp)U>R_5bSo}A1ZHQ0pvk&Ha6P#0)a&BI=Hy8*{f+nDd;b!> zf+G{Bn9ed*`{()+0~6^AzFj4MWHLBJ`&(d}?|ozSga7a$u9awl=x^~zeD7_2)_ksH zK43-=aiTD>TR#xJX6FunH^tYtQgHLf z0vVjXZS9j6M*JjU>DVi%N|1>FyDbis*iK$w_!E4UCHHye<-BHadiTO&&=cpP=)~i2 z>3#(xqxwD&I!XReAqLu~ubPAQ-Ok9AsSSax!*!MFnkn@<*iqzjeefac!^<&e#ypw! zcg^PA&R_;Fyv;shz`enL{^*p=CR?isbmr^;Ql;!oN4J&CK9?Xf3H0ggOzWBHXg6xU zM4hH%)Ejq+jx9dL7r*b^63m{t&|0hD|sTxhTtjWDxIR0ob0EQ`P6i z`&N10nZmv&Y{B(covyKikwCltA$_il1`c@p8@AM%TeOLwy^<@4OhHN|sa_Pa%HAnxK^zrhc6LBNKh@o7n~Gmr?!|nH zd>GZ)q`Qi!q(e{IG^2ssr!tSUTeRHoy}+A#^V(js!bVUH&v@H-HOs~uZ$XceP-1eXy65x-X-rf;(sJ`e$_O=+)z=%uM5%Ta zAyk_cejsHldX~V=!Q!i{#aE|qb~3^wAK_Q|k!Fl?0Ep=96;+JU&bLf~kR0NaiFMFB zB%ELoPt_EEi59Oi!>Be_S6%BD7&cCWw5u-A2z$w^{bw06b~Fpq-*g5?(|)s(NFb z44fkcx3W@;-l@Kxif>zAF@a7R4~wjfNv5578#2a!gh@2V*?~g8h8@+xD{t1Vk~D8T z(F8iBbRGoLA<{b=v!`BSta*yb9>;46J7ActS>r8R-!P(4m?l179HaGC z9Qcoh-6~&>TDgGBF@_B8;{B?-+%RvrsQ!L;isq0+)QYIdv>V4TWF$KaewuOicKfaG zws*0A+dEedYbum-bDmAs?)r8(ROFQBMAwxtcDU_sqr0-h!Dkp@Z%E)Q?N=n{syS{siL&retC$kPcb?< zCB(uTzq(7t}wf#<7n_p8=>KSyZsUk>N-&VfA;Qh)&h576X*u>cVP zNsb8SCp@BY*M93=*DQ@If3NIwXZGts9wHVNZT(mfjHDP~yr|?~e}N9sQWQuy8nDw6BuGq9gCRcN! z)-AmuJHQx=;Qa|)Mb&o6F>#&X? z=s=UpoRN(qPv6oxVdS&y=L_u<*{4r<=a#HCt1~1W6ys@?MuA0913a!Gd`P+LNtHpDb&^#ts zH!x4jpzqpts9+Y3LKN90+|Y3)N@pdr%V-+djpc7C{=2dB$W9Rb`&KR5f6ItTl}eLA zHwM~~usC^L_4bRc#XmiLcWo8rU-9&E(AfDP8|+xEHCn`p!b?MuK!Q1c#9E_eh98ty z0k1CM6vyqb1zWp}^bebWl#Hbp*ecr63reXO4<+9CIRw3nkFy3o-rRb=vAK)#7s+R9 z8CHyS<6RuqnVE^QpQ)cmzJfk+3cooXNUW7t*3IO5fN>liQy%Ws^@@8gPge9sw@mmm zqK2}DZEf$-Y3t5!!=U1S6OP0925`PccTAs&y3&ZaeN-g~7XZunmW(C|ENLNokW{aL zq}_OcYryD>6wvlLKPXcQMBA0}R{qqKDxl0l#Vk=`3}>6m-~d{mpbv3WjQ=n za?Wg2M!EuaYU|KfKcq*EY)4}|D7%wMsotcu0gMMhnvQGl(MpG6)Eoan9}wKY=7SF8 zK-AmG7K+)d-Cl{DYHJmGOkveh#3pty@=n zet@aUFBp=RIKa@J1u|$Sp(;{kruAvx!d1BO{MEY6uYLx+CWqaDH zV2^286?qJ64eB~^N_C~=6--J1qtVoCOy`(S9(4Oq0g8J(7Qj)XmitBz&M#av_YJJe zwS@P0a2F4MDTWZ7+_hLyZHpq`-CmbP_V8hLwx;WWfmZl3DQVU1{LGmZD_C-@cY^am zYb2cgr>n)Y@9u2v?``K4h`PKA5sk1Bf?Dx8B)kOJSm_PVUXDc-v0AL{@8(T36cg5` z!$+3@Dy+RL@7ZyTnb{q4vmN&52YK7VI|~tE{DXmi-q;B8MuE`WZ#O5?z{X1z$n)=B z|5HxHiCg0rD{t*1QDPg+EBE^_44FX{AqcUfwE>mfiNy-=WshA^Uc{R`*=+GeY|l|x z`7iLKO9QDfJGPek$xSomhWYSft$jYE-4TPL>K<3deq%Fl!Qg&8+uym_Y28}e-CKLMv90YjjheKB@V3T=U(=Ypx2&cDgAf%-`jt(|8%MInp9?#9lSj?AgHB( z&YgNdZtO^+I{+sunN6q-BsOEDlK5s<#mgRCnt-TW;lQdxh~69p7HBUN$xKGYW=;BX zJUifgw`T_&w4}a&kC7x~)6nyA_=O3MMXt}P34nD{*@pXNxl$4i^!7+%0g7B@REDabe+#RtqFrL76$_y~|j}HXlAQ9|^ zw>E&FmkqcXSV&^bQ|_B8zx%g)p?_6KjAh`rTEczvoIB!JgN zFoThZsbhLaWjHf{N^kN*<`9rGS^Q>v z3c8DUqktNv+;sGv!b+_>VdeW~PlvB^;8OfT+C$4OI?0fKMga$i|DWw< z_pJub$Tf!9mxF_WTQYeP4C*)Z&k-FB-^w>H-%izrJ0zQ7Rt1jXx_BqH7Lw-I=S+CACcw6&=0Gp?Xv7e z`@_G5@|Qqhsl)3w2Wk+6}OktXlTlU~iQwqhCdr!8n?mRoJ#%bHu}jB+UReoFqd z+`06$^9y-uipMmc_~@_#J$nz1ZQIy2ao@LpJ?~6}d}&@5kIl|V6yXU?$c~No zDxG!X`VCCus@k(#XC&3n8e(gv#D+KQI8_56nzT&-wpCxj6O$lMuYZPK33-WMcr_D1 z0u}I`_fBxj;XZ;?bIMbczocb{$Exi7G+~+oWDX;OlI)M?7aVor#ijXhe8@_0b+7b_ zfY6{%KXtf(nFy4BJeyKa54db+@EWN%9}p9IQz*FlMy|i3IFy8B0w22Qw@NN8lfcn& znTE%)(8E$J$4+yxFG-0zwOY^O-2Z~nQK--!#s8o5Fa#*XA_>;R3CSgZ>T?WnAl=OJ~5Wr3)T~NEJ5)veiF-6n7I0p43+|&+Zj}`XlxT zpltybQoCvIcnFuXg`~sJtx&`$?74QD_4i(+w@M_ImdDnSQ*B}%LbEfSdCox&Y(bWp zz*_>~BxWn@vd$b+K;2(xd1#h^_o?c@rMA1`8yE>)L(NyD$MUjwP{D^P$Bpx;^*t{7 zz-nbINCpmn7<1_NkQy%0iPaaY(Z|b-aKYA6jfA|ixGFyQKvaZU;wmY}S{QVkh}PFQ zZ}tqN6=PnGhDyUGI_atOhu_+$Z@C7WTNz^RBJu!f3*;~J>^6o)B^ubdk}QVNd0+{Z zZBc?zau=@PF@}o1!c<><%}QOEpcjEm)S0W|5Zu;(RQrv9@`NTO+=>K=(_}?WxegQs z;=;$63MFN-pach_P8VMMdG;o?t@*Ndusw~e5lc4ZwY|NKEoB*36G0!qD_O-%YY=uJ z?X6qwg6bC{ilYH%#g*Sw0cw;XN%=_JcuKRaJh}hx-+tTDamSED_ux!<=iWQtxc9AZ z-YNEf@9U3mf8*Xe@4UrGZc}8Byn0DGVx=36N1FXd)(+^Xc~?R8K|6UkMk;tLrz=rz znJoI1GgM1-VaOkoo_IPYtWytdNZxa0(@IrwH5T z!Nr~J7u)aAkuL%kcy^)XFR4(M#Eu0p zcFj!}gmjm6>@I*4t8-ych}T!yPsFHVT}mb_lF^w&Xx1)_=P{vX;n7O9(ZIheVK=8N zC`k(NS{5G*`+&npeqBk^v$2Fn`A1|jSenv|42zZsQIb+8gB4~7@=R^IP82zmLlT#N zVM;r)hnrYALO%+zbG-QC#tFLkXHoS+hwO8kN1YPu z75cRjV9J!zRJ0ApywR2?CYIo{;;{_|r>OCmA|1|1)HofH)CHj1JJ77u+s7xFt4l}% z@k$I9n~e72;Urd{q<4*LFm?iEI*5ILw*-qL%OmR=pt1_O?0~~1W|6bnrJ>9lcvs7- zrI>;uSmKbXRI$ediPW@k*bj{CCHAjHKnRPEZ`c5yD5FaqG5=R%h*753eRG3E#WuN2 zt2YX}FxFSNs#~4@H*&qlWiQOT?ixQQuxyMd?&N!)D}bb?{d^XVHS&-KoYN7Z^m$0)l2iYfjDceS~g0}nmS2;Vq8#z!EQj9wDe~J zJlT22r4}Lyr$y+0Stt<@y?hMfiHuB|4n1Aq%4LDN$3{Umi_Lf1WO0^%(D&3CGVeHG zycv-~Jij!5z({Hjxx*M>X54)6wSXTHQCvP6&uy?P4T+Tu5WYFnhH0BI zP`P&6oluQzR5Yqo7Jp3D+`~W&hFcd#50e-cIyW&3)vK35MaVm>&>}@ckeis0vBqTa zOS*vC<(h;Weve@B`u){ZaW{>GWhcLYGi0vQ5wJI?YsifZdC?+&QHVLTOASsWr+eJz z@S0{3BT?7AzZLUB(>7HR(bL7Ww$*r=L!T@+)y_a#XLUcKbL6F-ihK?q2(5IZ5tIB6 zo@J@$YqzZg(W^G!wEm$G67(a#BW3i?4>!W2+#O~_(2dr_)i&VS3rsy1bnC`u2D zok(5y5TjMrB&&{pRT8Vich<#hD+w&{L7`$*RYwMz{hy0dP;HP=~Iv_XaDp~_r@ zdoM!;IP*xEoQ-gSFu&jb8M4ji(D`X>ou8f|qkNqHD1A`RA<%q+hf3~$aZDEBk& z@yzZh5L*HLuniru791XDwj3mBRi-_`@0?>#q&I;TS`|wq7>wa4Na(s9IA&02?~Y2- z$CNWkAE|7Ynyi}5{Z$;iWMlC}?B9)76@`ACYG5MZ?t*8HqAok$ddQF56%6>IT6 z{3>XF%Q~4M$8QNy)Di}21@)j5gzBocKoDiPox)VYQH>MG%SfVVhM9S)pZmi($j+$- z=P`jrpuAu0>O`$Ix2?^eSlYAl3q0UlhdW{nMu8)-mJn?MCAoQ&u-9%o0XzQ+z+9iyp_(yKih3nF4)5m~2O$Od| zW%P-nNkLWC7%78U$qvda$Es4fGZJ0Vu{O=wVl5|8G@;(G{xI`oKhokrt7vPQ8c=g#ZaZXwd zmEj`dlU<&w+qZ-w7Ntvr7=2`&oF1Eh&&)Uz(RIP#opr?*c~4n^%0z-0henb;HUB~Y z$3s}&)B<}p$ycMGG7%zYP$3!=FtczGn~W9>x6q-;OG+LUW2?fVEZH{cxz>KT{Q#V! zOb)#!%@gR6@#PO3TtcH5s*qvkNzjHhxTGX(i{mc@+gM5*{Y|UIXq-wJMH1P6Sgcu= z%*bI?^o#6~YUEYi5*+#Lx7uZm(*+MF3U%YoX1|+BOWT(B5tL-cl5E~n)(8*iy4OEF&3@d@?*=)EDYu2KmI*Epc;Wy#PNtReW;Xynm& zcs!mrd;3Xm@hN6S#@4a;xv>Ri8;O1H)W5oER^GVI4g^JrVway>GX3kx8NviZde z`mp)g?wqQ%>z~33_v#C!?eOFa*DU_qeF|I2^ivPCRV+aT1FiEvAzptHXQ?K2iyhBU{~3kjPP* zp8Y@E?;R{|KAhkD#GOz3f4rYAkb2kKypQQ$Y^locyWVg8A1MEKq~T2N^Aa1&iiznx zX8q1y5=C2Hcbn|kt+*i={+s^E*_Zpv%i~a7fz1bioO7z>&cE@%DT z)>c?rYs31UGapPB($XCR83pk3VE)2XXpAZVz))=PP!YJ7O}Q`q&D{;__gIvDOH*E1Z3aa2uz8?DA6t+(AF-}Q!K73`2( zdu%rQRF?x&TAHX^yKFXF*`>B|l9sut=PBPdyKSMYwWSN#TJ?5zADB6U1zM@SsioEI z-R>xs2`fDFXW6$t$p?O!{CIi&3aW@)zlDl8aO?o{wET!RQQAQ^9VX0qnJWH~)V}T7vm`V#vUL>KN?R8iS#uUCDHtQz2PZbW0PxQ-73S z=Aq2EzoB6@T}eE8_PGlpODD^#Im4R)T0bFawrab#LJMp1>|!tpR@i=d(!mMA+$_>Y zN{f?m1z|K$6u_b|GhZEiTj7tYU9b(KA%g;~P~63TzZJ7|4E!g)X@8KHX!hff25yG{ z-b`=U06X|(-Oln^n=ywiR(0I8gT;>bz#S@9ZkJF9A*4+>Hqpr15^JQDqIkh8E^xST zW!GDOv3Kwv%m4o7hrM{5NBxpN%Q-8U&kYRDkf1R*X?aEX=V)}OEyQ_KN1LNDE$~9J ze&(Wo;fpj52-q;fEIlsvV@zRp=KsR+E8Rhjm@cmt02du*lrocT4$H(baurMWB^rZI zXC+uy3}|mR)`fcIWAIF(d?nuMn`W|1t@ng|;u@ zhfz4)M^2U>hs&$(Uk4bJ@O_n`y(B!6G}pFV6ImZ3lhVxcN(qlqL+tL zJ4ycDQpz9cO9kl_xbnB?j0K;Mz@l+~f~jw)YcyXnjkuNImg`reFk!m@RnjY@B)CW> zR+o52&A1v!*v{&H{C9NyUK+1u=_7BDB*)aLDXHqsnxm#$FNOUU14fE=0lsEgdbHZL z%T4xIH)%P;pYCbz(@h?Jy2*o2H`)DklbzK~o@Z|Yhf67@6cC zRq-6v?i$w`_#E)pUGC(hulRHDWP|=^^p#GZw%^;@t@0VU97h8r%eMQvU(icY6Obk+ z$7cji5+rKM)`SD-1sONha?4{pRD3QhN#Ug`Y9EA+QQ(}NP>gwljq zHKa;6_J(7zl>GG zpWb{pf?e&tTK zmZAKF@iW3_xF|QymrWO-*W>{^c96GDT9*mq2xg;^U z5VF}m1Im)kP?2ch7{g6}dTC?#UE_UVwX~`Pt8E`7k~n|SzbMHCy-?E1`!^pJB+vOW zH#q=v1Sg;kEn`93=iCuF`&Yo7g2Da8Mx{Nu6#J4kyTz73H1^Mgn^1o7%<&}dC|1%<}Kz5*CF8wGQ`_vq`rM?c`T5ixXC66|h{xrdpC6qu2-MO!|M;AOCrmV}m_t*TavCyneV~Q!A zkz9gupu>XRBPL);krO{^Et*B=c|})p{6#XCgaIlFruu5EvUzlRGR02;{>Ts4FMReH z13VNQzj}2>nGh1jWII%0re)=z#ck1`$tLr+{V=BQDLP$$pdU6#-8i31{b|=p2}5yD zpyp36ETmPt8FsmrK12k+F(zWDZhpcu>~Q#8_ecDo5p2sek>P&1Dm*w8ChN(2CFx` zP=Zs#k4hwePer7X{MTDQg4O8{VHi8)A!FkBRez3|p%>DLE4U`+Hkj?NzEfApw1;1J zovbMYN-x>Q-H`(UQd}*@WeF-Tufy5KhohkY4P)%~wTZYL+m?{(hn{1uBqLp+s4ZfH z@hw2|6fNq$=Gg_rS5|fv6QKJ)QkglavSw6^w;&LIF1I0Sgm+T0n9D1*?7r`JT)vyE zwGh4;(AO#sB-H0%!syWOpeY|W{hRjs#><^R#iLLBh@5bauyAaH_}GRUd=5?EOq?D< zP2iambX0IEW0t8fewL4{&_Yy91I|>PoFfqg3(9uOZ_5uGvM~vMi3I!J6Qg(cj!}9k zcx7aN!&tOojy_26of4-nkq1F_=y|)nN$Rg*O_*hS068#ypyZWJpONA!DF`75Zj=HV z2NNSMPXQNsIBzY1o0N7czgzA`&7#V$7@rar^xi_GQ7fBJNm!vO7@W<^9l#_cE;*I(l3c?9E71Q1SeD z8jLE0Lk#XeE4W4Cv~icfLIsj+$L&mFTFt%)4LDg#68jp}pVxvJ9vuqPev|=1U)v|w zk?clP0O&v;bWs4S*<$6`=R2Ccd#VCtq+VHgVg26Lz0cm=>pn}nO^c^b$M5d_+=q~V zV4~*a4hi8m245cD<6A$_^Dz)D1QYXH?qa6_j#~>qBllaWXgDHy3lyxbg1(+`qEL+X zt`v_%c|KiuyjdEcbdbB*LWI0U2m(ry1DxC+Gf2>XrSQQsA&z=S^oZzk8^s*-L0Omn z`r8c7)=k*I5qtikpX}UH+$~DPj6j=RdE1pE!+m zILE}yjZlhywyY3G#qgNNS*uFY@7_rlaVIp{2o)3B-s*j$IkrWZrSO?)2Pu}sosnQ~dX|wRi8F^pEk%axM$D!{&Z%?psbCpfDbH_iQeeH7=wvnB2#BNpFig z-O^~aaRu$CDSS!&Wv=}*4GDS}fJArxrR!70n9`1p%vzLt_Mq}=KbYygTw+3uu@ zm7B>VC6=s2#o*auH2xKT6HO)nU93)24A#x{YBm)Z?IzDPytw%Z{Q2q_DC!IYQQ2!` zcvCoRlVfL=o~S|-InJKBhx5K#Wg>zTV=rg4Pr-evC`f`exm1KmS_Qejdq;akR@yR% zO-FioYCK>Z!A&tJPz^%Qbu}J*avzwjli>oQ4fM%nUaTcMh#+!*Lsu&Y&-8Td8j#jM zIJ8h)w7KG|Q|AFGb<;+W%C>Y7?M4AGt)X9xN zY#nnad7*wnBHJcXlf!rmH)`ppQdkv$Y>&c-$<+ZJ7l#gz4;Y{Y+>BPz&KjUV3Y=7v zOE*J@SOBn0DIvwJw642%Jow6)f2AzCnf7k5ERfy?j&8xc&gVX{mW)~*ms{^G>qFy-th zJHlq!NNHuXt;2@MW-dGPQa7wNte7&Wpb`|)`JCCi0^i?!NUnavIx#uNgc`ETn`pk9 z4`xE=qcbjly5eT$M8huZPD<|4KZSf&#To=M&)p zs+f!N?d|V8|HJP$(Xlnt_E{QIe)M&nXVmcdn&6~j&lHt28DOmIrA5NyyE3BXr0b5}6xL7p8#WD=?sWIUJ`;0EjYwHB)sxFjP1Z?@s^56Lb1EQkZPx ztM4{;+|}Qx*{qG{FE$d_xgo0Wld2qZ#AO1$!=!L@rIsvUA`8a@?(GBy4YasR1#pm$O2wrco5D%>%x>xAk)N_T54MgzNn#yVD;7!L1fY zlT34T>2H7jOKWp0>)Bn|!iI26XYjRBjJ>UY#puk6ePR3GoVZ4@xaSzBq|c2>

FZ zIr;R`eOc5*x*>W|y-;_`%8s%=^4_@Tb`y1M^!qiv@}fF!+EhapI;eUFLLx?{l2UI3 zJ=i1eYop-;Qqa|8JF;cJ=5D#_7?C@)l@(?MW%mT5DE+eyDmj3jA zNB!xG$awK0O1A4wYrJW#79CBAzfa1^ooKmced@*6uR%KFi}c4Y0y740Brd^{m5jI6 zCgd1@`;zT=$YM&~A+9wxMhr%k$u+!>XX?WCp6E`x1(gazc9*&N|H;DGwW@_%Rf9p( zo>C$mV1Z#ZVo$l8#27E_cEsVAIuk|9UoVScyj5%&%q0$%ajTOTVsH zolcNuKz^+5?^p12qrV~$xx=e|a(6F$WBuf91IsJ(3x?EAwl9CXSDY>9Q>TF`XE|S& zU{H(MCd#3N&UjE}C#Q}0POwmUWjxG{Zx#DA@7)lo$044voJ}%DV`*!fxLj_@29W9+h4F1dF|njj>kJ$tfwG zR1hGY{Oe|2JUQAmsLVBLBpTj$b&(p=f5U-dc+E0-t(OBDJxD$n3vn8HG&ClzrQroM zy~K7Jc+VO$9!oy1lBrVz=XLs*fq^wdWji8_-+Z@<`OH6Zr&MI;Z z_VOCd{QmUjgYs!)`&J(sNPeSvUNurO?~CXH&krVq)Z6(|M&yv*QKvl#lSzGh`hgve zXuxRl5;PAnKTCR^IhXs)Aa&va*GWeYu1WBrl#>C8?;g;g^5fj`OPqoGccRrTA1D)- zM&{MLxF9QUX~u+CaHR=<7uNYv)yy}wtjKeHg#P&kIl3?9x`Z3ZvB5$Vt_ zv6o-f-2ok7S!Ep0|MA!V>$Yv6Rm+lZGBcrV&SICfBk6)`bdtXI$!&Pf!DFe?|4P}C zb#kCeN3zA^CDzS!$dLL-0VT;t_ocs?%)iwCEh?(Rnqp)^s{yG4R{U@%f7A3+;b?dc zrdEmR|61Zu_kH0_a>ZQ6V&ViO8+lED5~4C(lz0B??l-TWO}6B3c^tU{B4Z)IH=Lmp zNc`gS&p+Q(4@sL2xFbE5 z5M^a3?yj8B<+aX(Wi}JdQsB=@AJsNTl@J?(YUN}7D!`;#$r|&af`c<F*h!K?&0au1G5*!d>lV;rbwVodG{;! zscK<0Fk8n1yRA+}kEzQ=1~o4Kih>(YF-iSUnqcpA$WV{!{`Y009600{~D< z0|XQR1^@^E001EXmkERc5VzQQ0g?g*lGb*qPq%M;0VDx`e3DyB!!Q_z?*;!u$$gt1 z=A5DJV9M~qfv}3=T}Zxd#pXZ~?e_0YyRCL8UMBCGCr>_-&-bDUzQEX8$pR%&i~^8M z@mg*R^inOu849eUlG8>>D9`~cnwQsCIn#tG1J6cjFs=q0c#^b)=>qMX(*$G7b|9#Y zd_($hql}<`&M(atYsx<87H}HJQ!KzyP94P^Fw_GPosgUjNd0M=9>5uf1_VfFaS|o? zr|ZB7`{#i^88t=i4%)xzq&sGFb_|F1-qu60ZQH2LdJXTN;J4M&x_@d|%WhT-P?>W^ zm;vgPDc24*b&f|n-Sir2-O3MoQv+Wd%133a3l^|Tqaw$@W6$gLk5J%&7a~XfbMl(q zKU7Oprg0jFNfM@$Dw&eW4Vm1&ceh`h?*xw<;^go@F$rT&%&Pc~#50m*BjOoQ_THDD zqWlK8+kOFG0|c$lU(T04f&qaFET{pZNreCa#g~`Kf&n}n=w@(@#}ohnbCv)A7ytkO z00000000000060xmmz}zL;|L!muG_kKLT>Cm#BjQ9~=|vtGe&U002`_0ss^M00000 z0000000000?68xbu@;y4g8?c74S4~V*LeXXmr8^IDgzIC0hif&0VtQBgaHs7lGb*q uPXPb`VFCaE5dZ)H0000000000006Ihm&=3!JpnbB355Y81_Xft0000MmzE{6jQmbi{^-#6VQllo zz~)|?tOr`hYa)a=Pe-M{-oz34gGg$qIrJ148;f|oqmW_j+jcIgvOQIlie{$k%5nAk zZ(^pLD(-T`pPmFkiP=&XFW072ze*L%OXcxkO>@arjcCo@2q2 zXGR*AqGG0_l8esW#1%hP#Vhi9uM}S3N%K(iWV}^a33sf+4=cM$yO^7x^+A?Mg7rt1PQAnmCTYu>zy9sq1P#>!6rO+ww2{tb9|K8)b8_knqPCG zk+;3a$=4w}T5+n5D`R@8sJXwQiT}4!qxTojt`sm42=;`zQ zrRY#KGKopj=evLA-0#FSfM4d1CoX@kVA8z8^x|NtXJ+uAX{K;3aS}Sg+27m#^P@EQ zbg<9v#r`(?>VygL?}?^1==7j#iczBWu;t>Z=hmN|1xUiSzvl89W5bP;os*_Ef2h9v z>#>KRm%Hc2q5R=g@$uAbpRMg_-OAELd|N1!xYyp&mXO?weY5V9xx&WX zh|nqqFFX%cRrYYj(^^kUubGuLpk^$-%|hqmPw~%Zt;|$3)bDQ$Pn7+E2NcgFUca}ol;v+Q^#bg!@6S?C!;2Fe z>DbXgvb97z=*Z-Fdud?u6YD%oP#YKYg|}vyfyk zkze1DnO60>=d;9TI^M(Q-=cACVk&TdB^i)i32o3ZO&c~H5T9+CDNGWF+}(~p2ayjJ zo`Vh-v}FX3%@Oe`3tgsuJ1%s7$6MSc)T+}-EWcM?oa{U}wD^Aiv8Pz$$^OFq#}^n1 z>u79edVami+KC%Yn(ex_+R$Ue8)rJel(m*&4xN;LZa5lVZPa{!yuaHykDl9_3TjY$ z{NfojFjuuD+-F43P-}^P5&5{W)H& ziEfC+4mB7%8L;j8`H|`S)0xVr6SncqPYcJM4pu%Lw2g0h`mE+DW5v_4r-7CEmK8T< zK0c~>N>vd#VC_%2H8l{Jq&n>~F3n#X;q}UIOIJ47-k40CC1KQL=$y2$Z1C-5VXIeY z$RmXI$1g!}fAap&xrJTY_h}1ThhHX}p*plm8}^#%{nH&)#-=C7@_-ZXi|39IZWJ06=Z;3#M!6I3sdt zyEk3u8vgD(`}OG~9VuEIpNb!{QU!RMN04jquXCmL2Me_sHLGuE2SQwD@K(>ge6!l9 z*7TJXXYE&TsQ0}pKO466cW>V-M?Al}D_jzN{E*i1-Mcj91k=>0x24K=_#DFCTCWkk zZ7$-@!Zt=#>jh<#w^$1O%$gFuAoWI)d0nz*gZz@TG|;iVS@pV-*gFq~(XJODX>}A z4bL6&Q6o1_f^SAkwj!x=WoZ+4UqgZOKz0KIt52!lt65g;L|a(!x-#0iruWkRcYv{k*9+X4L+;7M(ajv+c&Jr+SoA5(c3v9dW2PJ=PcKEw- z_IY=8wrlu4)3TATBJg}KYl#~V64cJu{mNk$`{chPDHVd}>t@LYl&cJLjC$vHZ(8#Y z^EGXpXD9E1f1yZ9n!Zf9$^=`=*Eoc@zLMM?`$6ecCJjkBCZUoU;Nbaw?HZd;GJ`l@ zqN>r^mZiY{6s}tOzZ$~xbyZN1hEMg0(wjoMmH7PfhIMMkLa{t-WhGNb@M#_C-c*(_ z$KoqV@wq?EV9{gXbT-Xm$p{%|uU)QdeJJeMAC?x9;G8}ZRvL0g*l{4t+Kx3&@iX-N z!l9_UXIe35wnuARcKXdouRsBtB~_0k1grY|DFoHVWZp8gUV zp0+l+KGF4G-)rUZ@7<%-U#yw8w6=-U#=qzo$b76+M=a}Xd+S4p%f$S$Lt|;Md z@|EVFVwB1?F8I1f7e82@2)p7#n=Y1A&{sp&5?{ANITJ@eAGbrK39+A#M6;@ilAq7+ zhFC|;o%Juf)ujP01Z#g@w$i)Irn3mp1v$yx`mmCCQ`ph$OSAw4x;OHKeR7X;4l$)ezLn2r>Q~u!slAb2K_CY-RcVT zF(ntIR?H-205K#4Pdk};(FIh>Y;|Rhp1VF1JU`27%vOy`=FoOH-`dgm={=*GB4T=4 zjA%3ncWuA!cYbP}PYz)ZLW4ADAsrzwch_UPT6C_l)@xv(y{@Q6EfqSN`GY*>RVCQis zeFwDM1X_x&nxB@--|VgL^<<5&JhTo+YlhT(x{kn~s}!*b*VG89X_-g-qK^Lsc32Lhlx@5{>mh^{dy%B4*)xOo6+LgSKo3GCh^%6}_{YtJV}9 z>(^K1oE*W%+BYsm%p5^s3E{vDi6$qN7GCkj#}R zJrpm4VQ7oTuO}7enw7MB*8<~;N9-BmhP|wqI?QeV0E;@$-PIFI^mT0f{C+-ybEZm- zXw}7nYOXTgw%Ylgo6DCl;W@4M0zlC{tZK{NNJnAFwkFtr_~I+~3Q_gkXm(rIx!8)7 zHx_J7mNN?T#CHVP*~2d6{`?rH`G6G3YpvRG7e(i$CMCF2xp4iM^Ya)%nGlcpNSe3? z=?K5Is!AWTs#x4$|3+ihXIZC$h%HZw8UG;vVX7dH72;InPqm|T0ezmlrh#Q06Q+*& zb<*#akg6*4DE*1CUJoY+VN&T=V2#Em4+=hL9YHgp*Ydncx9;UUJtv{4=o1hK(?4{a zXfbBN?OfWlK)wA`S5=J0;l_Q7AAe&jT=PK)hzTX|f_upROSLZ- zBjTZUon|@&2!;}MlawJvCkVLiWYHKGd@2BYR3FhG?Jl}HFIBy;uAqQY=QFnCwdr5| z9!LTw(exO3#PGAKiXa~Qc%k($9AC$iccpKJuK}T%K?fieW(Gr$0|3hi&xZa|EU0CPF5scsFi~l9L zZ9lDoDmmdM~A?}pvRdF|5> zRUtMm=~u%x@OZ|b0M8lz5Ie78k=zQ53js}sfu=CJmWL#`qz{AzhUhQFE^!E7A>$T4 zw~@Feb}UP{@u`xivPVjXsTD<3^)agSrm*{7XDoOLm zjN`@P3=EBp3$1WG_^7=KoY&{fYD(%Ts(yKK?GL-v4z#7}d3zFxn)3Uy zM)o#nqjwOX1H^H$~-3zS+G?Nkv)d@pR*pdt`k*iR@iz#`(6DNEpWX|0)N#gdr+^uGFGdY9+*wdSpwiROPiU{Pp-k=R0%F|T zg=@GS2NU$=KMHFswyVl3Q53Hd|17+)%X6otWCWd0%K-J6qMiWtQIx}^dtK#=hCFim zQ+~{O8!Mk@@WrE(5s0@zm-ilq&R-HP84L>#AxLUdg+Wb=cp(`f&wyA`c+VGCI)8^V z0oWFwz21-xsdalPpX-fo2fm*3I*zu>=YeJ4;5`3Z_F4~}94Tm6EOHUALw-4@r>FTW z?Il95Gb;tw!4@)V|NM;u0S1yuoxub-`J2MV61Gd)B$xZpkWFvVb6-U}G07pN?zg0_ zHNJjnk%;uf##Q1Eu!_a0?zx~!OjAFEi>$IQyum^aj|n|lkEX02uw~W}u9)ma&%oL1 z{rYlGm4<4x1k|)lbiHl|PaPC9VRxd--&X9)HvRKn-EufD)YGA88bs9sVWry4jm5+pWVB0*&{lBIIWvlvV(u(Sh}J08}QH7gUyoV^2n4NKsjbKc`; zKtkFVe@+NZq$1bUhD1NDp8r~rvOVR@5~k?))h-UrPl{Z(7061a-`PQO5QkFzM|r|;-ri_T_;Vw8)6cRdIr(VE3Qz&S2(3&i}1qLs;SPWtnSa#yqJ zhvi&osPcH>oE3VSff}lOQ2X_4r-)^ie|9?A2V3vC#96V*`BYXhbXKeqr&Xz8Kex$W zuN15~vz|fqnf2hu9ZrglFBEYY70N&QpG>IZ3GfaJLK{>627t&#AQA!vFtO5ribS3p z@-+SV0tH8UY~>X7za4Uo>ayn1PDkCDo7>fyT(kj}ELk>w2I&)lOa1uHf)b*SS}r$h z(8z`G+N9HNG9>hJahm9bZGoLMxf|J0^*Y{^1RWfez7mG8x(-E`o@4>)cF%BtlxTDU zcU(mtgZ(g~auV`jYIZM^PUII%;XL!sGVsn0@QyjKBpNB!JQEmN_#6F$kp)W4$K;FC zNqa+U80-K|O}Ktz3jV|ej;yXEqhZ3q$z`~T4vM>%yfXd?&}n~$g)-0hn`d+mAz9pz1d+*4Ig0oPp^czj(hV_2~G zY#M<2X=(Ae!3U)9#hHudfQvT&di^J<4e)xLhXNk7-~i+XPLoMtqI)5dR z*tr8d)WVE%bLdaNbS;@_*ysCTp(uAiTIWRdu1p|eNODEaZTubu737ahkLEZ8R8~6u z)x=zR`W>d1J|YPiMrB?McwofK!>i%%dc;v~$sW0uc9o&o^Yof>UI2|`$Hi@7$?mXZ zXin7Q${~N=Z^IEiHyAs<6RJ&!+k)&lEP6B6rUJx%@*2Mbl5red0QhfHR%}m{Z4t49 z4eS>hYtX?QU@XlF-X<{6XcV(B^qFBC)N~%-2J4D{C$~`~;hy-|in?~05GI&loCS<- zhtA@-8cv}04M03F2~_$|0#!SnEP4Urm3`%eal-HQPX{-tnJ(tgnaNX`O@H@bBa>RUY0Vvw!$QlZ4vuvqY9 zPX{OA@c^hf{Y*Wa;Pl$Hc*uV0B3yK(A-Lu)h5}kUvrP7%@_@d|N_}cCojyk8x1yzJi_72E z-{(K=j!UNj%xGo|#ab~v-%%ZBqMP3^UAM;y3EcA?PSX@@=Qj;lO>TtI6u8^m0WBrX zmriWr~1-WM+Dy3+;Iw z0f`2Bh%ICAe23uQc;1P99&}r5Vb5}(bHsU3H+>+Hsy$r3fx*Wua!ANE1uFkj zYQ+dZ^gp2Hng|RE)8Ck9q=>aJ`~d?m_IXSfSDWMp^FS2vusPXps#LTU`vc|OuCbL; z6kO1&N3NO;v5O_ffo2y|d>Jvtmti;Wa+4KMd|^3%0?-$szKx1!z$?w#b}0X?IMdei z6+M}!^?N1lc`ewvHQ&`Ih)us3ETKdGe+n7E1B`EuR) zYISb)6t8tpUm=2~0S)}5SQFV_e%|Bb9G62Y;?B4~!{~}a1`8nrW)Ne=fLKw$v>kus zjH&$c2W~$9YMF*il{%b8y!Z*w93zAGkDqq}@n*+#ekO+hYsmi*)>vwnln)Vh{1T=s z-+NQ|%VN8%d_i3p>a|f&s-h{&s<}Eh$7V^Aldj$_e4Ec`Y9|#OhfX`fmEnz z69#TpNa~HGgnzTJV06}d=reoZe zBr*nbM<-8ZdzgnbMi*izQ>Y5M|Jzfp8Vn+N+UPoAA}%h3KwtcCyZmK96sn=G;kQwL zF6~Av0vjqvqGMbr|9NCK!aPj z{I{Mc$qyFG4mp0Keeq^@oYk^|!YNh2vqJXpDaX(2*gBux^vbMN3*Z^If@uh3b|eBS zU)x0TpIZ~%KCw><;mG<;P@d;-ce&s!0C1Dy1~Dn(eCLr+mj8|YTOQFzX-H$$!)bh5 zg9gyVA=>1r_o_e}f@#y=y`k%YtB8ZP^{o1niciOw5!Co_+>3|0@B|Sg-QS$s?uJAS z5OQCwa*cMduT6^0$mCDPXOD_8me!MGK&{upTF!~bgW=XnJ5ruln0EZ992^KYYys5L zdv4Ye|`239F*`6KBq_gF-P%!`cM%AaCWkc?D6!=9+1p2b_%9pKmOpvp*2Zu zZzUt}p}FbzPvFwOri^|Ui<^U)O8)@2{u2ka{P|~98d%lA;<-THyQ|F}^9d(XzKhec z1W8VCPAAM*<5BOu+ks28&b0IhhB&V&TLYr+ZV~sYn}Mf!08JN{vrE5eZin4z<)}?&7ktt?Y+@3UhbroZ+2uQ=y`nl+(9Yr z1aha*f^{M~`kEHV44xXky<;9q0%_nruMj*?O-t(?8 zoHmt;Z4K`6&P5k6z1ny>%PFn=Us5Bq)IM;hIv1XRSyo?vZ}b{0E%kS4-q+{91JY47 z!xESSkHis6R=lt8C*?n2RFg!k+fKrRwMu#=u%{?^Pa||AMNEI^RZEukh=>2QTqX$T zGe6i~+Fom9WT>@oh;af`Nqzb}5%urOPUx_kR1g$QLc= zvw#6lI zp4|ss_6LREQRc6*K!DFUm z)S)lspLuEJqTPM??z2>7&RE`z_BZS1a|j<(rH)C=^|v>|c4`;6P21(_A}=`bYku(B zqi9fz*Qk#1F^k$0_-xLp$d}=1{#IKpGlDf%Bd9c(?=CikpRm14BrTMI@;~|WYVwH> zdU~)iJ)9LC5KNS-OQ~?3ip3`}Gm;+tq($MqE=g`AklsS!z&{8}U(tA)`DKTKr?k2A zVSEm2N7*Kgd`YZQxH5Na@z`RuIr9^l>sp^HdpJjv5RvzUS>M^jh1bQZ^O?x81-1WH zQwXPNffUwLp2#VN(+o>wX76!y5l}yP<=LmwkR5x4s{B^gp8K!pA8&>y$KK6!Q{=uE zB1%s%i>kEP74&&%Pa)14e~$}6#Dq4>*|^Z4`I}NW&)t77-3DhV<{g5~)JmM$Q&-Su z$e!Z&Y|OoCM~$zSKiC)&$+qt*vMF(-HbtX+s(T^ZCUuSdonLIWvrjcTA|22H?}~_r zF$M@5zs#k=mvg1VD}|X8-KoX4M5@9yl5!}Op?GE$Eh%z*wrBZZ-^M1Jx@-~Zw>7@L zZ?G|>0!!$yeSnv6@}w23A(7Xai!KA_jAA~fNL~u%B=bmpbD`XGM7d&+8xd=1K-fCA zWE5YnzEL=1wN8t0vjrZdpDmK@q55Kwik6McZ@S3qv6?}%_3BT;RkVVJc7nO+Q1axP zUK($O0~XikaF{0B;eCY3uHuW=huwpfp2+Su`TGr=`L2j-GciM%OFJ%I#+}mW^JK|mf^s)kGXZQjdXd#zjCES`GyOZ)1vN&l?Ps17d~Oq8S1V_%9dZU)&4oQ zv3z2%h|71s;+6vr*fndRmeh^ECSW%C%q26}nWfCFohW0x9>tfB@_)>Ya2^Z@t3`&J z!m{DOklWM+S%3^0%F#k`p3MD#yxfyshzLG``ZCEvr%v|T4weRI20h|qJ9lWF>k7hdqJCQo!oF3`95`0LtcJ!&?BE@>f%l-um+xslmwTenS?0*5 zbif*e%#$vRq_4(o5d3(h!pRJ&ci}~MW$xT063GwHDU**m#DLtfe z^f?sh%Cj%zt}(c#m>JoZXOByHX#U?V)h#BiLpm=0Bbc=?k~J0? zG+Q3d3U)7CPR!jZT~^{bWixDRu3J8)jl#Cl?U1z{?6g3lX!gv3L4blUK4PB6*ovH@ z;CCEaM~DY1O)fGODEi2}QkefHE*81kq`ha>SQZ{Q4r{f3&{l?d$v!O&50+6mtd4QZ z#i6oI&cV(|?j^LLZWw8?`O3T7&Vx#cj%X!wWiCPH@huJ?Qw?5<#U~maydVsQcGl&o zse}EywW8MIbHDc}e{emt!f`5A)L{EsrNWh@^P@HTI@r_0pjYwg0D-vV9LbU67P|k4UL4X6~B|FqzX2n$hd5W%LRO#kGgLy2~Z!7as*oESypS^mNb6*|&j|GPR zy+Gt`=Xiht=G?$2zLs!o<9#roXf-XRx>l}aIn8Wu_*xbMv#uZdSt$d;##O0U1rleL?xf99_V;j%q>SZAp}RTce5+a#KrKSY z2&+RhY=``56bgd!0I0!I=VcB{bJH$jwh zSI7uNS+CAh=zM+r$=UFxVtCcxr}<27b_7*5KaNdG^z5vcsd}zEkTIc+-v;h~Dz0of%HayqhDIH*N90Q{MnOM&&^P z-=keixdFx>C7*)AUkd%-Po2FIkeFJqIoi><{Px{i)ns7YTXl!S_UMeMR+dh7h1MWP zGIpzniA&vr*ECs8U5R4D&5rIvHEMyYl+W|NJn+XG;=Sgi)ILNM>m-$_*sf2(r~NG8 zC&G%a$ewxjFbF_TTIwHi@rT8|wlnH-`)0NtW1sM6uVb6Z@m>-~8fmZ%soF=3#Y?4i za|?4-An@OgD$g22BZBa?KsSjTmtTi@qqbiF7I8HGx$XiU&$$q87F1bK)o{EO@RT7bXw?kIsxeLku?Mu*SD zeBhc(ua1$I`y1V;HO<_K?xBG1@_R?<9Ja4zDmRjNnT{^=yyYv0G#+F|$;9gNnM@U% zw$>`qgnP9qy&X+p^SD!}@!$^wP=q^{w-Ef4D(zUVNNe`E<2U9`vyN|}j?ruPH`-Ba zTOTI6Yhm#U@1L=0m-lcd6&sK_3VjvmtWD*JvFPSTaBT&o8Yc3Vvvv-pa=1yqYqsfh zRO4J`RM7yNsJWJ{o*CuolL<7}bylz?yBEw?ZtC{;vTw@bUOvcJnHycZIiNOJ$*!^- zRX?=?wL!DXLit9;`DD3RT}}?o`yrh};WS%HXnTpPkQ)J8XDxhX-p$R+y3UoyK(^7j z>Gc>`TN_wg!k~w{YVzsh{h(vv=%f->SWyWx#fWFX(4FBNn!wNzb0#x1iG-T>|5#cL zFdj#+0Ud#Ud?r={*Y-K@rz+pTn0+W!dO4xwGvDULa-OLyWKC=iRe9(-ltrL?qiXx9 zRdL2z4lI92Npkc|#J3254O*S=Y&w903yKMPa=QO@Tj!rcl3NtJ9h@=w8vpbV# z_f?%ZStj-BfSQiu`u|t?xROj6;Qxw57yV^ya^_XHVtWCL%!x;4@C8R(%NG1iX+U=iSmUqx%?3NF7yHFw|K?JoK~ z@GDiUIzT^|ujUG|(7W58C<1QZ?L2>7{rVM#$jdw_q%YHi@z3XWN#m7zPK|@e^_7KI zSx#@CJS=!KHr|44J|5hoHS<-ExU3w~iI>K4D@G>P@HDA}zbld+6~2O`RXhJ6{FxKZ z5Xrg1d8wX39NO>qAj@OnZgywh@t`{kZm2kq%}KPRp9fxkBu*wD7FsNHUl=PUINQ5r z7MsT^ncFI+URlZJ3a#7Qt!AqHDgCmCHH&L3Ms<*mbwh~U)2jw$_6qgg3ovu*00n{N{PI7(@Yys>```y<5Y>P<3J zo2-QuIP8GMKkV?>j?-I~8>nG4E_YDr^X5@6k8JsM>TaY5`>f zb=*gSY)@YFA^XkpXH9!;TDIr%kTvf*<9=w^h)Z2Q5UU<(3Mnv3p#1o{0Cm;>rsma! z1cMZAU06S9yI|!d$PtPDLRIQ}GhXX$yJKx9&m&%D=g~K8&qf4Osho9kHwUo{2f*@L zMu~?_miUGvABsA+sq(S9b&t(l@P0WKNtg_*VF_NKYixDsrO);j+al_slWY2=h4SJz z%dJp-sb#eDsA>7w4}42EEzkHxVwu-p_3j`*dotA9$XtRNONJ|2FCR_zAAM8E@jfUu z+Ocl>;C)bIv}4g^wPIP;_337?Y=gY^;+HGpy{E+ywTb(z)yl;Q^AW;cX55P2wGsQ3S!k5tp%YtgJbbiMHv7Q3lOk}5TNieqN~5v? zY>G&mr9LEL-(Rpa=c+1fmoq>aAxc8T-*jx z%-iJE{c8i|jIPckGibpz@h!!{XoxdG?R#xJ{IH@90*)JvYGVs5XGHFI+5L`=Qyu+exEJuS-vRY}~5 z+{^ic!bX+h6opX1%LLLc2GA}pr{g_hpb_#1!Qzq^Qx8H#mc&VW$Q#MdHeX+*x%>FPiOUXEE^WKnl)&f zTycF6Tt_SP=!VU<6_2DTZ`z+KDXlVJF6)fk*8{|Pd6AC8i^J>4FIVkM$4Qi4de)P^ zGebuc?Aze$j(o_Yzo%VG3i8JpArAgRaQTO&V{-EFcgQ0=&;a-Vy^_-L}p+bII97Ing%_4{@9; z2X$kgcZzUrt|V*ig)>N%l&k+l2}5p!1rO8lSYH5hA-0fpfqd<84K394}nFB zsjBbzh2p+SP~YliFU~OA)KP;vRgMroxIe~o62&xmmtkfUh+7RJib|S z$SVJe#|;sg7b9XSOQH{sD(mDzy>_HMRnxJpWpd}E^!#A7XPp(hQpmieToPArU~0txkk3DcY}MBD>t z-2>v1NJwtWG8qQY8h&q(n)_{+!^PzDWI{3J{N=AH1F5b-Cr-3&789l==e~s9kz>K< zH4IQ~G__hTXCzP^AWBF;Paes#dpoKMOXmc%ag7>=Yx;9g78R62QV*3GQWG>|R}8s? zKSelkky$>VdY{~hSjsnW_T^qE+kaSo2_0$=LO)!WtVYr5O43RQ_w^hUmPI%p{`xbn zTy1XvqyXT5x7*dmS6#17TQntqVFInG8(W=o^*Ujvk*BPIC)? zigw~UZC3{ARGWZS1z*+h*9YUD;rVO`muWt1>tmdc#>+*+3Jhhbl$KQqrij}jl2J}v znpX{560o`u$H#;>gEhTJ9s4?2;RL#{HP!8=uZFAGVDw`?nIsj?5DqeEr@J zziD0-#K1MDq5X1gRLLfJZU5R2;C*+J8K(*8+~eX)q>n#1RJ_KhK1l`1u}?dyKG(eR z-n$FIsVBFSDps}c_&Mr)wq?tZB*-TQBWIi&Gp4rZ(kM+4>~%~*s@`)6f_8+_R-5Dn z{c8?Dv_35Q<~i+R98&Gfjbv5tZruT*f&{c9$jD9vr}o)}*~44kCn9d)=vR4nYAG}P z{T=GOJN(3tFn1;jqrm{y}it zYFbfX&~wtNrH;X-0<|r2kEDqp+X35!{)r9h zDbB~CaI$Vxg^T8EWSO54;kSdCL4A?2$0~u6A1rA|&Y(?uqVRQ!TW}r(H~^<1FE^GG zvOE{BQJ?9a7h5-`7^1a7{lGFuM^__Hq;Wyf{fq=f_Yj||Xb&H|+q}G7%3W`{OCC$Q zLFi?^KZ9Y@UBZkZG;iX5I*qdRPfCf2oyAxiKsA(*=St!F=6g)Y&V3oKc(HL<-P;8E z%hV87AoP>~fNqq5e<2C1gFx;Y_%213U?nwN1++`Y2UDa4vGs_1;H3z^J^zL+7}TeY z&qLj2peFP+^s2lFjn-QNgI>jt;il~Cj;bYSRuRc)&f~tXn_JkAZYB%P&c6Z7!jwhP z73XIB&|Vjz-iF-;J@9;(DSJNzUI+v)L>+h8?95C?QEZWy^sj}1s4^v)DXsTjiB*fM z*4NQDXpGE|&6^y6 zX_jj=8Y8jh^Q`n3|JI?H zG``65NyOd}Mo;bM&=O{7IeN07e3kt8P=6n~tknYE>KD2sSbaq&Pnc)2O>D@uUbwEO<|u>ZL~gCd6iB~Oh-;|cL@W>U zM8(SsX#nuJA0>ps1pXuS!W!YB5cM(Xqo$%1YkCQ5=!ie5=#}N2+5njk2BXWXLnY4_ zOy@>^dP#4kKq>o`Vd2{{<$R~(Z}u|W$m<33>ILph(Zw;<1+D`gotv^h(SJ0mu(U?D z@$Cv^VAW4(o-g|!Y)V?#OgpgxAAM6|6O%v9<@Yi-+lM&w*H(R8#Bv z#!}u5|2|I&-Av;bBT-E-)ly2VETOV&sXx~rK-&*QPb5co_!ZETm+3cu|Ir>ng(kdV z&9?dgbXR$iWzraOzgZaxQ{$&%wi9Ho)P;M)V|P` zMmT9rSNG0(1FcZd_&6Rv8PXMX&GRx?2Ke^G3 zyhzm~`EcmozmJF-nOwhRsUZy$aj8oObqFi5UvFqz`*yU>U8Gw1dC_e7=R);Nlz*-z zzB&VUascukl>mI0X>wI?-y80r&o-7xEB>@pHr%7$3HiynTlle+!hDMX9n#U|Tx7ZZm?kI^p9%|; zc%38?XE{DccplDRM6Q;eYt;??<<5TrbkfRx1r~MJGSHl=xc#T7 zFrxpB4u6Tgh-ZEJ|CiW900%9~mopf#J?MY6g0js2?Y0dTU0Yx1rqdxvEXu_CAah{} zyds;Ok=IR1SY2>chOZpJ1wRt&`szC3XLRrz9Ms2yk-hUT>?~i{q(8iOJX&-x+<#b?SJIuJJ3;2pbG&}qWrEzwY`%$HqXiDP zY;UKnTu$H4VLu#iCoT{sZxGCz{xI+^Ou&9vk*L7>JQC^62bWTV^ zLVECR(CwCfIJ^t86h^06uJ# zN)GSBeKHhoto;#QN$b~h9#B^P8Qiq7k9r+-vy0irD(!c%zNf+9iOm|Ak$@?|?+c3o z`B-4NbhWST$@fWbb(5!b$wi1y*x)}JQTn)x0dZnf+WjUyPQze161#tTw=>*#@I*Em zFTG#t8iKkEtfa++;6j(`SH*3W+?B~H!cs~Fx9%~0;~9L5T;$I%sSwP8x!+>n{RkLJ zkZozO2ig6Im%idPXp_w}zke^^K@s=;mp6v2@Q(C(erYxfn7fth^!jvb>SSf=6kEIa zH>tKdE_?`PZ1zK+^8okn)Qx1iTB$MWnX{n$Nh|1_wxDq=Ruy{?=%!$_vj>3EKr8AX z%l+5yj-2^|#1Sn)8Izu`xVJs@0sqpT*$cdB-b{g!0)I%q9h zZg|SzJ!%d6!v?Oy&|in>yT!qh8ZVgVU}W{rDJvw0GE7cF_RmI5~q8i zr#sN;4CHx|bm}4cElQ*bLniz6t3_*>D36&ezlc)LtFG%fe}4PQ5GJK&!mw1ryl{=%X= z;D5ZFVt^HO$e&>Tr7G75->_iu@f6EZ0XXaZz*xPV0-r!1enW?|rsMP@lb_{euu92S z#)pe=ipEn1`r#2&?;{d09fRVYYj`#hSKA=too{F@oV@?xDb*n41-$-f#{EXuJ?*@R z2G_Wyi~>o1FcMmHl-;fVMQ}z!^I3%QK2+5^)oxX6qKI^h-N|$_m0yJO z|D=O!%(66iw@g@v*P-RsIbEYmG zKe+5Y7dHY+<_*h18P?(q)&uU#yVnbjse?CW`n9;*PdnMg++sVAbHwd#JG3~8066(9 zN{NXvt@^9ZbJW2kxd*N{!K?#}*<=<=I=-^pp#{~d^h4GdE~*kx`o(q8HD!v7vhikKNXWp_dFJ_iVf_dwICWFB^&C5A6RkW1ZY;laesFa{`>0_`mbO z$c;@Uh0H>ffW?7h`BC+L_}_`{5jX67Kwjsdi2vL&+1SqD!^$Pu41NQ5SxoMU^>9y@ zPy7dq8YZ~IDi9jeZ{d4H34wmYJpZIbxJ;%eD+9+1@AkHbH>R=M%dmCDD?$l?L6<YN)xK`NELOWrh>?kBCGM)+W7t6Xje|8>%<+z_f#FpU75 z6+Tpz>;YpC2 z-mZBuB+!A@co-c+i|l4Djv!?Ywk1lt#-{VI9r?ic!)CN1HC0fMxr9!67x|A4xd_?U zHuxIBwr}&WIpa0yX?cdSiGBH&iU}h23u*GQFaJd+bRlg@r%e z5qY=JL-9e%3yD`qiy%(_e$yen&GM~YR-=n`wJY$1m~o{iF-lxytfUOe5=t;5pR{4gFs(Ut3fI~)!k&MGBfHSRQ$T`}I3qLf+2FcSb%2>e zw$-+RDT$kNFu~irA0Y(;f8Gg<56CicyrpG)PD?_j(=xtHt@ym)4r3?*3sWo8bSmJA_<7$A4YoZy>mT;4^@z>p)iz_dn zGAliE2=%a#WjJ}+*x=xa*ANSUQjPFYBOh#|-1y9SM#&=4ggkV`qDUNMEh#JzBa=(w z;W(k(fAxC0b3x^P%D>j|`GrnOBFd0w(|!~s#3z`C#Z6s`&20so_Ar#q8igGN$k%FY z@x#_2EwW>489cBAzI4#zc#VVmK3G5N?z2z_J2703aF}{?_X&| zLQo{6M3Dw5rI8Q>6p*-dcOwcY0*81w(5$H$o4Q`!_0_n7WKx3%1aJe;P;NrN zT33kJ(cxyqVAK8irVS$|M5CL*`WBG}7uCP}1WlqwODz(7XyDfTp6D(g8+1sG1p7}2 zVx3f~okvU^8qz$vi<83kb2d9ANiTwcSso&fy z$*q*wJ^-oteseC8Ta0O{8Cr|=IBD4wCp2nHhVlczBA>YNaiS@Q4_WLFMbcE+V5xCY zsXie1(=w%NDOI7&;B?lJov51R-Zu2iX>5ez?u<62{(`&@J)2$Xfs{| zlv8<d&H|Zh&qvgTuS8{d=THSt z%mRytc%38hlGk;3Cpf!TFdR0P2;W`E21_Gk5V$Z~eBYqNksH#8k~@Z-GS%4UysmJL15=Ql6$+4)EQaXttv36b1t+me+~VKx*r|`$5BtX>gA-ot@1 zB30ICE?vGuHZ8;>^$^6HoJmn+uT`&H;8C4)>4QNB+Tr<s7ONK(=VA<^oXhG`_sM#TpJgO9m-UtuNO%s)%J9m{Fw6rh zQ?=fpa+LJnWlPBUW~IJ%d(E=_N)@=NTFR%I?rT{_V}R;dWsP}QIg1wX===Y)-`V17 zGT3Td^r}udpZ($MpGy|D)IavRHSj6xrcV|*ah4#U2#XzV|6#^>%ps}? zM9vy)htyeqhB9iz-)3!7mCwIhqRH-A?8&B2>aNeA=53Pg8I60Z~2 zZs+`K%PGp^ZjJ{ZZ|(K>VqB>b1IhxTchnPl*Peh#p&H`tzf7Qs{#odL%A~%c9AX47 z%ZUGv8v!eDj6Od6Pexh(_neYu5jtyp*b`#&1CBiGy}^`ww<8j1Bmq@RLHW*;3kJqb zFKY{o$V-Gn639aP0x%Rqn(gv)ZB7|pbJh%0N7a$28Misu3!8&bUWj0wH~{36$16|dLr5EbCy8sJf#B-T z(vNT$fWGV(l3r0uDL9A3T+fl9@^4zQte?U=$!xJYfEzx@c~klm?XD|pp`TElw7svQ ztQHz7w4!dh$!X_${!TS>n<)n#qp@TtWK7^~EmHS}g7sQOIR>xqDhS-b)xX~{M#WYW z9ODvnHgmPJ&T=AEu=IoM6K8r^ZWC$TO5M$iyBP8cznPWtJaQO&sq{{T@0Obp<^2~J8lm$7W9 z?OWVGBY2YLqayuC6p9r>IPL)0(~--*GXISy(#?blT3YJG`x^}%KbZlBtr>8vN;uGY z5RYh(g2d&d!HB=XETVy}@LxzH*fCWF9LUqxgD7VQiDi9RXUWjSla%$Brzy*?q4MLe z+{XVxV+$b+#oo=$Xo07eQwBI{?6b%#lW2 z5E$zF1<+z1%j&U2qXZ72puBI;@uO|W$}yKQ5g`o)0(yWnV@PDiQqrr2I7cQ%@0OK9~OZQdYRWO*PrOAhk>x* zAr5=vqR#6?0uX&BQQr4iHA8UNYNK%6iVI&m%MbBp>5VG#n*aAY6W-%bu|k+|2pg~{ zZl%nyD$+6m0gBe_Q-&95KOJ3c00k4IRWFy~Pj79I+A9eVq;Ec{mGb_`7IPGp&8HV5 z_Mgc8*cl`-nu(i(u8y_D2)Zu|=bmzsMwB{sG3)l4tW$*+`d*I{oy+&r>s**8v>b=*!1OAqY(P&rS( zB1-!|f`Ju-Jz*Yhi2I|*3<0J9y+L_EHip`tJ)C+SQn3AxN|ByLKbA#xZ*mYmk%BX( zk{`i(F(hlm$iXrE3NM#}Bl}f04WEfD923zia@Kfx9Jx3qW~_Bq&m~Pjjzzn=l#HDv zs2{@T`!-mp4utre=saerzp@i((M`w>J>?(h_~t&LJT4+ZdRV=H!Z}PWqn%}cFId7Bcwv5-a}Hlupr;I!EnQsE|t^{agACMtdLwIB;0 zl(RooZ4QAl(a`|jsd6OK+>8HfmzyO%0vxyhH3^Vn{W@lUFm_WTX}ke&T|kLB6n`zs zh=CHR!=M!!&&T~z#eVPt;?YHr+HC5Tf_ObB_ZHm#m<5^S8=i+NJ`lqO=Al+Ncb5%) zS%RJ;eI_{weARNPY^1&Z)c+snJe=!L2gtXsYRcQMM%3Jau)jX}i;s6L!7pm2+D;%9 zZ0v06-8070C>*;Zb6iOL`f!ut@c%cjgLH17&P zf(T+dh%jOI%+V1!GPTZ>r*Be8?`oqV@NqQ2x+zae&t<^F;yfkC6%!a?i;ojKUu;z- zZ#rGbktUOZIhJ*O1MG{hg02u=VrZ{9RZ=Z`Yk)-y!DGU?vCW3x>DIQ~7@+s-UdVu< zGWqY$Iz!?j7#K(+evptCvVLp5An*KO77kzE@-kqMi$SHD5z9f}U|GEfvf^eQL$q)Q z%ag_Wgj{(8!f+DjS1&$XyB%6Iq><(aiuUJNKNSjDS>QRe1fv!t5xP&nQZOfaIf$FP z4vL6yK*>L+z#O(&O<=PlQQv&#x~2K+taw4d0GFqy6QoGOT`is6SL}X3h{7dfwNtNpmP1eAF1u2utVl;hg~+eg`J%Ag>jLx|BLS{A$@4KZ z_ypMtv2$$Xz*U2nT1r1XWL*c=yDx8+MTLe68zzm%=MOgY=dOC3{dQwU7kFty{8?Ho z4*XscY9_*6YQq%26vvmcG#WxyNi|mWZraRpNo1WqZQvUY_{r6k&oss^l z5;1aX#1eqVLcn6M_YaE33JEqvp1^mT+qN8~Ty!M4_Zu|_8gM?{(h?6WjcY8*DksVulfWC=)#Jzr20zrZGoNe z(T}pvf5YqNR8FW;Kg0pfVy`pX7H{hk-F*nwM)i z>op*9f*U}+%h^Y8_<|g0Ta;|TE6Is|zC!^~K&SLaKLc>J?SrC)0EjXln%zGKk%LZ|9Uw|nMeg}w1N#0;s*ps zDFT-lPcWE6YW#D&qUJGfKLM>_MfbaB+eb5<%}Sc(7a;0v0XXF5##@|YAP*#698$ob zFT5QNjEA%^fA%8edyw9{YmmEWM}I#M;W<@U(Kg~L-CUip>;tNRzDY;%1%iclNC_AK z#QYpt6A&bdL{L%T?(f9Z*RKq~&xhD)_qeY&AWf}L4l++^JrQg|J~7Nf*7u$`d$axi z49b$;c?7Ghpm}GbYH$jaNrmuJr*Gh3vXUu5nL(M7YTuER#C%G#+z~3;g;$iCEIJTR zFjP5Ga{0EGl-ESQf`i!u04s5nn6cn!Nwwf1fofKq-Mt0oZm?Qv;L?0R@aO@76x=!) z(pg$A&6!xdS;}&G2`?%Wkd&6L}szh2`q#?YrPNQdzqldI;={DB2-DFZ5aO9g4o@)RK zTLi9vL35%JpH;E73#mnAUIU|Kg_Jiy+0P$em1R{1_M40iH-KBDnWOazK@VyhKu$bN ziM4mgu?WMigQ5j*fAy-0TR+luiB}`~Rgw!q_TF_wVeK8L9zbtlZI8y2u&9P`$41WU z#HNrTI5#ar!1WH-ncGgke(1}WE*mH4Obm%C`B(zk;RrFqZe`5q`|Ao};_q4w1!|P% zVy(P7srJj2X7ufSw0F365q2#dM5OAgFYu%?cPS}s+S2x^h)ZmwGIz~@t3FpYApovw zVt7XzxK<>{Y1`Ab_sA@&7^|q4KLbaw2}!u>mn-g&FN6_SYSepF+<)OUBy4ZWI>)YZ zy;jlp1x(`w>quQZke8`i>9M;b_i%*!h5)?{sHyO}_Yc`yLim6SK0)R}l%TG^u$LD< zsM{J$9yhiYv01x_Q}50pCW$1?oV}2&Lei)x)nnO*e9{PiRfVi17tL)<7E)@@g!u#uIQRsb*k zHNZK($fA0Hp-`j2^g+q~KlCeW-Y;Hj2jss^ySVeImB21$O~C~#qaubl*8pnQ9I)jS zw$H>b`OJA!A7{9b*opn-ZKA(Wk^#&H@wfl|&}oMc%ZEYb;GpYpAs_DQPPFpRE6tny zHgTK#)pmCbe*yl%`8z!6nBuHMcnUsJwiy!uSoaZ zi8cfl12VQAK46}Hy#{Kh=_vhX7KvF|W7zN=a#uy?n3@1<)oj!93$KsaHl2Y3#kYTp zMiw;IDr z|A&kD(@c4U&OROHp4|Zd{Rm>G=E99t6xQUKHge*ky!hM!P>B$**?$lXI`@&kbJF5q zP*DCF6r?v_HLyj0*X@)z4mPpvU{)-PkbuEOA2W(Zr#sd&} z8HLCY>}CoJ>NkI``GGZ`oVGPZsE<3v8(=-(W4XXFiP1tk*r$S(DM^= z|KVKbfFC$Y1Jb~RK&@N#@y!1#ZR1Q{+84jHfbkI6lBGEdyLq_&G-aQTQ!;9gZdoe7 z*P$I!gP(HaPn7rqq+|o3mXQC=fzQ23N3M7P1U4$z5zmqSKc(a0IzN)w{hCBOPdLvU zG6Q+UAGUM;c0fQlc6s_u``CCVjp~Y0_>N-ngU+m{e@gPrcy8t|5s#86az#Iyd`kvFuBDja-OOZ&RCvxvMk$WOp}SYmNVdUL`wR}L{j%E|l!)R}2rg!dqlvEgPTcRkzp zcYncZaJt9!eCX-$gqkSinwg+@CT9T^_gK!UxT7t^`wff|WLIbnBVB6^)zmLthoN}U zDk)lb2^#+`4JX!1R)!6Wqkd{Pc3w3sw!r_IH!Pl4H%zN&?FbTn89I2LBR-uu-oVOh z5!Ic@VVVr>l-#;{>ee@jtQay(Jxz`-lVfA z_ndWEvu?Op=x8r3iGkoqsrb|0kmmW3+MuX|^$e;HiaMN6{Gkp3^22xu6ti1^ zr(YcoRlYsWkhpN$DeuKc? z{mUw~HYGV=!=C_dZ84h)?cju{=$jBb`1w+o4G~`7IW&1hhY`AA@msPAdDFDAR@+%@>XwBgAqqhQ$9}yZM;4E9F0LdgOrs`}LIDp& zx>D~FdV|cMr!*}=rl7LG3T{9lkqTG}p!Q<+{PMf3;Nym7rsiaQwCsZdbk<`Jw@a%j z_5^XZgGmbr9>NXwGDSRu;-&ZISe?&OlTvy6NfP`OCu6CzdHa>g4Bw8wKd6Z0@#KJx z7Hli}lWyQ3J_dwJy2jhp;~|&BX#R-rbmalK{;XEU^$HlHTLHPj2t0fI##(j_G{gMpSkHm^4!X=*Gy*!DD5*47$Y=nX~$1PlTx_K`%i z=HNUR@a%iU0geJ-!$R4XT-zmv_~{)?Hf>_0NmEqSI(XEM2HU6=b8{&gY}S97Y-|;I z%+pOjfx%>b?Si)uTfG$o)P_chT*jwDHsZUzYiOZ3S3pJ~Wkv*h>WnX7*)lqUOzv)r zB3WHwCq_)py9hEMBpZQq9i4a42Bj;oBUaBeA%i1JJ$+AcbKbF^S!&^jVsdev-nrPP z66zoG)2s5mccNcBSx+H`Q%?lKOL?BU5YfYs%dIYe98BCi;(L)%ukP)w@M7KbbWdKhVIAOFwf#tlRhWy1JUHONH7S6JiH$Z3g6C~9$^kuqG4_@prhGjN+KaxpEg|7xnXaII z*`(tA_ht`5h^t2p*Ay4(1Y&%SYZ8;>DD`6=~-P=u{5nVIqrg`o0YvCWCbygwwy5mR?O#vm=)&1hbou5 z)+y&B$Zj-UgoX4K9u3IogM-fPF6~wP-u(POGFs5YoiFrpT*Ytt={cd+cQqDWnT^oT_{9M?~n2A)tnC&ssT|L0iil1MN zyzF-sN=WK4O`q*yNSif24g#gfuo3rFwWBn>#bJ-7+sD!gB=gI^R&2fyeEwk4#Jjc$ z3tv2T0M>6OET|F3o^#oERyLdNR{3&lFFnT+Pg~NsGvoh=kh=V4gD@9a_q!L2!z}y- z4kOH>7Nj5au704)o`ANqK6|r{3g`s7KKn`ZOv?g%O8`n@ttPS@E{b0LQ1=ai!J3W6 z+WQ3R)H3VR&XA~8P`hlB^%kqaqa&TdS+(mugEZh=6m1X$Y4vX`HA2)#fQ7Qz!oLd< zVGOyOALLsVrqvJYV{&n|3ynTL(**exSa`x&$gBYPd;^^$8x3wF$}U~S9Un@2d_5BK z=vtpsUoy(^J`xvV@@MB_qMbep1}S(wKvfkEYd9fMEYBge0i(>46!z~^$0AKxzs6*d z)8ZM76@mo}*n8wdGH9Q7Mqp@zR+#!L%KFE<9*ym6n__P+QRQuiAn$c?XnUT{As-Se zqW%@h)qH0^(tAK9m7;|laz`Lte-+?;s$tToUe>@;(w7~fGM>)AL^}SQB~7WSY;&@9 zqEe!K534iIj@f_8U7q&RtSBjOq7eIz#72MfYXE2I*~Cm0TH>?Zx0Juwfg4L5^%Mpp7-+8B1dc=V_C` z!NPjZ9V`KkE8u<=>k@g=1E9Msy|XZc=Z?AnFkO5bp-}VKTbEDs+#S(3?f~~ z{oVn*)wJKoMC|46v6NB2O{zeYu#E1)hpI_k{Q6iDC{V$4p+l){P5?wwz-kn!z941f z2AC?~E8mObDe-=Db4eF;>%!MepzXIpBly!u!Yt#C&~f7wXJ=C;;A0G~h*0iQDXxt}|9qLl_H@Tc6> zMZm#mHM5!f#V?7Wr#0RI)~;rbR+vF~(siSr+PBJhinbgT_zL}Qsfi9CVf}ukCU)^d z!QY=7o0)!LsSa4rM}lC?LyZoIqUfSn0)PjdgPzEM#_ewHd5KyN^I@Rw7W8oF{c;sm zS)ueyV$~HJ(hv9BcQLiF7f;vGP!G~271mpBwASqCkYNq2Ng;i zkJF8ez~@{3F20Uym)?I-kY5P+HyE!4IFxd|2MOSURV3NLg_@^I;bW5WZ#lSb{6>p^ z5dh2^Bv7vo%;m0yc>-JVR;)qc@&0F%BmQ`wJPBT4p!JNv$9*keD6YWWux1p!`VDx| z`$-f~VkJ7aLm4j{s3%deBBMB)_|DQ>e{%mADqSOqE(6Y9Q~wp%Z;6xEV8j=MQ5SU? z(fMqG0t5QC#HfQ6H0bC8MD}bNo zq?OA*W}h+innGX}_@m_k8yg-s+N}Z3%e+P*nIOGt;Y&gY>QM_Yn-2nl0pHf1^UW!N z;se}2k47@DD?@r=xQ~5fRz#?By6Y<`Z?{5nWs?~?@&=rlM%TL6YZo|!RKg7a7elV{ zx@_Cr{xy?%7AcD>#PyU0%>z02s;Mf~HXc!dgEc~93U7+IoYvG#a z1KE05DEs>$Hkcp5a>=#??=ola=QOc0#~Tw;R^au5OrrXI^S^j^J}QI{LPeaxf0})s`49Oe9nEXq2_PzlJ11POF{jn51np>b^nEPL3L7<6Jb944}j}7bGV9)L`Wt9M+vIpni ze<#*()CM9rm%^ya$~`l_YbPwax%Ybpa5q`42nphN2$CjO6eoFB+GcV;vJfB^d_VnK z1gUfN!)s;)$Jc9ySjH^F^GVe#L?MA$ zo7~;RG~L*IT%gYP3@BLPL!lL_Ba|KX9Y!+t9kaG0)6J^M8i&7-QPSh*Oix6LJbs7E z!P6_}30uTDqRXGdE}LfCT>o~)=l=ukf0GW84S4`bsRwr!Iu}17EO5s1NA`#b@|Qs} z3`Dm6pPM<-Ov`!LZt+#kY1ZQuHR40}(!>inakTnas4bXA+$c}?%h=f(Vfg(tnR`F` za{oGI56Ew+EncwpurvbrEdt1h5pvS}4&)~?*_}^ui?sZYyFgsCn((N zCVvLNIo`X@L;2423a6?*QVVQY2_b-I|SYT$Tr7J}UxOACRa^-3M#)D#%I`d}mHc$dd!lU`)-Lg5Q3` zE(uJ5IAaB|M2BD(V#HzRVpKnW4~;$BZ~!EjYVBHHAZN^u3CmP#N0e&04s&5WmaRS)1`0T#LN7?_nTT-@Lh(RI8&qc6>loT6^$O_vi7^ z5|Ms)t)5Pz?&;dpDf?|q^`Tg@+VKzLI(jD_XM;o8OYuuv?bjDiRyNyDw1>KD@k{q- zN6)G&PFs@NaL#ZpT!>6gBf;WQ{=PjFSrvW@($%%U-bU<36m~|pJ~r3o;8JG&Q1F8> zmE(PMOmWeVmO+KM^2ri?yVTytd)r-MgEs0rUhe)gHcQ|7MQF80dHM%loiuPNhN|n| zJ8E#=bK|*WA3riM_p-WjR1~U+JK3TYt6nfy_n%%ou-hqn_3LMc#~78F*w51qqM>o; zBdFWozjN*d1G_M-of%QfbbIB&G16mLIG51gg)`p#fOD_%q<@hK`U$X>B*QsGzcTJntT@^Ae|G{BL7RliHU$)J>EX%y&<)(p9VW=m6^9va3DZXF54$D9YX$;CywUA9cprWwzN} z-`DS4Jx=Ys*HYTIS+yTLMmyKwR($%4WcMuDOhRbfzQ(TQqMI$tsc5XkUUlyNkKrko zyD>HQ?h+22j>WEwbuQO-E+pRDv?f0rsIvUJpTC%R)@hf&R>Iw2oS(NFe-u9wIynX% z4Re}rjV@JrpB9g~38~iB3a;v%7M6>hT5jz#%_FXDmPv`NIw#7^cNIHYyYG*=F$-au-AT+8!X1l7cPZJ7_yB}?t9W6{Ubt^F@ zP^-6BR_cq{5L#=d86Da#HzS5BWgtt5Q}>-B>co4RX4(3i`Qs%nE&lN%5*|gTj{K`1 zPjx*mD?qu&SaH$EWHUqk`WEq}NwyKZil@J-hTC-ykb-%3`FoZ2>V-Xx-zH7@L`x>e z`1`->KYiYK%I|G&#wEmkI^n+KQ_j0zt!BBfiI7;H?-iz^ ztxLr?F7YVFn#<-eO})yf?5OlZn^C_}Jy)C1iOiML;t}pS@Z4*Zrfq5}-5k6?l;3%6 z6x<3Qr4cTXS^w^A0qG4naJ?nxIz7Cla83I%!fCxZ05RutH!)sSxTl1D&24>SFfLt> z`L-0Y`+oD6YdV;*y;(;CRvamc_qmS~dfmy|us$Pu7EBezn+u6JKDJv7oG9>6qsi_O z1ksM?ydCg=bggfx?xSB~uda2Eo5O~#boMD{y=bbi^+7p5CmodHOS7!;-3v z+L`~*??c|x;KQs3f~K@&dsq@S1jFXbLljG56~mkuIWfPXXO4uP_v%Y8UD$FmjooRvZ)@IT|9k`7AiF+no}||l(ZBwq z37UR;A7^-=<0Ev~eSdJha-NgKEE{{*X!kY2G%(ZLz{*?2M(~8zdW|%9!5R;xC;?OsHZ*MUzXyxeVfPy}G0>Vy1WDh$t$lNL?V;_PEc4kN z$@@m*6SW&s8;+-K76WIgzh03j*<{Byem={6bH=STvQ{rTU7K1DonO&zL#sZXpU<$* ziaAc(=QB@A(2j!7vPx&3AG@c!&Aj8BACqa{x3^r^Uz&pF;y<70X>uGgU+M$|%6fE( z8oJzLKkTxh|K>X)(JG-!lj4k>;M7+47#PXfW%ny#+v9>J&fxL!5W;>}y@yqD>{U2<=~^cmnS`xN7h7>xdh z_Og2V;p_n;U4i|&ehq!~{@_hOU_uO?{)L6U9vL<{1rid_uHR_37b!a;PKVYSk0KH6;aZLdn0!J)y;%P%#YQR(zXEm zuak7GwySBu`vj-*uxu^QRC-zzF>mdH>zYwL$Fb}6qN8UBsPgr~e&s%=p+#&K>p=hU zmwo#?`<&%4#c85gd(2zYfMrLNwCf=7cF1UYDy+!Sp<@};;Haw+|1BBxAYJhDbY=VY zfl0bqzj91Zh{J~O?b|P$D{ep1v$2Nwj2%{u%2B(OiQ)<4(YT--lpuU2Pj+TnRFc1U zhI#AcuQ$LSe1(8`q>oEs-?2VgKPEn1qVze7K?#f2krVgfq5b-JAFR1$^#$$p9hs@x zJVA!UoZ4UK_bjQKL{ZaUg2((OYNCHxX*r9@@CQV8w$lo=FPfZvhYF#ym8^6VtMMjC z#LpSr+b~INgmmxh=L4gX&ff6WevS2Z^raa2jwtb@W>2A6)x4t+b;5clzu+^(Qz4)-g{&k|y zn^WLW{!6eKA%11QImH$}U79=$1%ei@MLpc9tJkUy>IOy- zSJqLxsYcr>yeM}qB~{*GQ6gZ@IOFY!LjQfG zud&xyU!>k>b?qw?{dBQh?FAj1ySEDMS4?{PAT^1iI>Q+08E>X;hXI>v=_4=^YWWerz~Tg~?hYNN&zkt6Hk%=pP}P+pY6O#*b8R?5Wen)XZ&B!cVFpbGG~j%V zl!y}aGjxpV`mTBS`L>tE<692>Z8Z4Tgd!Q;9V5dg7f0|1G=Er%TpqSRm>9LW(iw

u)+- z^$H{!ERehwt#fKaLLi45T{Tk$-5z;6+V{zijqU0F{TJMIvKE$VoYz^e2=0Go!XgY= zYQKZ`CH-sZ!fm<8%UO?pZ>b`$$jZNEHPzQ)jF7UW=i;rZh+|6qa;v;PU5?p7gtTmj zaWQ(F>C%Ks8fLO!xYBh!vPU2KH2WqdRMM}OQTpSi3XngV85!J=jEU4awIG3Z0;>up za9;HC6b#zG{&S8n1U=3g7Ssbh4@Vcw`6%KvTv?`A!4&1bu%`NZkrXo{6sDwtb#LI zRY}htp@1v8A?LO98-49@hDXz9Xpv3!X)wl!0{F2YBB^z$w!=zXNU5XXVab zDZ`}K3-7!w9RFy#Pm}T}jFdU{*;Qg>s{+*?XT4Jdc>NX6V+KX{ z8#%D@-0PIBrLNvws-IfSQFz*cb^Doo27!=X+RFvD&g!enjvE-nMGx@_bUL4NCZtxz zQh({jaTHNeClPMCQ$DZ|)zlRXWq{4*k!bkbswmBXD`qg zow%kIL7)(nDcUR?y>-!K=JMsec&E*?mmG8Vs&Z$r+84TgDIP3B z(fjz4PCSS)@37Q6v0JyEbhS1^ghu4(k>yCEBR2o1`<|FgM`HYxx9G2XX~sEUQ40R%XG!y;T1VZ!^#mo%mZT zHrX#SDzh=O15Caf4LkhzWzjIq4kxB%>EDGvt>cq@%e7+O&zN&jiub1IeI2ON5OF+l zWeAi012L^9qd>Ez2Yt=ZMFecWcYMSs%UT2GWC zOZep%nI`44gClPy%SIfXNH*5itWpxUpm=ou^17Y6DcS5fx%EstJe`BE^+&;Y_RD+= zqb^s}La4GQT@8-xwsgAEYd~P|09@cp8Wen4tZm)%7G7ILA9{vHA%NYHRhPiPM12xROOb7ZWldmyHitulXlCQ14bK-l;C%Zd#Q4S*tv2*ZQEgq6qCUfh)Es*#~ zDs?$>9A8=n%8ko^MCcLRrDw#=l$K@16i`P<^^$Pb*+J=`Yg!$N_C>sjSUl` zmqw{->-9m535m{zRv&1LwRW9iU9Tq(`p6eEWj<{k5c#0aqwxq468~!yhc04Hp

Lc0V$%%Jvs0G=W^OAtyvZ!PTA(`wDR;FrMaiukG`xqCiyXH z)NtKRN(?WeARt`ee&@1F;WW&MDD4&v+iEk3P7T!5e|GRHvhArKi{{=kMjMYJLihcA zHhWAV()K0{?H{3<jP zf3(d{a+QQOi>!Vjp~;}__^?DV^h#V0cD8|%26t`UO8>Of?V@lKga*-Tg~$U^yF?mB z?xc`ghMwSh$$DeqReyR5aojCUBBi5jx7{%M`^>m5B)qQJ5=sTNGDEo_ns3LL=G!%O$n-`O^!j@l0%* zlzo4g+`11e$OvyK_&aKb{SqU$z{nmvhui#EP+oJ=gSSRtpoM$q1Nn6Eq$B^j`hnAf zudIQ7GIzX=9HA1+d7C}D6g!aKsjq&dIQqL`V0!NK1&{SFJm0m_M4GNzu~ofIMFz98 zG9ell#ouBgHVBvalYPdKlb>tOEnBp6r9)fxl_$S#e(#=LxNza@4CBI=v@}(`i)*dw zU$9#*T*!>XC}4#+*&J`ZDzM(V_0pfGfh_Vv+-ye}VgZ=C!)Qi-<^OW_j7yZrF6l0 zlOwI))fNjvoHhGo^3`;~-5JixjR&meHG5;V$6XX^jg#Y7U7L=#6KdTyIJ>G29k10K zI-V|?y{DRYhE6w?PZ!(ew<8Y@jK~+}?A3QZ9rVlfEiII3zOqbX)}GT5vL19kR=u_w z@TK=<8;B^atFYQE|c_+;|VB zX7b*4GI>21WPXLh+)=I;4qTpr!a&ujD- zr^KE@R#|oLLwfJl$a0^pd@e1DTT}?s_u$gq%w?|7Y2XSyK3QS3j5$-2U&E<>mg_LD zaWqRWb7Q=3Emd3*OGioxlP@yLLf-d7`(s+yjD*jt-?rkT2)-OE7W}UH z>iD7C*VCG7B~Bm8_exK0XKk$6mdoe+N>USvG&R(1P1ZqMhTAp28}9A3*gr)7nds)R zIgWggsNfL_opkhSUTciICH|9Lc490pcF^T}YNxgTxYKet>2l-cdm(SchV306M0D+Y zkmXDo3Lh%DRVTSP;R!BkxM|7C(0(eFQkZ7(<7&kzl#h@k_(Ld}LOs zPs8-96e6t3F{?G1BpQ*Pf-)1Q_t;a|WtV+5)qnDnIla=4p+4cYTl3#UPdKLSINfMl zVzlr7(Bw|LjltD%tRU+DROfbH3diLk%aYx-t&^VW@O{WzSrk#4Z(xE?&5 zddeTgzQ)L3#}c4c$1CQt`how8zbqyR)|m7Be#Ot!RAopeWpDQ;wGf`o!o$*0rj#22 zI4ldL4ZVyTwEAa|#AnJPi3GyT6rT-|*+tgASMM#t42t&cz3x&salFp#^LeVG7JC23?O{&O%qer+p#uBX&tsKuL_z0|>D{YAKN$o23KRsw!G&UA#5mySAg z`5*db@EtHfCccbrnjWiD*7tlSX)^kjF~8J^PB1D9Iw-iQtzkcin*NN*T!N=TI4>h} ze+PT6JUR%cud}y**MpnNJ;U#5U2O6N z8Yg60@824~t4)rxuRZ$q((EC*8jiZ{b^qGXL^UEtAqclg(vok1;O&~s#)X^p#@hk@ z0*5mXo#?-N3D?Flt@~hX@Qx53JulOBpTcW-(iCv%xxk^)c3`grZ~l-kn{0LISEdfq zUu7?~GVE8kki`?hk@^#Tu2Nq=2_9_BJj>Z`DXXn*JQMX}5<8GfsPYk3Bh}K+^??T*FCPIsUTMx;;7W% zUH%x7_iWVWdAvx@6oMkiwzAsI{h*@kXzA5sWa?oI32l13j16+m`F{aPK(@b;b?bYf z`L$g7NatzbTHTqoZPuQ%e9fX)=MlV}M5|%ekAlH^(9`Eufah-*&BHr_~#mu|;ZNt$P!~^s_dVlmA!57UZ2*QHXjou$W>PA6NZ2Rlb>bPF< zpu-jLggYDGXmp|1EC57T?RA^+-<&&utH`}n^S*|MpO)niSZP@@f#`le2iNT zyxunF;0BhciXLBdZG*2{jm#&^qMuBjNG8oBuh9*h0y1B-bwmDn{DB1V7}SWtL&OwD z4~O~?Y(E}7jKl@FrEx-1XT79HuLi#0Tr>`b*nDU;IKC@dT~B(b34z_YI#`&9u3WTA zDlI2#{XKuKL%#MVpQ_1Y{^v*Z%9YHOmM-Y{sCF?p^c_@uf+P-InBan~X!K!A$D2-V0VbE)%I`qW)Bk|)e;lWR%4>zgrsYc{tt40>Jc zZt+CEq|d6Xk4L-sav@5fhL?iu?VuGUU4Hm9dqIDdvx+Kp#1X?MNPJTKrAPfE7Kk20 z_#xFMc7*eRPx6-g%rG%LENc^;#yK_*`WIBW0RsoU9<%P~sTz(R;_)SR9^EZ?j6t?d z9oMWO5{s?eje{ax5~0(iGX!_nQPvea+>(YwUv6XkhS)B@VxhS);_Be+IP){R2+ZR67SqvHBrmH6fCPKvbcrx$;1&iVL@ zbo5E*_^uf7)nI@}n}g@>gdML0zjI}^Sp&9>%SqnVgKK&>cRo8We)qhB6_?(tKT;R} z{Jgpb9T@(3_B`J8htNdz@yECAA02<#uka^!?|GGK`rhoYY_4o=OGBa2Gwt<>eHC;S zLXLt>sW2_qe(ogE@o&oxk`7FUK`eQlbI98C5eMykDEOgw(ZD2(v+J4T2!+giX8vUicI~8_5=TQ0E3F%58r^xq2K8^xyW+yMfH)bE=&MsQ8LgivyD1VkdNU>`f`cvvgY^PpGkQ3j% z`5%H_|3A4fDg0q8DWD*34vs&q2Duh|oxd!nFp0@`D}URB-Nf14MG{&=iR!T9JAMH5 zy^ti{Bb>qH%jWN^Nj85Flas(?)S8+?yaTG&uFm|!IRaB0DzfHbMDYL&-8qtF zPunmbdS*(;mF$}!$2a$|1V+7#S!*JcqZXS8D#NEb`H5K~(i4Bv+ZkG6a4R2~fawbH zM#t(w4J$-b0d z`8A5Oo#P$WrzxL%NO?&i7y-{eO-WRNbM?fYMG6#Q}c^5*Vhs%}_4KR1`#wJw& zU$csDU`WNZLPk0!^_zYE;s&35-kim2AjtSZsP<_4`<9D%^p)5E6rsKGYLHOOaF4K7 zSe|a%R2$e1%e;h;&m5lj^ZcePzXwdjmh%~5iTTfrt$pBPv36)s?|-T@?w|B_yY_-` z@SKZ=H_d-Ejin2n{K?)KSSDJjr(jU9cR@S)5l}$D|2UfG>qKEc?1h=Q@p|D_a5(>V zr2oWhBL^7r5)si}jS!$U= zfB}lPBa>`6w<|-qX%nu|fPgv}LgME&Y6q_CQ4rIpk{`Rab&z%=T!MzY&U=s~7K{68 z>v>|{a=#x9RFZ=8s@*gJ01>ZI#*2XikeuP@f8Ab?Wy$fofSo}lK+jW0@f$jXNqsko z_JDuqz?0`@l17lC)#wRKFR|VSn9L>aKxn~5$3u$=(*jw8pd6L#Qw}q9k@NQPUA+39 zfa&*OS`T3@!ac-w2i5!r2eCeIB0g9en(b)x&vDz?(=v?{OA8VLE&xLuOzCG6?h3zR z&^*pCCXk_%?~v|z=DH^BN%f#}(i7_g=pldi0dy=>X&}((2>^bo80-~M;M@|+oz6up zFm?q$Iy@p0N)g(EEHs(f5T|Yjs8VqS=hkWiSi{V|*vB=(JEL$+#cl->8$-1p#=~NF z^aMIr*M1m13OW#g*%Sk~#oQg?Ai!$Ufy&F+fM|@gyo>CG&iIXDkJz8>nO3;532A?E zotU7>|HcLX2@_IB2pT{n{%P*T3P7qQ^C_ud&zI@J~-vD z&#b7v1Ia4K>%h69CHHllXve%PE9N)uz4{p*zv((wmMt%Mh|4Q(;f0ml`dJTch`mU+ zqjL$@?f?q5#?FTTP)`ly8G9lZ@mvG3bzTC}^)qr>f9VI+3w7TRtNI%$7l?3=#k zO?{Z_90gtrhA!n@FZ}BwoIhJC;1+5DHg%cXcrF(-+4kKsEe@w=lAB37EZU*xDZQ;z zvgEkwb45dK;jrZXob(W6r)BQo=)nw^hn%D=uS{!-u61R;BkKobt7al-rYKO=~*CZSuB6dTr$)pGAB72 z@>jErQ88NW;#A~r7F)LRm3^W>!jM~szs(3zqLnsij|*YiigU=zouJqwNI6L|a+A#y zo0{!it%M=h!6dudTP=l^9z+kWwdeC4ubSucip|6b_(8vL-#|l6T3UjbX((ZlA zIB9YptH3}t5<7P>p7aB}ROvYv01O^GZ{WCql?r%n->xQh0W^O&A3!f^tYR6aTvCF_ zo(eeSOgnM?jpkz@!A##0WoGyXL_px_2yOCkwdWW4_^zij*AZ zJitiKjaH!wEqgytrh*urv>pazRL_Jqgh!=tIIXa(C!uC!C)k6f+|+*zW~aFe68>l6pMf41urhZuLzQtNBTTj%po5) z+wO(DNV~i9P@c5~+TCroAQ$IwFn4jvb%CbQOF-t_=heDH-%F^_`f3bLUk+-GR$_hh z#)hNI#wsL$70NaE6=X0Xmw_OVr<@fka_U*B!6p|xEu$yA9ii$i z0hRtUW1xSPr<@oR7s0I}&mA-pvH z6Vg}~c|u%EGXIRQ;(fXrj*~LG5b~Tf*T8>DYAyNBNQ3t71M&;P)|;piGw9d_PKP1C z_h=9@_LQSRMNT~$Ta2b%@Ko@oq)0V{vz>R1Sjd0vDQAKZxQkpNz~nL_clrjIcZFD- z?&-&(2Hag>J@yF8>pu^?9{%&tSPOX`8tX9sDAbq0aSj^Pmj|Iic>g)5C_nGE5CnIh z1?XVd%>+OX@-bMPCI!0Y=p z7W9^=`9H(6id|yqA!zUeaEP6H2H{2Myept5tGxk17GO_(@4%1(4|z@KNy@`!&uL@J z3!?sh(9$`Ks!`-vlH+?YujPh>q(l{L79VpDwu4-=T=zP!~Vy&CK)H?{XvaGLpG;0V{v+MyM18`Mo z$mIbNxg1C>3Y`f4pVspcnw{FRkm<@{6M)ah=tD&G zAy=FOvIy9Pfa+fz9zR5g2W!)#f0+Xdygx!+)HDd7F(HYhKNx&`jQN0`uLQvZhG8F; zZ8O}Uz#n+lW6XGeS1ZjZRq@!}$#AOS&e;ny#2z7PqD~HDJMangKLRV0wZ4Bc+z%?0 zwwU$K@sj}@HFFAqK*Ym;cw+_XC>tVVN|#2-Et)xlLr~y^aE>ZtC&vqQXwWwSjH&_5 zKHMlB^*kZGD$ff$pcQ|5jn(0{s7dKL?C~}3Yq@EC|S75I%=+j`vJo8@H#jR?<!#VY1Y z82%=4ZVr0E5Fm-sV_<{`_-gnmIICOmVUD42yJA^Fhl}X7u*ZjtoB*c0ui4gW0KAwr zL#U(;1~+UE39u}VYyrs=!C6R~M^LG`4(Y!{3>J9ZK{_E~&!B(nPxnnHoITx&06yT9 zx_mBsVUzBzEAWO!pj1o+=U5DkbbQO47JDp8!76GC0h^aY>VK?CiQc`|STM2JZ5y_`C6e4~PlwM$= zbXgi~BF2hq5;qE64fM|ODfZ)HgWbTqN17$~k`FhD%^!aej?D5{=jXLLH+7a+J}AI% z#Y%GHI~1vhSgAOu{JFtEoy}wLPWSI7w-g=$bT2v36w{m4>(R<%LoBPk0@8tVP(KWY z1Gf*>762CzEu6Kkbizc2&f(sEIKJm=5gf85!%Y2l@_Ph(c`O)ZD4Z++ABp$ChWCAf z1o+et{M&!`dHfE%|HV=3g}8Hj!F-$2D*S&S21(gqGeKO0(AT5+>Z%1~++Km0eg2wU zV)V~qJHqk~+G8VnM~v^IU&rzZi<$-eF8vkBf9U^{7mE$jAO;>6Hk{pDcmb z>NIkBJly2x9s$Z~>+9YEvc6_`-7(+D>p!A(}`=f~pl!d{e$<-(GlS z*pPL=Ph-{S>E&#iE>ScK&n$C4Sv8w&-wA^MIYkVhctkeN9N^K-NOP{P%nNK9BaUPj zr?7vxlka}-l>N%_;nlZx;t&zz^`FT#y^SfYj}UD=LPwrs_A}Wm1hSLE6tvwIH4&X%4gXzl0vxi zG)O5P__iA^d~7jOcJ#1PgR6ECM1NDj7Gigz*@yvqBo$D}xwoR7wb6{LBg7YlfC>Tp zfD~ss>O!&C+@?v6L)czmi<;S}`c@^j&Z<>7;jkAt?bRYKpfxiawz(=49G8EQz_gLz zyPX3of;=2{8?hp-zLye1z)BbH-CN61lpGN>cN5{t^)A+-L#ik*f9CRvB9qe&LI_k_ ziPdbG`qt|5`lYoS8#`Nq{ZDbl3X#~j8WxF|7wf)ar6HFW6fEUim)0(hescN7wJR%^ zMKha(NzW-%FawcG^=LT~_)&jh6q{?;u3WmYv9%$p-_{6ZN6U)6jQH%V9@I>ua8Ia9CqA5-gz6gL0YyLl>Z^X)rggtZZBpEsXvF;fjf) zVjU5t9eU0lq2s3t(CXRO(*uYOh)+qVb@i?7waeGWA6;F;|8rcj-W7j!F^ty`35dcC z^nwBY7wr}?hm%%EP=j(XZkihy1yke**&gakUMePxT~l1ts~GD=_$Ou>9_b2AbI560 zbLe1jphJWjeDof>;6ZTM&k=)nKgBB-;IM8kVrOm@G~9jx!XYG(xp8o+F?Q;K z;#CI#sUo&M5?`1tQuBX#gy~+zqsOp|)RamTc-U^^(4l(RF7=@34p)>y{5HCt#&0Q@ z(D14|3MpjL5kkKu9Vnj=(%+!q=`JIxQIKNrkbHcv&n}c^_CVFy#*|mT1Xz3UNn8@2S7P7t~ zIs+MorfQGr?4=FSw?&QrTxsZmDq;YspP~}+34j{AR9GOc-UA9?j@8<}`5*BQ@Za&H zA=zX(a<(nfpwOT`N$3`A1j$hbS0qyfkzuPkLMk+$=vE+~EOY@8 zgW^pq+lr?Gf~|kT*Rk1CvvB$Sk{%-DL#Pnli3Xny5Mb5ywgF~kr%xI+zt(jhWjIiG zVG1^zS*PGq6iA2Cme?`~h~x@fexb<75g5-%+>L-{b69t2tDxQ7Ietv8TDIJQ&{$j= zJ)t1$h|-RI$ii=oYf?tWiHkBY5#bvLbDy{~C7tieoeY2Rf zb*H;;u^3L|kPhW9mbe9Jx8SWoHqtQeBb*8(cm#aIqY+X2`N*hkq^iV%PMaN${()lmYRwjJ4)Dsh=%4ajm{Z~8XtVp6qB_`A z9L>^I9u9KiXzn|44cS~Ap*q4jJqn1Mmm9|c#wT9EuV^yY)7rA?j(MP6-)0By<&uAv z`M9`3YzaZm=7gaHC#;q7ED^vHe>#sWgKj6g6)M4qw9m^gxAw!`{M*mRHEl45GP*c0 zCo!_pxnU;@F;uv0!ArLdJ&xtAsvO?4^Vd?KK;T(spEhcC%z|CTZVhi1OqXHN41$4B zkJmxOBx3#>cg-j{>kKlPaFDkAPiKF{G%nt?c8MW?BcPEDVwgP#Uxwm}7;~ns2ZJKR z63a_*mOoR{kuvT)6bH<#jo?3pT`kV0hs5}MNgFX4kWm4Elpzp&wAs|RpOI~sW8$nO zywC9vz&&VW^eH@NVHS>rDu`-^X9w|e+ycH$X5dby8T=m03vGg6zNA>o$VR%*dtD{Fc28X6DJyzKp`<~~PH?Hd{CI<#Tuu(=e##=@atb6h!njw^HKD85bS==+2@ici%Xz3qR=I@39dN{uZB8F#Rj%9u zblks&c1m0_2{Mu}{+P%BcYWdGJf$i>gFGTlMNV( zfXrDaa9wN^nEjOLiaR~L5$^5h)a?SBhs!RwdnnS)^K2hV0ZD&$S{jnLedYeawxcYz z&3V;!4{2AiYxrs4+QZPakao$a>A7A9M!~)#P&pJO3vHT;q`s3lrK1#XKsDdKK`17W zX5Pl}P~#R1CzNd9l+APMyv6Q`i_1FlX0KslQUT}ctdAb{lf&_S&(Xi^S0oRhZgMtx zD?^e41dnol1TcTnQw?A6z-m^S5KIBNAy58Z=Jk0E?hG&;%F}cUfvNmf6B)D$A(sh} z`nfmxuZi()Q`h@iCY?4p)luSk$~*4>9H9kH4F~3lT-$&cRKfJh$}S{(*)H`@p{X2Y zwkV05LIFBOWm^s;(-v{<05=6L9jKZqr{0{N(W*X+C+~lpB1j&AQ2B_7x5xyLmvh&Z z^sN_iLh1Qtk`^T^nbQmJb4TiFU--J&6x6;_G8MIhs+?>tKGL757rS4 z4!J3fGlzficI6~q0u#QRLi6nm0e2n1`5iCgqpv{h2 zOqvzRAZaG6aC!EfI3^us7@9*oP7vgz9U&Wh#A|;A2Qq3(Njc86<0Kqs%sGv6$bhpr zk|jx^so3i{`ugFvhpM5px{v0=9pyAK+TedOB{N;YIBVDGzT zmt@lim=8K`8FmoCse!ZwCc44fhgOg@R6CjSW<4FV?UB4K8AXd2V$kf|UWSU?GoQc_2kjCa01}OTbd_f~!f?i zhO%r4KgmIQRH8aeAVfA?|6-26lL4|up8>|uEZA-fJzGNQk&e->P&dkOFplU58+yV$140bgzJN1+})5Ufev=|$%uv$pjs zXMlyG)O7mHt5cVA#$z@xmO$Ph?G_RiFBy+1Hl4F#S~X{Un{tkZ2Rt3Xpem#kEn|P2 z0A2~K)Dk;!ajp?}lG)KuV+KkRnh8V2e;}3xIbpsm*on?OeqMs}F;34OL-SzHc1ALs zP{^)YE}b7k#-@O*NLzvbny{=407fc{uWeQsx_bWJe*GNDtt!_pQvoICWUeLrCZndR zEMF$xxRl4GFIE0o)o9I2(!o74*f#iTOObh#)uQnqg_zU zwH$%mC|eBtCx8nn(Y74c0`7GN&L_0l9;hI(HK&VFrIE4Bi2J z2OS7;v#b?f6rk<}>y>|RhE^es+W@Fy`LX)Y&wyG$8ke1vlTBP`rpeD0pB2bl z5VknqHF=g$hMv3l|3Bl?g3bT2aX^`g&p*Y>bIRJs@LZ-7gn)$#X^-I=i60P59MONN zElw3fqTO30 zYF+r|R*?rFRwHUO!_6zSv@?6GDGHL_l!3c(LZQZZ>Ph5)u})I-=7^=fRnJ>t4}Nn+ zFHqze8l@l6i|H79DmxBQjfaHMiFTBfwri_5gB3KaD;!V+zFHj8j)E~kCaqe z4uSF(F00to@NKfp)|01^oTw0YT`Z+>90vN%Mq3dDP!Xs=g#QpH45P!L z+=0K5nZiV&tHeKX*%2gDFi)TVk3I6?uBYfZ#DHb7qT_df zS&ayV$9P=>qvU_$0BzQeKj0ZLdtO^n&@+ZU0F^@pzQBM;lktUp@Gs($i?k!4g5g5M z>j)$ch;quH@)FfZ&~gM4mm3k6&UDZObuoiJ0K%-|D-=Ga`a=ltwIIX{P^W|f+&98w z{Dwy3?HW#8;64=!0nRZNk;r49G-Sp*vSdyibq4F;$}fNa3%*{ULnvb)B4H4}`<_r9 zncpGG6x_S;PO!;lD87mH`NGv!ck-tY9Qf%gdoyutvdI_XE;7sx>KBT?p#X6N^JBoY z!8O`R5f&d>5d^nsHjv-RaZt9RB(FcRt_R30AtMw zjg4Cd;^;{E&)Jf>R?Q`H`uN!sk>W@^W|`~tI=_EMh>{s@U+!j>xMt$?(A9AI?l1u; z*z5)P4iSFz8RY6_#n~*xu50@bk3^c`dZkOxm%8|pU@#(eu_#hYU2HLVT3r(OZwp+y zG$(iQ?D*Z27QNRiU3|VtUp#%%qKIqK7k!hyxZtEOIt8>pJQBTElcw<19$h@;u%^>P z5$b<^khi3s}wOT%{VD4yp~BT0>7{nh|JVUG#|C32C&Q+A*FgvQ5HQ4H2&*4rSd8Bk z=Zsa7ob{B#ij%u%*|3Dtt+n)_9w2Z#IjMh;JCQ$|c7x7t$pryb=1!%)L)V^fhYB3kqPr;Mrn_fI7|{Zo9c#4ep}T)* zw@&1h=OeO!tT~D7L&K?+XCkuf%t2&P$W3I=kT9afh`iz8GR5ahYdFTzKQ({S@qChO<+>X+u7KY0pWd^1I z&+xjeE3=x-)G}qE>gWTmOVGes+Yp?FphUr2mz*j)6w#%IkgQ&3;#F$QLgX0<1I68K0giTXNPK)20T{CVbHi(MLBtcOAQ|r z#o^>@o=GKYQ;j~0pwD;$EQ(7m3TJY@EboAdjz?ZzroBCy#SP#32{z&SIg;Gu_7Eus)HA&%_La6Bg3I;eE>SIvk9k zN=Lv}FRUN@>M-`oXeOEOG^rdqMZ_Vzv~cb!6PO{K;~2km_WR%eezUnP*p2Y?G6q`{ zoQV%K`58NHL(ao&*VBJ@B&-@)EU9?g%%+8CuA(G`i78^)^CHxi0pkt1p%wEp)+su` zaVGTTa^AxLxV^J51SdWv*Krt6DW|UZS z1>uT57dB>B@TonAC>}|>lsJ4GF^h3!6a=V5dNfzx0`v%DMj?OY4IZO@)Wq&03e85>nefKePE&!CX3#~w%6S|hb zfE}5Zi*v39J*RelA3?bn*BLU3WgqTuHtj}rlzi&|6uBEfIeUsIgyf6`pDg|e^X^_n zNRf!d-EQi1g2Ngcc$H^ZJj>w&fba83A=8j)7H^EGwE^akrXMEy5)b$bvd#A{-oE45W_2|p%4@O z56x508}#hcN2Lw)w?OVyFSmWp7iB|wbUq=Qb8)19o(e3rhax>i13;>p_5bstLgj4S zzd89@`H4WwYgXSUSGqUA;_K}p#52f~<{5vg$ZmrEFCsn8U5n;;CykW34LPxK!!2^L zdBW`PrTu@6B1e=PcFc5LY~%}7JA|^Yn);@Em5D+oDHuS9CJlY_`-)|$UZn~^I;FP6 zO7qf8&-qs=ZE? zskLOibZ!%`!N~38V?H(8X(s^cb@Uyd!w0?-+G2kr^2S}pCqg`l1p?k=np~>+mCT8* zT4+cu%gk3>XiO~6%>dB~Ibl*jegOcPHhV#9IS>VhaLg3X_{l>8;CbOs~A90**U`|l&P%a+dteIFQoMnX)a!>|{n>x^_YOX>P zGn#*@SrM?e)9FdjAcC#BaYcfY616GY4~2#F5PV%9d4rYEmT8Nd+payVQMAV;UK;W;^Xl5<0X{WXX6Yj(Afx&n@GAz+!jcX5vAW%a}7b;RMD#|7|` z$mf+oIBvMOBF?PPh~7p5+lOt0rhAGovk!lVT0DNQB6F0h;yQw3K^2YsJ~C(eRmAETtphL)myaS9J7)5KIjJV)H-gs#veZnTocyfW^40Mpgo6XH zL0GLp!YXXc96B=a!xydqSP$u7K$*(N@4_XdITo9@z2nI?&cSpYb&wdT`78T`7Jpq1)@|##T$f4|AdlLrm zVtA26OCkx*kc^1{LUnh|Oif?6FEi?n0%T=-ofm6hu?T`ylvtsmKu`d|>p0QwYH1m8 za{#}jzruc!{Ql25r@Fe%so}^lU{il&SDjPmexA$!`9BI1D%vUj`S6G&-5({k^zBi1 zx}2O-_@*8=3!eSY5*5J37d4*|Ids*6gVxVx(e=jXn(yzemeiFDMHu(4X5|6=^YL8W z1i_;x(`eghQhxuRF{A%T26a*Kw@t{|&*%k1H;PdrOv+|tT8_Kwh4#^jmY9DFs~Tu% z2;hy5bS49T;5prGABcF4TB_l~16Tn}m+aGfWFeDzyeQ&yt zcZ^(r0zjTe&T%bsFGiQWl*sTf!ibvscdfnT+54fWHK19!EAGGCQh7_eUi>$^3rGTe z?ZwZXug4-?zGSriul9d`^INwHwz&ms6I!`ThKxv6Y8$ndDr zQ6A303e&!LU8`b%IimB-Py|=A&gvA3&`td=zOh;TU6;C`3Yj35W78(c?4$P;GU#>w zMK)M;>RpKC#i({zn>S5LRPN$4%*UkUrKHnZh+V%{NIy3VzNmkNV$=d=C5Dm~F%$kk zlYag@JM;x0S$MR!rzIUuA(2gaKd~jWU!dWIW{a(4Ojr;qOuWASR3B=oCmQ)ZLaT{P zO0a`GB?g%YN%O%(N&Ox!dnuLgZZSU{Py2UTg-icJ_R77xcWyZ+wcFnsk4cUSa^~6BFZn01!!pB>Nd3QlJ*K?X`&)b@st8jE*{*4h${A0R7dnCU|Px#() z*clHVaH+LPgzk-ukk#m_BCdQfAU&YiNT%R`@W_8f>Z&V#HCY}LL8tE&3Oij`CeeD> z&)-!bAEpPmB4}#VbJ{K{NjQ7PDfk`MD+j={3!-8QAWTjPyravvP&N2Clx(Z{P*y>A zZJwtDhKp10#Il*}ed@~m`G?WNaBn6{I@=#dwT&=V;k{t&;M zqu>HB6Y{oIt}IT8!3!Twk6$R+Y*r|RGi55dBsG9Pt3rRpe_^qh8qqk@G=u2sO9oJy zp&IDxIVzh5NzbFf8om9p|&|J*&ClZk;i`ylVFKWo4SeL_Zmgu86v}1bZdVlKUAogvWInw>zQRS85KuhmYW@^zB#V7GT(eN zXFACB)LP7!a`YeXWsfK1_qYyPv6mlzl}{<<6l2nb3Nax8_VZETpS8N znEGZt4!~D{680N2vm(K7s(JBWDz*dzz_)flgBxbl2HMR}0YyS$p={?NO-FwYE3+B@ zQ{I)W{G&$1fjwe0o{QK@xhwIpG(Tb~!^HC9Nf^+Aq%c{;yR0STh_pPE9io7UA)X_h zwqy(==@(fWvPKdY!BPJrgbrtwR+$f!;1wz$d^xiQH|*|hXYO8M^w*|s(L^@ysS4B@pr zSgIPOL#(owju#*nxmi2TeyHDhoxWAx{Qr_BwwYY9Eu&9*z#aJffc0+~2Z27GI~Fv#8XD5Kn*g(ReV>Fe@-b zd2Eb^#^*A#GA`F^UxhATVt`ge$m78S{o(|bD_LckV}uok_LilC^~4~mGv31ZyT!vs zJO*L<2jwCEt`hXkEJbVudSCylwm&N#rFzm=()aB_72y4o3>JTr?kJj=K8&E2aTO4i z_H#%wi=$uedSz5}Y5iC{3MLYVWmX&$_(Jm*5KVX1Unp52vU+zsoZ$7{A}`S$Zq2pB zqH1%&Rv#U%zZls+whQ+o1jMX)^Rpo4qeup#HbZwG@w}}SpzE4csuSN>?9(4-t z6VxFG{6BkNF#vyCnUEo&Gxn(uHbEe^x6IF{w5W3_{2>C*Wyi$_aSA2bX_OzgN}Q`R zZ1ZtO4YV)2#pSA-6ld?VzGs}m@-Or1Chm{1tjYmNrz+7TqA}9L`_?i|&4r#&q_yZEYbMFtAM%V{ON|^lw>eO;YhR5~iOH|nE zj$t>@fZ*CG2`7V^ruuG`Qg~<|1uA1{wa0@67%n(c8RC(DTQ<_%h$-c$z*k^JvSmJ@ zwYtU}MHmE^+-kF$nsX&vU~cCPJPzw;1M+6nn@xX$?s60jOa<6&7keG1)6UH*`1X&D zllHLANWuHv-ytVEn$$Q>?g9wsX7|z;`d5SF$_w-luxqs;O1(w7Mt2t}BQ$Hb*CPx1 z#UkW)Cyp`claG$LR1>^#yNA=_kP{{%Gk_G10*puUI=uTZy zX`R{1n;v75!M8CAXFnoWtVT8hs9=urT1$VE-jrcA48ApIcCh~W6!}(gSlgkIl4Ekd zL5MO^$4X_u#^!OzLjY)aA-3s3@kyj~mCZU!LBIdiVE%9Qf6QpMxSE20^;}B^HPseO z>r1u*UtS zJVT&(JHZ+L-|zowi`A_;EFs$7?h>CP>5oQC;l&5!h#Jpovjty)nj%|&F@Xa5kHJYn z^6&w~%^#0?X7O?t<{y!lA|aJGJAQvrS_%_hU&=^PzjhsY##d#esD!;{L(k`=*a$ue zIts*}i>$cRQI}eoEpA44W+sg~Iwxa#0~BHBBDI2pq|9nv_&l8nT;mj!dVkHlo6_ohqxd^;D$ zzKL?8=CP=*W(Qp?7cCh3jzoVK_KUxbnB1eQU|JsAAp9XwTi;IZe~a4scJo8_YZm?7 z5)_s?ozkyHXPx+ao{f+<&ORblLpdZUN|cG~XWweRIxP1WkV?*u+T7{_9rq!gj|=Wi zFh8^xyiHz<^)F*zcLm4LqI_*Ujq<$>@LLS3(74nnY!Dr)L!OqH%Kd-Q7+#t~EL9}; zj=8y~gqEEc$jF@|NdE!-kzkg;075{$zdtA)4f?W<5h;$Ndes~x$Ac1?-NZHbehGm~ ziY^}Y`C46Fs+x=Hg%e>ThJ5na#*#F`r}C)kWj&xMBoK z7U)@e37I~*AY>AMb2OeDK#Asmtg^Q>a8l)03vd5yu7L1WBIYdXfP&kMJ$S>=F-7;p z3S@(wDh`7|dG?{QsgONo*)3;%a(#4`&WH!bj%dkyAc8#&^M~v-(645W$-1|G_WUE+V>ppIW`Ajx_H%)M13F}jx?y8J zi?&vM9j8x;n@3|3^vF0bq3QGpQ?0CY3J#r_RvrXc-Lt4cM`%`Z8=SK3G{^a5f_l$i z>d8>Fps}j`fcIqOmxDn0QPA@Pb@SIZ=3?S`^*%85{eQQACA;~?Tl}&2=o^}lHIs-_lk1YMF7ml>yM9QAJ-x?Ykz%T zGTE5e)intzH8;2ST8@Wk>>+K+4AGf>siHn^92xDcLKWX~A&jbyUbUS?4Zaa^CsnwX zGr>*^`+-|r&IUg68ZL)fLAM#C3wC-hut8ZC7Qg=G`?lFF@XU&TiNk~^*&UpOGqV>k zPGBNc8cAY{>Y|pjU@!pp%?G!b@mLmlcYf79b<|jqbjLle?MQul44_FY>Zz`g88Mzu zGf~4@rz3GiDh}DJmFxv`$DlYKIh0go=l0${jPKo}ZZTU?g!qh^GpQpFhFmeh@NQP+ zvuAp9arSJ<5pZ08U8TLn)=Dy^i2G?pegm_k*PI0xozPun zA&`-IbE+_FW~ml8m$ugwwms#fu>f{OIAgB1R{*J$mgb3zL0eWctAB5V*pSD@CU@?> zGbd(_{6m^yDh4s+#8XjBhjG9qlk@NPxfX)G)?k^?IMls=rAr6%05hPug9MDZ=vcfS z($JVHfxNs}9%8{Ck|{*SIf$)4lG)pZzi;_@Z4ad+TlBIs0~#?Gz^V4cG2;V;|^_kG&g<-WN< zqBy-a1Q;5BvQW7L99lbn+@hE1%x2@IuIEr1UM!h%y*J;nT9RqNUCpC{lxkBpN2KaL zD4br#`JraiQ=MV?!nrok|CucQqf?a3V>Nk5$3diyx$gM%O)H1AKHl2$!8RH;CZX6I z5%LB$E3@VyGiVd|R9fB$>gU+3^$MNK^6Pa=Lkz#Qx>OXHSjyZ+u^2?vJ@bd&@wJzF7 zZ1q=vz0FHfR5s`FIdZp2_jOeEOKMTZ#OM`M7HVR4^g_L#f0~Bq@NThV5z(z2C%7(a$Qjf{BRjd$(ILT6vpXA+@OV^lu ztVE2(#O_?ITB!>7Et7bzJ7f^gQoVEEO?K{;a;MnIz)FBEXJ~^}8ZN2O>+ih!>Z>Nt zpNvaDJs=wp5)jHy%lVP+h@b|zIK5dUl)bXrxv^78#gdS1a%Rdh$R*Ip>;oMeM}~=i zclPJYh47pLC{Al zYo+TylpYfF0I{L5%5G{iQ7Nl75Y;#c=Z?eB8lk^$fETI0vo6eDh2_%aT{7N6k-Dxw z$u0Z{Fqpsu5~-A|F6g+lYzeYNf~q|yg1}9V2}W+22kb$)LQ;{e6i+{P`_9;Z$Vrq{ zCux_6RN_sUn*MxeUJN6)#fqOUOFR{-@32-~LL) zztb$P#dPt;f4BMSpQVZ)72Uoj6jG{}Cd5V%&9B{)NuXKvEku@UchI+*4+Y1u8-+slK_C%ip$w%?P1CXSiu!I_i5 zaHK>hfQ?>Y$8Fih(}Zz<=J1IGLW>6&9mc<7TM+)fxlbP#$7dgs{waDu0(;U3$G^Xh z27dNYLJ)-)jvUDOMRY6oW~6-D&(TR@^~MxZdO6m6?B(dF?A**d*wtTt(Aj&<;%~}N z(fmqut_uV1%Dm6dpJo8b$c;#a?mbkWhzE@uff0kScfwx0!Nb!W2n19|< zFrl<B$-Vg}=!j0pAzD~ zc%Gt^c5!Tkj}gTnrb!Zm@KE2_7T%hlQ0^wps06dh17Lmf%H=R82xK9?R{sTM7&h2^ zrG2VTVBovXiDdd_CC$Z=qd8$D2l)#967%|DDR}vRw&3QI1(CP1#AFb(&8^0Louo1O z`jZ4a>u^fqmUEr{-y*KX`Lr9te9D5(%Wa-VXFhL^XQ*8{T<}yjP2v}rbbYe!9E;~L z+Ll$9d}IxLcuEN6Q(dUgBm1|q^ z3^KZ^Yq*H^6(xz4bz)9!!Xc+v?eJy+N5*PIOi>~<@-cF!d6uzj)sG41iOseRAN(@S)9-d9_g|<*KnRtgocH4d-W8ua* zqu4bUuf{14LUQhcGBKK2`i2`IRHg@<2J~QhG{z&>5}ip*7h8`>SvFSZMo%>FGGX8J zK|5d5Q~7zu%ny^m1jz{}*WuxGG0El0nG=EK0y~4-S#v|t4UR)jqgM5_?xmKG(OJ8H z={EtTisG7uxKRb|Y1-x`p5HkkZ`eY|LqSy-FTBGE&ZzGb$3^O*%4MrFQl96!Q=sOC z);Rh#X$)cVA)lHJ(EEPXX^X|muUPD9(nr0fIfl5pVn7 z!kaLi;5aVw6&0$pig9wY&gg2MoqyTQG#eb&Bux^pnLEx8o`r61uuIN}IiFsw0&u-o zf=MPo7dJe!ya~XyIYyr7>GN1LK@@2v*c|86M8wtBT~aw^@z%=n;_e*RL-Qejm&@@K zGGBA-9*`47*iCg6&o8D11cS=HU@u;Y?F)>ZosI&gbPOwJ+3ay3%R_u*o|RyW2>$J5 z&8xgaB(b=JheW7CXE`^QH=%=E)-(Yb2Emq~0gngW9q z1G*i|UU5g{^qSBQ6&Hg?S`Uy(h-MWx?!9bxj1pqO4v@h40(EPx98 zz$JQxvyKxwc{-C!J9+G?1HGN2oy@)9&f9?Vq28%@=&7~1X6pG@Y_^4ez>gq=*BBU%e3*7|^%@R`8+~#&LSGedc=}>j7KjmI=Ga^{9KTL<^jMX~CRyxhq zF>|Qcj~u>!ZnUu^fcn`n`NYaQ`$zlim=-;5ouPmEPe0qwGx|#C>#?@5!b_ijFi~LY za?mG;pUah4)59JTu#Q}RdgzWr@$^(gS&BCLaRz?GR-1EG%W1+6BQlXOo2`G<*~wm+ zb4GFo*s^nn=VaWQa>@c=$a)N1->tqbaBsfb1_AWY7L!wkcwJEX!qmw0r4%&$Uo2wmqU=&pZ` zI8=uv*eSg&85+`)xf{)^>896$`oM2Nm@8BTL}qKQz2itf7xsIYa86@~W%M&{aytvE zHs6b{xU4y@blxEu^a&0ndheGjg#H?eA{OR>qr!i}$$IutLE?7Z>mEFTcrSzxzXUTb zhm!y|>eW&a$<|VTrp3%&{8!YDex^7*mWUhf^e{gF;e{ewakH;f0?y#;;Fzun!YSEt zjD`_w;Tydn4YK?;0l3D(;6aq*iZ3ChIE1%Zz>@3W=@}Vu0a_>GqRuLl7n{wXm?(V& zge3xg>s&~@`gju}K4uU6xW~LGeWd|rHV#Juz!Qac6;iE#%i2NCY;n~@1qE`)ZhhJp zrdzYmyoTu{)Hm811}in?!f5l<& zVx!Sp&LOXVSGHpbzq|>T{jWu=)DbgpfaEO_C8@X;G={u8?IDB^>dtM6YLY17TBRGS zwk-8YyG7!qV()vt0=FVPfRaxqs^3NSLP9aDsvu>-YhBI~FYgsJmO*mz>6U`p<}5m>?sKkdyZw91eLQ#K=Ij=^a$`qrKn_rtx|oC#0z-Tc{qIl!Y|9XcoRa(ppU14?D$RfO5*uT@`^ z%jV_YxOT?M=yS$K8U32dJtLmUXmI`>y3TlKk7B5!*>(L?4(;*09;`YGWXz0?(k5)LkZ zEpvYFRcITC@WV2G$kJ1`Tis&OFUxBI{ezMYr#Y#*UnOsF&E7?e>M3 zhp;WB1#5nRw=fa*FgiMORs7tv79VVXt$N4`8lR&qCT|l73V^KiiL>4ZGjWn4g-o&O zL|rB*NtfC?Z{c3q9}M1cPEG!HcZ}eK7p7UlvR_>#L`WbznH(K!!C?XGlngu0(0Tpx zrLX^oSO4SJ&nYcC>sKwl>k;kxJVaN>u?m4i_rCs;uVMDhSD5TXwloJ?cntb~@)Y%k zcA_%V(u6L#=_x#Pcu6Rm!61P_GpK(2FofimlcS}(Z#Rec_PgLxQ`zWt0aH$=h%Mu; z0!Mm^888BLo|sf&YjB@aXYkS50T za4KstDx!D4ZM$Y_a_sd)Cm%0SCw@FB&)&~E;&4%pzh0LZr0nc{)`Cd6kbq3>@V%37YpR$^A)?>f?A4E z_;&R}TWP<+m62C%msQPw%DRAYVTZlC1LQ9K{d*n9hHv2&S_EZgHDr%xIBDmw!P(L% zUHL2?f!AD^FTRwn_A1^e-vUKh`E?+7M9cTlBrzB}?j8&M_- zz5GNo+%n6|>Qy(t-@MQS^OB#!vtPVtMJ_tC`cjzB@U53ls0xLDNp+vQ_*AOweK&*l zy$esF8x!-p7U828n?38J;>R>=_E9nXTzuO0r_0;#8nNO#=Nz(T8HqV0_x#(Tvk*Y>a5?T6Sq29Q_H zCeJ@Sdn(Sp6YP%TvkzdxZQkZM>}o7Q8?nvv^iIV-&k6zw0W1PxW-yPcxV-_*1b#g) z0R>Yd!VB1c30AQ>ssC`stUrCXjMK#49}ky!{zb62Py(pcSnSgk&z^TlZOd#fL?>#N zzoms`WC!^GXyXksdw!7DZQS*W8~CW2y-jj&=4{)ZsF)c=+9>#DV_WPkqDrbun*((? znQNKsj(UPUm7_)R4tfMIk~o|4E%RBhJa8+4rkGKG%sDX>7>4!t&zrM(lVE$f^_3+7 zRSN-aHGKXdhw5U0=33690&lNBhoad#Jw(RfxR!B!=r?a&9!14|`x}H9Hd;6ZT*ww~ zawjXv>+RfiFb%qjWc1iIzGY%E~Ipom`gDf7xc z(trbhq)`Ma|6VaSOd8`WlkbpNiP2&ek3&$y(i5Z!i-c#*hM$P$vxjcD{pdHJ*2g$l z@FPRO>;8c4<~FR&Io7Di78?FKE{`;LpY8Z#Vs8n0FhKzeL$l|o2H zRsjEV+Xy|uUPZLg1xAQ1hs6N$+qn7qumu!nw>6W1>hV|7$>#Gl{AetqL8jP%KPDw-rVw74k?cM`IFME195QFzLKK47Z~ z2g~xvW=G>w*&sku!Hz`4Em%*3Wr5y8UYUUy;@X2+e=&(ACM*y+&{A)0J6ZPg)qrm_2)Bc#fo|NG%jA8<{7rXILSWGurCBC_V5+MlE%f^O% z6hqy?!TMv!3l7=poDf$GD_i$}E{kC2l(u|+Xc$;=xc8HCpNy**sidFO>~lkjGeDQ} z0cbBoTQ@-K&-g0>+*o6S6G)ucEDx)X+8@X%>~ z+QTH&8+Rl<8ng)#vp!)@aE?S(BYO$UxDdl~-E@atp3rBJxw)7}{{@GCpf@<9b)Xcj zesXTjqT@(!gqMLnKyDqX0iej3OE}36*PkOxDvHQ#Ves4`ZV^4EOlv3*_WE+@2~(?qfp zL|<@hJ)nD6#-!V_@@i!%AZi%dx>KO2Ycm62;B>8@ar* z=)u>vVz)q+Ae81_AEYiB3sKs{oW&ktJ(Gn+erlH`j2PdOrJQqr7eEcy~YhD-N1w?7oz9vJPjuv-TgnTLDt1uM1 z*AR<%5MZo);gaV91%+>no&ToGM0FxtbR*(Y4AOv{F<~iw5%)n3)rYQ!c zN<@N@-4m!q{oWXVaybg92(q9lR(~l*D@@emQ?oQ6Nyym)9|XE46M%D0oK&bQU?FwB zh_b`T%S2LmN;a}?Y0MEDzB4j-R9QZNGJ--h@`$KG`=S)rlEbedrwu)yaVp7C%I`|H za=;0O@uJ7yZE5)6u=AnB#iZnf)G(GG0^!T9%# zB#%*141ZujQCFiQ?82L)S+dSLc#$<7mk%rSWy`Z!l3X#inl84M+P=HB5LjE<3u1uU zFwr$jUT}_oFCa19T1<-bWuZGZzIX$(TwzEk`TN=I+o}v zVHGHU8X102EtTx!>=!!Ek!g<6K!-G1?q%G;fWn*yVX>2aKZvrQUdhhBtmpI@71B$N zhh*0B=Bkt7OOi+&EJU)SDsA|mROR3g8+4Ze| zVToZ>K+upd;%7uMyIVc>Q3jU5SC|8T3;GOeskw~OA@j05`+SwM&z6`7=7=kxzC(;2 zPv>NELurv1g0OJ;l8^ro6N~drInF9<6^CNx8?k#7rni&bR(3_I@>}iIYIpCMQ%Rk z)T_RZHO=BM5HXR5C+w=41)V@NWK_LAt)F>_$QG8Qlzq@AONKro0E3l9A~7k`djE*( z96#_zQ1&+(t*H(@Wl+YXs8CJ2jdh<{q?xA|u0zH{{|A80V6k&SNqqEwFBYOY4;P$i zfjUPOv*cPKos7twNqz_cvIa*=fGsnB%@u~C*?)BT5|QY17)@2p(zqS0pAxX&C0g?+ zhc#JrxNMh`twe;SQa)|8054>+%gn`h1PfRHcu*IM+U6C2~ zX%&^A#qB1VX_&1J^3GHg zwDcPCLNJyW1_P)^kb*&slax*P7@yA@@oDf9E3L|Vwx-?q@YAM-9A?mlhaY5%&bl-F=XTg@x z&6omsE=}%#w!gT;r(S6o3W?vC2A~3K+(l`@$#HH~tPdQr7P42ELiCj_hGzIy&kG%Hba%P%U)_0dKEk{#f{5?_)kSV<)bZDyb?bLGZcNNgs?Q~6hy zMF<4Efp?YhlJi-H18C#S+H{e7-l5ug_^$+`W4H!&e z8ke`|kU*#!p?4LU=rUr0Af|&ZMo~>uZ#I6IdtUX@gEx2Y@4j_MJ}^8sw4B*25xc-< zE=%cPEDVUmx%xesoeNhKOFQ4dQiA23*O%(HngvG$e<&)o)=&63!Icn!L??Zs&Z-Gt zrwuNDj6B<2|3q08Fc5K-RyDdVYoSzu@)hJj+G(rWZV4_~@t#WxA5Q+xO%{E>%}Dxq z_rcvecVEAr$y(|HYf1L-=*HEX*Y-`l)Zh0ity7+b`n($cI9OG23t+=k;H&ad*sn+O zo6DeTT5O!2IzPZPUV}BGv76_Gv!V*&)R8cMg@mE##rD?S2lpPW|MKqor`NLzx48a- zT!G3X?&E|}-gK8#owC2}`Bau-m93p>D2V#SS!%~Uc{Wgp%vgILSq~(&d0FWa+SEo1 zlA2#(e^pwxT;K=NPo%jCBkt16wV8A2WWaNb;TL%RQ!uwNf@AmQ8~YFaY{?;_7$_-! z454pwDZ2^tLbwUbHJwA+LX~Xeuo&Q*020E-@1n-A>mvssHyuCM5@eX3C9P(Y<&GHy z|K!qXW1^83QXW!g&BBa{WX@>d(2C}8_tvA^5B6{0y?JN%dbUA>dUG!_TSJhwZo9a5 z%p;-aOW$wkN3fG4ftFY*g%?)e9PfyKh4^zZS;UG-ndc|E=DQO7jStG4K|yNdP7&oj zH3w*n$-skg)VF(k`wyPnKKtj}ckkT3Uc;+majoZx4gu{Z^MoFeD#*4T`L0*>J!d4w zl`R{D3mj8sM`nSpFiCsJyH1!&iu3E!XV2~skPlS}h!U1)Ns%CD$>M!ZK5IIEtQ=Fz z(ZW)DG<%!AzIHXcclO@CeRp5eYtStIz%K53&Go;TMP070*WOGnyytW#so;@zY0*KX z5KgFeWwQ&tIW)>BEeXXFlx)HGO{S;`ClZLN{i~hmuv+<_$0zN>AM8H3Lq}w0-#RYw z`|r!c=b9f#n|1naG=4*r39y8J)Qxt`vPAdQ6-ey99rRq(x`jmP;f?SBS+!%`{m_yJ z8tII1Z%0$Isq+>Z6r?P@a)5~hWwqU0-+pPd*zIq#Gnha5*Ss}S_dw*&TMlzcl_$X| zRvpaFhs8nLEaFbB8lfCrcV|?L2)gaIxFwEtDrE&o^=C)3c9#@$li#<0whJRnL@ni| zrHD09p?E<8RbsPpTM1~>qom+j@SlRe>HaUKCY51TW#=1g(!6+V3d!BRG2S<*S?fPp!T zP_&$a<9~%jD{D4s8TQs659fjoY=empNu_2%ZnE)>Xu=lsSi;~zPOL&K3_5549(l-h zVr)Q-+afH;o$R+y>q4X9XX|)_(bsszBbbF?0tS>%6L+D1r7gqqMozCf06>e`4!+u2 zh6Az+9`hM{B5=XiGGPlmqyR;;RciX)Bjb57m%kM2+7V{^4lwD-^B=50^TPbKE9;)A^BjrY8l7Ai_^(>BbwYRtpg-A7i$%O2q~i9Da*qoV)AKnte!1^A`NO9cSbu2AxKY$X_U# zjHARK7Dlx+vqMFGxtThuW5?Gfy_-(UX(NA*tF?nbM1teez7%is{Mh11)lOK)z5A#AH+RbA=8U5sf9=56AcCrm23WD(A`U@GgWj!VP zqncXtDT&*~AV91<7a?QVXW#%f)3rAhz%J)1seB}5DH4Y8Z`MZTS5ki{;8q`BbAKt~ z<<}k&9fe-)WDkXYA~~xZ0p^=v{pCu{D3B$8mU2aDA%NAO){Co-EUtoHqVogYB%`ac zFXDCZ+ofbM-W(5=hlj<1=!1dYG*9l(Xv?Idt`!er_UIaHlWTS+$dqiWS2-IqjJO(g zOijYcxLq!?H**+yKzBG+_2NcI#13bgy-1S9J!>3pxTI_Q9dKcOjOo+H+wjUN5jEd` zAwext0F5gh$-R>W#+#1OQ3!WsfGW}6*bLa3vu%4(0uF9w*Zim^yQ(s;$E2 zUaBF`LtJAE_}p)Q7jzmqXYHWHu380u3~a>G=DQwrUSFqibpddmiXLpf?WWYtg;3^L ztRszbB7@pZrPF!mE>3}i<*sDJyTvI4n7U|Mv8h7zU^hcmwEIX2a+ zX&sLLpSQE?jVrs-^ZfwxAI``ZVjGguw%bX-!33ZvN}^jLnIu_6&UG1cLwp>~_-Vjsv5AFFJO^Kwmg*8*quh{0{$;dET}5-sfYVqGV?<7j27G zbFGGGdv<0cLd^@DD($;YZhzda?fkj7}vmoX}EEce^W$Q8I9>lC)~7R zyRo-XnJ9iN`ers^C- z*Y})6-#%$6gA-eO${9>8FEM0&Uy#iz$N1H+>s;+j8ugOdb=oU}rt6IrbNjEI=Sw0* ztb{m2@_2#l5u1?NS4^#?ml-l3&Wik|mvJbYU)e;}$S^8dtm?bU<-ij}2q1I+(#E(s z>YwXBYP>>z#qsCMDmov3k1wgLfSk z7PQzoFB2EzGBCDU9h@GBWzRj56ZjsNBc|6WJ*(oMV>;Lbsj7T`gDth74s`KAQJ&|Q&i}2+6RU0?vx|MJnFjEg-EnMEx)Ew0${K_&$+P<%F1y?~o(;>bfE^3~!6X(8MJg$A%t0Am7P1c2#Z%Nn+lFSHu9-;k|( z^$|clkF{R00mQqUVsW-e|RWN@G;H$B|_mn-oz< zuM>AeDJP#+datA2B|$Xhl=x*8bq%y^KGWgQB6>nkI*iFtKQ_r$izxZ2`tec&{i1`f z!mh{8^#xo=EFuMD2|NnwTFR|cuiPDHr*%;5V8^Enz-Og@dNpZ>DpeOn$^n#g(NRW$ z&4B(gZm++BT!_p~MH4v}=+(S1xVAq4eqkK~t3^eFl=}0;v3@irP5dJx8KyMwN3$cl z*k8)bQ73?v2~LSrl3q|$rXmYjSMxR+LM%v; zXtYqqzIG#jT!+XB@J8Em0c(hLB;133VSQ6uGSx3^#n>KjRWR?8_Cs!c+14in;fw&8 z`PsHR)|X28b$zXf3X)|2$pWEO?4%RlOUb2WrlpQ>B3hUgarSp6#L39atQHSsQgJ8{ z3Gj75Ejzyzmjd>UN~&D&$W{vA&kFRh+=81=wC)0b5=U;_gax%V=I7wy%izZDm!=%WI{(+SEN*_9o?CEvsv$!Ii7}%z(VV3vu7=((;x!) z6(@?dW+xpO;VsN64ZG z30_$w&6isDG*XpwKWzBkZQ|mtN(lQY;K&!{@Rr8Ug*;(6j6R_=o>IBV6bBXIUxLiKv|WAz8)# zOYP!qjTb%Yh@f8p;2Lv_8VR5L77U%j)rn_RQ$56ld$&5Q^h z3a!5W2L?`Woe3_k!FV*K2v`1_((64U)aYDb8_1X_I%9u)*3(T>l(~`SgG`d?%f+V? zQthg!x1%(x=3X{Q{O3eAg=vw0T`yyE=@I+dnexCehgp}|r!6xjm2tPtk!{EO-7rT~ z0&EuMvf1%ku*&j1LP4u#Q^1icOQt}OfzDS8#T1!uS;4jBD?N!m=YGbr;RLW`XYKN5(g34&<;rYs?7QV8d3o=iZMGiGVG8u!qWep^C}koZlU!v^PB zo!I+;4J31YLNDr<2=M7A)Tp$Ql6c0>aYDv zIsaAJ#r9M3JGvVQ^kxTtCjK6dst_}EPhqf}kYmFNibTva(AK{!xUc@LTKJd;&iw2;`81Ij1pEn5dLhkH==@K zi!vHG9!e-kybp@&Us?4PyBL9?i$Gh(*Aj|5Rk4LXk0qn{1PSARF;2CrJ@shSo$^m_ zK+bw61X(q_=-?xTy7=P7rIkwx$EJ*V0FqJm!)tT?QbaJbe0z9bovmKECn9@)qCT)P z&7-C2iBF=d%uX7^LWzt}j)an9uw}`tIqRHpMmR@JSK41^I;yR{J2XNPV4?0Uw1C@M zM`XRP$xva0aH23UMco}Jz}F&!En&NcloMAJkQ!j_naC@A>QQZRsD{go*$Rm}_Yp#H+yGi&Yy zMS`O-n^nZkQPn|lUYJX_sU7d}C9*YTjmMCJi^w>kK+~ar_#}em7z-w%+|<&2&#XsM zZ_J+Fz-2EUbegsb6gf_oPW@KT^9;XPy|6A$2a za=fdoFV0jTPq8kv@a#K;}%rx3K>OZwR2t5Xd1CBs?0cJsek=V?J06(CyPOjBIglb5zzM*@i-!XlR*WYmvIfjWyHF-{9cNygMi^bju>TR zt$aOd>4CVABpHXqo6(Y%EPxbcy+DGXxe1zqVQg%`YFxvnGSZ{T5SS3<*k{m;i-kuw5~8-` zV-d|smEhza^aCq;TYWJdzZA|$#kY|&#dme~Sscj#kp~AON@e>6<65gwAcAZ(VA|2W zKJ#8CYFel36MCYD=qyYdzq?0D8aqjUx*w7Kg0Bx|ul^g;Q#2o+*yb#V_X)Yb_?uw| zfE@-`m&0dPyiNDsL};RZeo5R&TwK#rBU+(zf%DP7k5c(C48`Y$h zq$M^2^t>5!N`YA26KA^+&U7ObDpZtL`BNgv#}dLZ8;h-=VHZZ?qFVMgCy{c0LNJaV zQz`}lkz*R|{cLm;24Dez2>X^Q5zelEbwRK2(@^k1<6^!NFkn73WLk<%<2bbFi#r^w zDn_5RiWc^fh%A`v#^Zn_7r%eIxX(nFQu*Rz6Wi5?#Gzvv#%Ry<6Ig^S45*0rKpg7O zUSMuVl9Kojh7U-KQ6;h{oc%+8o-c-MVws>UO=p+x=W9fCfEHKuAFlZ7Q0$SWp(sw1 zDo1K>^cDoCZUPsCo5UVoBPoH?#K*8VGh7B-GRKlO#fTDQwUS}tZ^3kkW`_Daaf1lp zZALe_Oa(oas@)$l$#j6ay{?PWL+oXoN<>}GEdg(q#LApsLB`;JMT)Xne{(>3MN;k< zIdSh&bIPqtHN64l7({($r(W(TH%Ysh(M9OS!mNrjLVO%d_3-nQ)1l=nTWWaiegGOv zRtk>G()==cL=GVM16kMN;z*#dz)mj#X+6y!A=}3lh$6>CzL`;L(#lC{Xt5DcdR7L8 z8pmC?FC>NoTHiK*{rB^+Aq);p<{d|lQbt@iEe^xV>Wo>3(Lwf-B<9#xO|00?@4HS) zsKFsPuoAyUa?Z*pjdLU+Ch)@4NPe%;bw;iEFn3Mapf3i1o5`C zb^x=f+>+0^4-@w#X5b7O{eX~b;j{B0BD$PTeQ`FVB28s~F(h*@W$LQ28J1D3*1O;w zp>L{ndzMT)hYCV;1{TjT9*bPuTv%KK**bB8=v{F#$R1-$0c{^&K_|l-YLawk~VhiX%g*M`m z71m`1+%O}5cBM2Q`?G8;7z+aH0~V?je}S6=-C#hhVI@aFgPy>+5d=VXHUmM9O$dXG zj)){=`x50c7>I^~qEyPQV1^VN1u}{Rl%c<>!_eN>#72fibvY zkSJLsvVN~6&rORiNYtA`Jp%QcJ8M?=9#rY~o|#yGeHODdf%wiHyXuZ~?KgMs_=R`E zm3Q`@-EpCNMV;Gk(7R&_^KWp29M|Mp-gyhWcKy$21;j{!Ee9EQ7fI)%sj8?=BAq{Y zxkz_#$)7HY&OdlX7fzRDG|DM*)k~s4Q8yvqt$wQ9OLokWq`Mn8TGCtUtHJn=DSNTVuDSlYT1;W9ga`o(Nj!hhJG@tFvm%5ZfzF838yUO94F8QSpF~q7P_=%pjyp5)!e{mj+GS`%cY$Sq!Njx z6o-pXF@o(Kim%183MT9THay#O9fP4mkFY@YjK}oEOV1_An&#C-t)fQD0f$@Yi%`jb zfX78}A;3J1M}R_yQv)Z9kW7dGcC#!(IY zro{2hgRc217L@=NIO+`-zrgW~XsP+kSSz!E-yI)Jdes^i-A9lT{10~=-T=U~)#;i{ ze~hkmJCufmW^;+8D-;W7DE7sSg%?^sfYUK z&HjJw$i3U^W%cy>EMZDx;3$v=(+$mM_&yB}>p_1?R1C;w#QCtc3A#-4L;R`Moe*n` zgvBL;ksI*FEe`=t4Cy$);fS4#F;)REf7%*F^*hy*3GhXaI|fpFzs92Z774>>U5l~C zO>bjyozIr5`RrbH&Jq&qz47Hb%me3b<+eCX{Imoj3d;Up1QqeThQf{T5)v#S_M`*{ z!4elP3_-a;?j51?R~gK^TBl;t?vrR@@b5mlG@yzd{u{e<#AP zXyc0>h=7nn0Q1)$=?GW;&K}6K48eZ z9Nhj!AveIFXDpvYT0NY=@bu?KjH#fnc6hvvTzo>zi1K!^oJ9ieXmYFv&H&EZAZEco z=ql_v)A+#)CW3ze4b+citFTwQf9uW0KZm?WRFo4c(DOHo%z5sWC3|>iBz?%wli}(l^MiD#`2VW4h#@*_}cZw&B_p~$<*gCgcf2$VtOC!D` zWte3O!~pI4r{;XGwbVm21$>=1(lO;9VC)&Tt%Gzg6zC<3#n} zAO_st0k&E*D6zsem>wk7nvZ&}b);QVF;(r{HQ;XIDb9eu*{kcpCW&6D<)|4h&Nb_; z$c?e*SE{-5!;A$G4`Hyie=H76=XuAkY}ZlWwb!nfWyFV@NfOy8S<%)FnK$_A*LeQX z&&AlZi7W%vT2evH`lQVc__DY*j8r=A1Y!z9#y{DVnq8Nes?#NgJN*9F?;TDrzQ5ZU z?v2NT`{NHNw*mhPy3dOg^!@R`6rSr}O#RBgweOcqEyI4tQnT2AfAGX`x7tt2R)ohU zGQKcU)n8xT)BuN4)Mo~NHQKP`S6MS)24Sz(er*Pf1yV~}`StCn%(G5=8*0DEo?r5W z7&^0Ng{7x+N{B;IK0wC;A=5gV%_v-*uSLzT}h z6Seu{HF!Z~dI;=uqtmq=3eAGcRoktaH+^8#177#rGPJD=w9>D{)YcZiTzWP}Wx`EQ z3%}@RCUgP=2I`ZbAywR)_s;?|xTS=jO|kuy{Rxr)LGBC>e^RMuvM}Rnj@T0{!m%Y! zs+le(tQd$}ls5Le8m|j@G*2~$G)=mT1w6C|- zNn54fh>?`wS*ctu1`Aojm(Ux!wbt)%|T5=JBSWqW|PLTe~gq8IhBkQuecktP>CAc%a^P7 ztKSRSfV1&%tlGKOxmm;eT4IN;njH5p7h|OSL74!m!~Q5Cdpma;C!Q$q+mi znL%NNUTO8XI#e(Vna1O_mv7_twr@V%7jMCV)-aF2cjm>GpmAux(A&Af7rR z>$5k0im*?gYMbbfH!l}5Ib2qJ?R($&&?492e`;;BNm?mZ3$Bt$?)E+?zW2=!|L*qp zzV+d4bHKxA@948{e|Y<*r@Z>fy+RKn!zyteFo9B;g;maEf4o5E`d7osbBez!!js~& z-}%r!d(D%=`y|nq()BMTT~+~k)L%z#e)#OB*CFX1^1~hPIHwGu2`i*l-pL~CVvZvOCoL#84ZQRLL@MU+llb=D13#q)5wc;R zaQ-z)`s@uJ#ESl!4U_F8opTg)#oZs32iTfDj?p$ua@o^_2m|%ndB<8&9R6izPN>6z zO{yE}jI8Qwl@I{pnT<&oK3n!SVanUee^~3r+Q9eUM`KJu?epG#Kdbs;IZzcDs4{Ld zO>Y~XKCJ?yAP*{I)s+ysSh1*bDd@v*f7tToRtgCmWyZYLBWgT>(UhPI+OiZHYvG1RP)7tzaZuc1oNgIFVyX6q z(kD!+`hu|VwiaJ)O|(u4@2U`HO`;0E9z^oXqPXH5l2Sl*IaFp|xgOfzD7sPiWT^Kh z_nth;>?9LRNymtX3YtIK6M0#Ze=IfuzB3n>3makx-|{223CkRlIxg$YfrSD1QWR)9 zMbFob_MwoDEG+RgJb9F`971Km6)#`Kc2O`KRKAiK)xjG02eA7mgzX6a=0VCm?iZQ! zAvg^RbDTS5c%+af^)vv4p9BQFk(%_nl%l{}6y65pI{%6p@KX5f3W(-hf68y%=u|&B z7=WDQ!c`u zNp4624Pq|iU4Z>nNpXf{x9Axecclq&taQx&f?&BMn~#9Rb}cf#p(KSkec1;Lx(Jff zxK}kK5eAqk za}CGhGrbD435^g=Kud8;|5;$YP#_JrrO8kc4_87n;^Qnd!z*#NmC+h9;VO{EDwzo` zQ<7WA{iaMFxV`TCQWGuDGBDAcr*JN5A$|%qoU1V@O2|72uaDr5e}5)uS~r|?rt4Y( zSis8G{i$oU|M_DS7=ilomza4xS#xhBQe1 zytXbf-xsqhx;7*Wg`x5gt0jLm^uX_7jBwK<4w*(U!TJ3XHsuNWNmg8}PESxJ^ER%O zvKbtSWtZA^<6sQ(HRg194K=R~LU=+3;#4pw_9F2)nwN9^e=!)Sflie~DMIXn!kl~+ zQKqM0MnLChJFZUyHf>Pen!Me=X>RF@pSdPws5h=`c1)sZk{2hqAk6DiP^8rNU1fJs zRbEv@P+Lg3<=o8+_5gN3pgB3u?)1k`D6gX~ES12taB^r_rd=Qs_CYskl1<%CcF&FO z)u9j~%%Ex^e@cmLlJuEb)=^Fj$Vtmxgo46PwosJsdD7 zhsQaUFb5snMA|yeRFG-ddhX|9puLl`iE?Q{WM%}`e-)j(*J#aT&)5h4$waYZLqVvL zm*|d~Zlo;&o(kh6?v}xzs_PiVGehN7{syiRsOlNf5D2(jP9tuq;>!sbS6;NH&XQ>W zy5?zB1~6xlCD|Hu-~=S5cJdIMlf6YBPFr?sNf=zV2%b@_N*Hwfw9Wp}K|q*{s-A|;jF$)Ka?@yV0BR%n74AxFB>psC(*dWM6h z!(uRvX$An;u`4P!)A!@N*IjkoY2!K07f|v(BnZiPu@tk!!jz^hP9@IXjuGT%H3UgP#?(>i7SxeK}*B@ zD5Y%L(Mxx+gj6hULTp)9cPx4vgaBp(e;FYTH&ihnu^vh9IOnQ0F)C6xKeN=~q$d*e z`KBF|M#RFGFS`vBA(Sc-2$pk5peVL0YvJr{aJOs>mYh=J;?_eNbL&oVYYWyI9AO-W zTc){-!K{U+CG}qTOqi&@S3NL((w~0tzpzL|2T-i&f5C74 z=?6c*qff7Y2g$vCtaj*Q#*NP(W7IhJJuckW@%fVUqML(lq`&wbWx>T+ICXm zi_ne}5+CaQo!<2iM^}IP!TSuO5_HSBhP}3da{amqoOR5hK6=O|>?s;EqA7ELra$cj?YdZGv4bcrtIvG*{i&Es(IKbsqofoqFysc+~pKRI;g9X%wnRYs-66D z7dzw7dKg4E*UZmTeRijSe{%?7Qrx~_hQ|^9?*R)9akG2k2x;DV7rAM{cN0wEd7p9= z1;3DH)K$$39&`pqkY1Le8etF$^Qy27yy#>JYB$Vo;`c6&g;km%S9(ANDG63-T3{#K zc;{uC;gFrdnW7If+lJ?6*)O@ZGJdMgyJ_U=u>gDr8^G^e_)3QgRv4_{}ywY z7qR=tn=dhL?LqxMWh9(4B&%!(c+SDJ?7Fop4HzCXr(`fjYwvpdN({88t>>Q925hKQ z;%&i^fF#g?<~l5taj4{c+0#pFvPze%msJ|y%BU$db9od-Q`9#xf-t+`rn_f76Dx7> zoBSiIighO`f&>(%e{;nV|CtO#olQ&Hx^(qDLX?P6H=+qCpF0wSb4?6s)x7#uA+dBQ z3@o7b=RW2|#}MLG0_50FeYyz#2{3jl_pD^Lmv{TF#5rVdiBUaTS*&+;yJ192XbbGE zgp`)ws-!W-z2SPzm>{NMjKyg>>2xuHi)>$)92~?xn1@>^e=!_p0RIQqzv4{zeP0qQ zP`dd5_-+No1HJ>Y)510`|oG1~a zpmg-=C+O>7R-TPrF87nbeqgFYescnd+&BmrvAZRHg!bp`z{~%VW&&z)p^#Opw>qTk zoz1~y?n0x1D^G%WPzu8@YrDU?C^Nhcebqt!)(=Flf7!XiP4V@u6x{r=KnAC8Tl?gN z5kE;-I`#^x5@aI4Zi@pYwv*Qv{sdoT$$g%AIj3Z zoAgVwHA=1;AB(ac)mcLN;&4ozKZG#0VG~Y7e=f>08N_>70Jdl4RP}lBzEz%grm*h` zTX6kVr)%tBB+#yZNS`aCfdk(DhAp+`7HuMEujC3MQ;<(?%q{;CZ2P$G@+H^kX&xQnT2x5^cZr&r~a?!1ng$xNvUCzd2ds+y*63C4- zE-g2-DReYhe7X2oOYcLcwHEW9vUdtv5J$zBogL86Pjz?Nrs9{DdoiCPA4YXH>8>Iw z>Clrl&1fL^smvqo7A^OCFEBi4$C+8|#AXy=sN6=O~ksym*;IfoO^15T&bytdb@ zun|vThOB@os2NaNBC8Kq#2_e03tejMHOST^DR>#B!@UPG2yNJq2_oNZx6w1xZI(SZ08g4PXs2kBgcp&Hs@@nU1LsJ=t*q3d zcdD~m zi1g0J?5UR+Yo21V$MKrN4j5)@)_BX-H;iZ$risrN$7sD3c^F;5oYxaI2mYgBx5}5J zRxaRjj3I-&c)#i{H_RI@s=wczqB$fHwIXUV?Zz<-8OhFqpJtrB-G1x4f9+lD_Rf{V znhK@dTquVJj}H#^F75$MVTpq$n%-L`7w!o${rp+6G9HO)5$44JGdWZ#A~6^u81}5< z!N&fb;^BL1cZ#iz2Nu`d*xku^B6gGv!_x|P71^QAMlt|Uw+O{pLPNM|N zwB6b7NJ0WEtD(eKYJ7(yep+k|Too36E&p zwcmQzHA~~l-z)pvnf-c@hlqtmTR#>ABPj+LFDm)xk8osu)Odirf5W9+FG`bYhO1aX zk6U4OsUCbaKt;>J0741W`&z7{yE~-#fgJ?iKH^8&)Hys@mnh26ieM*KZ!m++rr_0d zm3Vg8qgL1uEn0|qOR?+p^l!4~nAyM-y`TWew(Dp;tl$Tv4 zkxB1U)&nza#p?-}e{4M{IVGi>U%3|ak;DoFR}S?FcpvzNVzpZN<0tn!CzuVOJYWZ- zoaKsF=uMBt`F*-$k_JSWh(fbniUJ8o19n=11c?c%&03G{jC_{;e4%|J`}7I#+>+I1HD;f_%WBF#{O6x(31lBHe$HIZK0TV8c~YY_uDQLl zx4FGlJf*lJ3oUdG@PAG_#nbKU-)(L0?rmm1Q@VKZRr5RUxcF_cy|d2kH+EaTo$1T( zY_xo%u?p>4f7$jNKrdShyBmuiZ)|P6tEMl$LaQ)q{`TI+YVlkpG>-|^4b0Or=)1NZ zDwu_%5Jh$gH*{Qy(pkyuGMWZLV6Ly0$j4ngnYldOS{H@BW|Z0@4`Me^BNh81Joco&Ct zW@e)7XX@vXub@wy!f%cT5^Lp^bu;-MU>t|Xl!tqDz2ctBlNG(uEffBXsG+Q3Tibhd z+Pd@Ge=w-{gyS&20i3VV9n)u`t~4TUA5{s$1;8@CC8J3KOIpYtB-JY*X*V9=8Zi1I z1+;z656YAR(RQUg`EfXFp&D#XyZz^Dk7(f|u>wu54#H?&N)HUM4qbV5ITGoz0rQ-* zTYx?L!pnoAu{akfp^x0LI+*yDk1p^grQ=Lef4;-?r59v`O+tJt#%I;)RsyAtE0OLWBrsLXsw9=s%^~QhD2Lv~;`Je+i5cPJlg<>{q zw^t&k+FFGkQ&_bWu?e5ThAjR%!_fs})E;GE6+!x{XS_gkCNwW*02V5hmh5Cpl0nQl ze}xpR(x`&PVs#PM%83FLY)Zx@wLkDh$vrhYwD(fr9QGGyimLBC4&=%T61G6FlH3lu z=~Xk+jZpRkvqI%zgv}xZ5VE}@>qz1COgYXNkkHw!*p)SkP{vqz>({hxde7H?hB(OBD+Df3%32YiI{Y>iVlGc6Vu667fXe=+!^Yje^=O z&r70ttR<0A1&r31K%XtNz3SR)-XAZdv?pa_o)|SKk$x7vT4exO*`Bs4*kf8&MIOUi zgSt+fQe7!|1(OoMXf!n&(>dmo2i-nYfZ`sH1#r};<-XB_^9vWveFN)qE#W;Lf851G ziXj9icP&;_+oH&Kx7THnJ$#s*t?7DTpcTGMN?LV0KXYcq3YHw}o#4FC8VP6r`D*d( zyE|L^d)qk$qAssOL?dj3pjLbi2`>RQR(iv;mt#>ytQKqgyLl50#f0_g@X;lJ3TyAm zdv+XSW_HKiY=`~%LEg6T&O$^OfB#^hH#UO2Q6Mz;+s(-|u<=p_^8CBkf1eX^;@0@Z z%3J$Ll-LII%KbhJLuOD#2tw>=Z9pY=VzB~z*<)9f7x5-fHd}lV+jA6F{xdx3(m-m= zj;*DBa??z?VLrTAYo8Bkcf_Emy2q8V-`LDs@Hlz8mD9gI${Snj8(R-He_O^my0Z1d z8T!~Xs7uDQ@2Sb^X5f7#2Zm_XcHYpm;yFJzDiF)sIIb;zy!md{%UJE@IJN;2%9Euz ziR_z-{n+}wtlXeG5Qsyt%-NKcH zU;6*EvHj(H+P~#?_OG{-e^uxEU$}`?CcpBBZRf~#+|Gzh6JdN5Ibh#pA7cS`#U!~ty^omduz`&wiZ8WPDi$s-931!up}zqhu&x%lr}t-k9% zcYnUQv9-Cj#DVqv+{^wE^xBgwrT^~!d;3rJpDuM?lgf;;gSV#!e+0GExl<3wjU7pJ z2jFBSvkA3<#Ab|C65s5qc-ezX6A+av99VS-(VL^d0_}w&naQZwtVv&vX9t|`_UwRz zmelv}Fp`998hSnszc9hE$n{w@0kBRg+i<@uS4zTx-X2LzKo%!*+u&uG8NhP7pbN%m z%1~5Sj8AouBCg6!e{iSh5K}AF?BfTdzAQZ!x&t*CUUKi5oKwQ43ItEO!6(J38#os| zI^8ZrA(Dkdgx?-3OsRU%@FA*GSVe@u_a0nl&>GZ;0!IlCtN zp3LaZv~?&Yj9^(hHOAAqB`Z1ga5xB_yCZf6#uM01nE|H$@qr*5B!a#0)&>xiJjCWI zP&+j(86QMdr8P=xROZ$kI_D?Bo~B=7*_m3#{@{%hvA6mNuTPbO1n{~DW-t;lbxiN5 z3}*(<$%HVDf9keXpyM4x;)ry!vB{x7hR5ww%=yYom$Rj~4@oCY9tw0+g>EBfv=q+y z06{2V%YfQW$!SYL!`-ckj|V!SIR`U^i_dW=iHw{==}msf90GDCi(igUL3a^v6i}m9 z_oJ|4)>rI-n~uIySgCa>F`w!T#8>vduZ83e0R6U zt?IaiWSchVrjX0IG!ygELYejw&6`%d28CHpCs$tYBeI+r`eF67U6#FQKeLbAehl$V zDmv16f4Vj}5;ih3(&Sxv(yRH^RxE@5yakQSa;xooS#!&rQ4VF^PsyK_JC~kzej!gy z@tEclBRnsbu|FD&4?2T&feD&FeRNnssl5jsx19l+YaZk_R2KWpf+nP?l1vqM@9t7s}X0RvZk10vWavqiqFhrg1mQM(|Vg}*RH zP-5wr5KCmBR0u5E1=UwkaLj1gIl|6Be`HHSJZhFI#0t8re<+$K$UZ5>WS-qC{`dz> z7x3M}Hl%jb-tiFHXNz8kpIc3dvE6g+H0$rZ$b^;nE-mG))2Z6TJlbZ*Kl7Y3AB2O9 zIN`j6)k!2+m~fprR)e~~(DKkM0UA`5j7x2IaX8=R%4o%#o^knrEm!;Xwh1H@PSwhwZv6@j$twAIA^V| zao+41pe)9`91T^GO=J{63IG+hvE*_M=DCu|+(kSCk|D@n=Gkp*kV@dNb0q~0WB$Ns zD%+x5q?9pS>|+dTeTCG%`kIvze=?yo0`I7kT*V={t*Q1)Vd{xuO5+u^5@*zk@^c;7 z3`Coc-4&|OWNZmJMoBLe`t$5fYFqPV?_hfx2_}|o%4>Uj8(T_9t|l%&Fj_L8nbv^u zLWW$o+NA(M;3-ZK{2CXDQ?aPAizJaG(da27xANrvzkmB}%iJBqBi(~uf90Kf?|kFl zx4wC&*uSqozWt4R@4WLCBe_jIK1%E*KZ#X&G#+WDA_+cFrsjwRfe7v7;TWkvx18BT zX=oDeS59UveTE@_OnRd9n6OSg3L+)Yl})RL75X+P+{xX8+<8(aEn%RNbO2wFXq=*f zo5vw{wqI<&M@PO0u;JN>e>P}R*pkVrOMKG9aM-yhoWE&w_;6AnxhsiIjOV1nauPch zY}qw8T@d|U*0H-_Q>-M0K_RqXB}x(bighVTv&dU#YNA=Yu(QWRr3GCpg-HWduQcGC z-Js+%z`DjSI@@MDCHlK^k8ZBGm zSXe;WN-Qc9Ra1R8bo9n>o=97Qdy8{77@Q*9W8!uAEm012ME(~nZ|^{}Qg0uhWL`1R z3v@0qSZp%di-(g~e|?hPHLk(f2~_l;3*Hh}j)ah`YcS2K{jviN@0mr;YM0zHZ{S@m z2bj7G>SYO8s;I>t6Vz1G!eKu!UYOXw7AzrxKE7cCc%tMlCCB_L6mCb*^Wn|N5`?&w7`m{t2^KBnDE0)p|2B%&N4SzYQE)bG8L|ZW1ev_%4}t zL;!A3P78BcWjqkskSDomM^Kipp_<0tE8-k?$IAwaA7@PU+PO>t;e%|+$?6CZ3)wE- z{Z716vMx}je@Z{Ywi8uoqbjWlnIv)s_4s#O1h>(oBn;;v4u3IX4-(Xc24Ze2z|;3o z@36Ixb?27c5a-+Vr<)sW%WKdl5gWvxzAO4pSqNnyZNPk=D{_NZX|L(U=#Gm6?WCnY z6E@1uJ1(_oN;oY-|I0#&*y-hC5Km+j)pY3T0v9<8e=I*X3bI*jzSAZP$%MYAB$0W? z0qYG5oj-8m6v4z41vNsaMB5|DUf4xO0Q~TdtgH(&NzM{I5pNV1f&p~+12QIt=7Ck| z$Hkxq`=qDIfMK*C9G+l-xdVm|wNjXdg zje*K#*6xJDWn-;TQM0IKs^%UBVldpgkbjsOv4FgZgs5KV41hx3VTC~{8iL%!G>bpx5uOrV7z%BrK8nCG;Y5f1Qrt!U1T*gJd9$7Bxf6p~}ijd4s$ zL3oy>^sn9KQUal-1Hd;G9bhVu6>mQ$Dk_u+84MFkwKXA&(dYU$AG!=?XIGVG#y(W439^AaMsj1WSe{yA- z4V~Uz`kQuQIV@IOhGArMmSg!GPcXnmq$kccQ@*C36kqMaSCYX^XX-Z_zY;!}`O_ll@4G0|TS2B{%-k zokZa#6V+E_Br+QxIEQ3<5dxd4qmk+OGAwDMht!32At~qk5X7`_Y?-hDhiLW8>?<}m4zmHJH3=qswxNBt~z-Ts8NLFa7o87u;*$RXOU0t{%}ILqv1 z$@>>9H(12@Av)>?8F7h zJ(CB##Ky8>VtP+lzqhXlxGk@{O}6c>-4J5`e_j9h?bmzD%cD@Tfz1cjoO4#>XwtK0 z$AjU?Iptw4XZ_yhW>{Kl!}^{wA50h0(j5bN3i>l_UP!Jj(uR4GxqdJSj8U|6_9o+S6_l=c7mEh%j-#D0BOH2FUO=uEZAx= zfAN~1U;2E$dTx|G5iEk{Xi#|9?$0WQ!L(_+4SptSm&ev$H8s!A$xE~SxvIs}5hdW! z0b#Me8w}q8TMrJfhgy%QeQaL$(LG~0!_s;;Cdb+i*cF%Luemx4d$G}+e7zIuh-zH| zNAjeeXJDXpJf{A=DTc#A&``Urm-0l_EBN5%ec1Jt{;__gIvDOHmp&YXaa2tkt;Qi) zxZNS&^^Ou4?2ub~Y&QE`msn*19DijN*jn|rcOIHKf-qXCy{XXE?A>lYmI*67^RKdR zeex9iiu&>L`ZcT)8H5X!hTt#*=4tr}ZK4c?Y&uMs^DERt zPfM9dZvOv)R2Mw)G^qrH3maRyOKXQr|z<9^Oh!hyZ$J@B1HLie}6^8YPynm z^z3sN1fhRl8stMneV#TA^f&e=BC`2v31fsQp0>rP+@I8n_(-qcgo>18n2Ibvw%^ zc*Y#zSk-aU4i-D!1$U?fx_@15A%u`N;n+kYYfG$=R*I4cuelcD+?8GL-pk$nzbyaj zyPtOBAtCikRxYQvAW7FTI78yg;H2dhk)p%VfwmB*SRHMS#Vang2Hqb?Ihn#B_PJ0J!Lgq?DO#b66%0r>g|JFVPr$I)5waa^FjE;X?z~ zT={%B0ASO07*XCc#~=0~SZd`FN--SZ?osB&kQ;L=^VCWXKv_};4 zCE07P9rHI*m{i7s=FI5wTIyu)4?Upn0qJ?&Z`$ERB}jSXJDY`wZwrcJ#h5D_lvd=3 z?Wyv~|BsRP_76vI=6}CmJ$w@Gn3Nes*0M{p)g4CA+4x68YNI<#x(aoMBLh#}9QSrs zJ@IhW506&;5YE-R3L_@r1n$hibXc<7p!WIWZQ13gV0WHP7ek^Y_zD60`Y)3JT7PK!3Mv_e(|zQ4`DwVk z>i%_rK?&bi8QM!CDM@o}$u*JnA&4o>EU%PE8l_nv+R>PZA8(z79k!k1?~DrqkiJyr zUNJ6zi%xFv`3Ni;Cz$$%x<>OQ(}-IMZn=Iv3KO;iP$d&XN`mWYV$F)@RHCbagzc>E z$NxarAEfbGmVZ9-21#;Eotl!W-mE!ly7f}nXBaRNzYFj+%hKc3u3c`jx4KEo8UB1v zyPt3J=<`h;e!j`h=bLP=Zt@~~6F6MTMy=3N(gucR$wY1JzH7V>td>@lxVG(sL=xvO`UfSspchJ7dGF@qf;>B4<|YSVj^G5ep=B&+ z`+uBfB4_^!xKl8=zuKs@Czldp(q^~V5{SnBTj3^@Upz^>{Tfyyf7nXnQPiLXdj4rt z`5mG%D&j&nyGoD1!>X-jcYVM27(s|{{QW=wyLSQ!$wxT|ly3!vlb!Tz9&9fcR%07T z2mvP+vK)<&$*!Q#SlHJ9!)Bvkj&~n_yZiVjJba2#J&|a8;R72g;CK0f@2Iy8BZ~#GxAVS4s=-1dw;|P zEPrz12e?JE=#;SNN>0j1=8`Z#MZr{Gja7_~PLHSfDZn53;rfNoe#-z41jnylzoqyH zxn;5)s$0{ta?s+oXwYPn`B^`V=|@Ug7wCr#vOG@bQh(ZYQo>N&6R7!zJZiZdi zr4JFoZ;Xi;s+;$Ch8+%{O9Y7@G=G9^nT9+Gr0)iIl%`q%@JLzPXPs-h=ag%;jy#sq z@2$Ns1-+)KSZn5ltmTz_DOw;Y>ovPcXL(&>XSQJzw=g5itAk+mhUdzKYWPu!I?~7ZKU6#aq`$>cAjDuRVXJlCyalL~hGPK8|El{w!3i^7&iGM;d+PhLb66N`H;qhi^ zfYO=oW(yJW79j{INe*ywf6O33|CPcA&xJVZ9nmAA%N-YU&-f0|rw)`G$ z8ZgKp#3nlxHo93O)>Fwq@>Y~Z2j;}IFIbEwLsDTtbI=|C$$?+!pvJd-Ht2M6^iFP! z1@{yiZbrB?C5?~5+9-nE6qaNg5AmfkajKesTG!gsnBu>uC2uYmc5a?wk(^XD>Ff3r zxcR$x+JBS+>}3G9^qTUIcxAN>+ONHP=eU1_SC(^GupKs6^hfTje{Y4!qdZW@>ZjfB zcAq`yr7fSV;(G7V%bksfTQ5wg^xymKgn-s6NTkd}V0;J@C~Z4wb*6xWC)s)cY(f;d zL#CLwWWi1FH8R@RDoB%7bU}aRfKT zpg=VUJ=fKE@X38(whoaCh&IqCSA?;a>>z^34PC7qJk!&)YrqMB!GVS1qRkawojMOl zshd7pB@4JgF9k`;FK|brg&L{o$q;x|-I(#Sj9r{pOpz(rM_MFhm2lkKL z?bSh%X0)(Co7Mwp#TC0_P?)miIUo`Zjk+rN$#}kI`p^R|Nfq9Qm#hL&7#-xoU_X&! zO8atzlH?2KBjyLnESu*Lz>w^@quC>HSxwmK%Aa}$$=C=ArcQ1IV(Uaa$qV%p5`Wn? zk(wOFTewk6Kb69&0AzaZ8iWl9Mt zZl!hIz2m`G$^$56(cL`pXiBC;?;Dd%8V$!DjErY*5P2R}VgW4_E3Ms{m6M=_)Cx|m z0uL-&%FsFC22nC}xDE_j3S5RK*nfy%iVc%xs<3v2Sn?Mq7KbTkN7-pN%SK8oqir2F zL^gBTnU}g@wPD4SK?Rkdkj|IP-WB-%=3{d88`g=*IU>}MUEW0V-F!3?Iv>5|`Yi5y zPBiSoZo1@lPEJ3KpwBKj>)!7@f3dgkwnE5Qb9?iVi!D&wbUqOtpf~Kk)Okh?pRWl{D)vlKIg*Mcm168|E=F&yE*Q4|-LY#Fi+hf7O8VTxL{3rmmXl8}-Iqm8q#L3a z)e9x6te7e5BkzsdbALBb$40+j(@z}ccJH>br;ikehtzYU!*^N6__!2BXJ3qtbb&@wKgFq{@Yh~$3qrV z@(yvWu`yyWs!Xoo13Xg~whu&i(%q^QBeEOP&Hqmp#x83u+|?Qkn)Z|u=>Q81s}Xz3 zl_$n{X}2Q|w|<=L9iAiG3A7odZ%%~4i*)%Vd1{4Q8f_`s*CSTz?S7{xCSxX#xf!m9 ztL|h~>(0Q6dVg^&LyV?)3Eg(OZ7d`bJEh&Z0ZjNuSAeB(eLJQKgsiiN1DC8>7niz@`B$#7dmtaJ^p-Pu1E&s=}al=Y9;%0u?LrykqTKao>)yV{D2IR*(1N>s2 zZuD0KA~%E8Pwwo7Z>*oZZD4t2e#Ma5$@b-M_d2%ae1GaRFy$=gOBf7lG228rl+YOu z%53Mf5#I?GDzA)(x$&*Kpys_BBK0^0DbVsZRAl1(Oj=I=Ha8h6b6i!S5Nd*DY$-i!v(37KG zgUVdaMt`E=jaS#RG5t3jD2CUpsMmTqpwWZmgRu~&p+`ew;#wMBK+{WXr-3&uyhKVP z1Er&NQJ@Z(@gh9Dgh0}w?QwSZu0_f!bCvR^mmi_*ZRLjMRizHj7(@14rQ8tDjW^Z!PF`-{U1vl>b@_$ zNv@d7SWKLNWFxN$P(oCO>-SE7+x_NyZzr4bw>*E2Tmg}>5a2t`&%!uf$f%_fZdzh5e4%5gGo)>Nmxt=q{9b<$!>a--EVP1 z3zXdbfx3=2AH!e22da{n5RcvKT&x|7?dC`oRi}F^Aiyf+v7SZY_oNsr@s^j7DC3%= zsq%j(HhXA2tVgs>8<;J8l@voEW6J9nxs@EVRr_>|YG|oUT%amb%wmYLGL(#0PU!Ml z=fN_YiDoJAXQhv7o1;pI4MDZ?v3?U^Qmtf-`fZ(VbN#B>60yd0^cLGA2?Ga(5Afm6?+uGuyUEL$sV1>Pd1C{DM+ zdjTW?e}s}kWA=&aMtKbWa6}8Gy62&M0#cD3pK1VO*I$WT@I;uFWY6Uqufkn&W_9kPRu-d@0 zsWliUzy_YAEMYoF2j?`w*s=piY9rrJKHSwte^Td{W{)*xA9N2mjpI3%;3%h#;uaX{ zfr!pX&IY9ZG*t)S3_}GHl(RUA68zJ3V5I%?K$nb~Qn-`$Z#wIa*_`#^&^}r*6q}}r znn|bO{S*AQdD?bQ4TWlF#Q+rQp?|#=2ky zN(U-4{5$r%PQQl&54;fR^)Jcm