diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index 9778e579e..053ecb365 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -317,6 +317,8 @@ + + @@ -1803,6 +1805,9 @@ + + + diff --git a/DiscImageChef.Database/DiscImageChef.Database.csproj b/DiscImageChef.Database/DiscImageChef.Database.csproj index 1480af5f6..f788fc8aa 100644 --- a/DiscImageChef.Database/DiscImageChef.Database.csproj +++ b/DiscImageChef.Database/DiscImageChef.Database.csproj @@ -78,6 +78,8 @@ + + diff --git a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs index 2f3e18bf7..1ebc8e0dd 100644 --- a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.Designer.cs @@ -160,14 +160,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1079,10 +1075,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs index 53933fcf8..8e339db02 100644 --- a/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs +++ b/DiscImageChef.Database/Migrations/20181126222301_DeviceReportV2.cs @@ -287,17 +287,13 @@ namespace DiscImageChef.Database.Migrations { Id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - ModeSense2AId = table.Column(nullable: true), - FeaturesId = table.Column(nullable: true) + FeaturesId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Mmc", x => x.Id); table.ForeignKey("FK_Mmc_MmcFeatures_FeaturesId", x => x.FeaturesId, "MmcFeatures", "Id", onDelete: ReferentialAction.Restrict); - table.ForeignKey("FK_Mmc_ModePage_2A_ModeSense2AId", x => x.ModeSense2AId, - "ModePage_2A", "Id", - onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable("BlockDescriptor", @@ -626,8 +622,6 @@ namespace DiscImageChef.Database.Migrations migrationBuilder.CreateIndex("IX_Mmc_FeaturesId", "Mmc", "FeaturesId"); - migrationBuilder.CreateIndex("IX_Mmc_ModeSense2AId", "Mmc", "ModeSense2AId"); - migrationBuilder.CreateIndex("IX_Reports_ATAId", "Reports", "ATAId"); migrationBuilder.CreateIndex("IX_Reports_ATAPIId", "Reports", "ATAPIId"); diff --git a/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs b/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs index 5f340e68b..ff2cd210a 100644 --- a/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181127001622_AddDeviceBasicFields.Designer.cs @@ -168,14 +168,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1087,10 +1083,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs b/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs index e8a0b8df0..ff928b203 100644 --- a/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181127013131_CorrectReportsDbSet.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1094,10 +1090,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs index 407284b7d..22f3f0c08 100644 --- a/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221015906_NameValueStatistics.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1164,10 +1160,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs index ebc25f1b6..c4121924b 100644 --- a/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221032605_MediaStatistics.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1180,10 +1176,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs index 90ff6be26..c2c422a66 100644 --- a/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221034941_SeenDevicesStatistics.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1200,10 +1196,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs index c08724b32..fc535ce77 100644 --- a/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221040408_OperatingSystemStatistics.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1216,10 +1212,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs b/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs index a17398eac..da43387e2 100644 --- a/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221041242_VersionStatistics.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1230,10 +1226,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs b/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs index 98104b59f..f61ac67a1 100644 --- a/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181221125353_AddStatsCounters.Designer.cs @@ -111,14 +111,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1246,10 +1242,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs index 5fd035e0a..82c37db94 100644 --- a/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs +++ b/DiscImageChef.Database/Migrations/20181223183913_FixUnsignedFields.Designer.cs @@ -125,14 +125,10 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); - b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1312,10 +1308,6 @@ namespace DiscImageChef.Database.Migrations b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") .WithMany() .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A") - .WithMany() - .HasForeignKey("ModeSense2AId"); }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => diff --git a/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs b/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs new file mode 100644 index 000000000..61dd78938 --- /dev/null +++ b/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs @@ -0,0 +1,1355 @@ +// +using System; +using DiscImageChef.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace DiscImageChef.Database.Migrations +{ + [DbContext(typeof(DicContext))] + [Migration("20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports")] + partial class UseBinaryDataForIdentifyInquiryAndModesInReports + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.4-rtm-31024"); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Identify"); + + b.Property("ReadCapabilitiesId"); + + b.HasKey("Id"); + + b.HasIndex("ReadCapabilitiesId"); + + b.ToTable("Ata"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlockLength"); + + b.Property("BlockLengthSql"); + + b.Property("Blocks"); + + b.Property("BlocksSql"); + + b.Property("Density"); + + b.Property("ScsiModeId"); + + b.HasKey("Id"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("BlockDescriptor"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Cylinders"); + + b.Property("CylindersSql"); + + b.Property("Heads"); + + b.Property("HeadsSql"); + + b.Property("Sectors"); + + b.Property("SectorsSql"); + + b.HasKey("Id"); + + b.ToTable("Chs"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.Property("Code") + .ValueGeneratedOnAdd(); + + b.Property("SscSupportedMediaId"); + + b.HasKey("Code"); + + b.HasIndex("SscSupportedMediaId"); + + b.ToTable("DensityCode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Manufacturer"); + + b.Property("Product"); + + b.Property("ProductID"); + + b.Property("ProductIDSql"); + + b.Property("RemovableMedia"); + + b.Property("VendorID"); + + b.Property("VendorIDSql"); + + b.HasKey("Id"); + + b.ToTable("FireWire"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("FeaturesId"); + + b.Property("ModeSense2AData"); + + b.HasKey("Id"); + + b.HasIndex("FeaturesId"); + + b.ToTable("Mmc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AACSVersion"); + + b.Property("AGIDs"); + + b.Property("BindingNonceBlocks"); + + b.Property("BlocksPerReadableUnit"); + + b.Property("BlocksPerReadableUnitSql"); + + b.Property("BufferUnderrunFreeInDVD"); + + b.Property("BufferUnderrunFreeInSAO"); + + b.Property("BufferUnderrunFreeInTAO"); + + b.Property("CPRMVersion"); + + b.Property("CSSVersion"); + + b.Property("CanAudioScan"); + + b.Property("CanEject"); + + b.Property("CanEraseSector"); + + b.Property("CanExpandBDRESpareArea"); + + b.Property("CanFormat"); + + b.Property("CanFormatBDREWithoutSpare"); + + b.Property("CanFormatCert"); + + b.Property("CanFormatFRF"); + + b.Property("CanFormatQCert"); + + b.Property("CanFormatRRM"); + + b.Property("CanGenerateBindingNonce"); + + b.Property("CanLoad"); + + b.Property("CanMuteSeparateChannels"); + + b.Property("CanOverwriteSAOTrack"); + + b.Property("CanOverwriteTAOTrack"); + + b.Property("CanPlayCDAudio"); + + b.Property("CanPseudoOverwriteBDR"); + + b.Property("CanReadAllDualR"); + + b.Property("CanReadAllDualRW"); + + b.Property("CanReadBD"); + + b.Property("CanReadBDR"); + + b.Property("CanReadBDRE1"); + + b.Property("CanReadBDRE2"); + + b.Property("CanReadBDROM"); + + b.Property("CanReadBluBCA"); + + b.Property("CanReadCD"); + + b.Property("CanReadCDMRW"); + + b.Property("CanReadCPRM_MKB"); + + b.Property("CanReadDDCD"); + + b.Property("CanReadDVD"); + + b.Property("CanReadDVDPlusMRW"); + + b.Property("CanReadDVDPlusR"); + + b.Property("CanReadDVDPlusRDL"); + + b.Property("CanReadDVDPlusRW"); + + b.Property("CanReadDVDPlusRWDL"); + + b.Property("CanReadDriveAACSCertificate"); + + b.Property("CanReadHDDVD"); + + b.Property("CanReadHDDVDR"); + + b.Property("CanReadHDDVDRAM"); + + b.Property("CanReadLeadInCDText"); + + b.Property("CanReadOldBDR"); + + b.Property("CanReadOldBDRE"); + + b.Property("CanReadOldBDROM"); + + b.Property("CanReadSpareAreaInformation"); + + b.Property("CanReportDriveSerial"); + + b.Property("CanReportMediaSerial"); + + b.Property("CanTestWriteDDCDR"); + + b.Property("CanTestWriteDVD"); + + b.Property("CanTestWriteInSAO"); + + b.Property("CanTestWriteInTAO"); + + b.Property("CanUpgradeFirmware"); + + b.Property("CanWriteBD"); + + b.Property("CanWriteBDR"); + + b.Property("CanWriteBDRE1"); + + b.Property("CanWriteBDRE2"); + + b.Property("CanWriteBusEncryptedBlocks"); + + b.Property("CanWriteCDMRW"); + + b.Property("CanWriteCDRW"); + + b.Property("CanWriteCDRWCAV"); + + b.Property("CanWriteCDSAO"); + + b.Property("CanWriteCDTAO"); + + b.Property("CanWriteCSSManagedDVD"); + + b.Property("CanWriteDDCDR"); + + b.Property("CanWriteDDCDRW"); + + b.Property("CanWriteDVDPlusMRW"); + + b.Property("CanWriteDVDPlusR"); + + b.Property("CanWriteDVDPlusRDL"); + + b.Property("CanWriteDVDPlusRW"); + + b.Property("CanWriteDVDPlusRWDL"); + + b.Property("CanWriteDVDR"); + + b.Property("CanWriteDVDRDL"); + + b.Property("CanWriteDVDRW"); + + b.Property("CanWriteHDDVDR"); + + b.Property("CanWriteHDDVDRAM"); + + b.Property("CanWriteOldBDR"); + + b.Property("CanWriteOldBDRE"); + + b.Property("CanWritePackedSubchannelInTAO"); + + b.Property("CanWriteRWSubchannelInSAO"); + + b.Property("CanWriteRWSubchannelInTAO"); + + b.Property("CanWriteRaw"); + + b.Property("CanWriteRawMultiSession"); + + b.Property("CanWriteRawSubchannelInTAO"); + + b.Property("ChangerIsSideChangeCapable"); + + b.Property("ChangerSlots"); + + b.Property("ChangerSupportsDiscPresent"); + + b.Property("DBML"); + + b.Property("DVDMultiRead"); + + b.Property("EmbeddedChanger"); + + b.Property("ErrorRecoveryPage"); + + b.Property("FirmwareDate"); + + b.Property("LoadingMechanismType"); + + b.Property("Locked"); + + b.Property("LogicalBlockSize"); + + b.Property("LogicalBlockSizeSql"); + + b.Property("MultiRead"); + + b.Property("PhysicalInterfaceStandardNumber"); + + b.Property("PhysicalInterfaceStandardNumberSql"); + + b.Property("PreventJumper"); + + b.Property("SupportsAACS"); + + b.Property("SupportsBusEncryption"); + + b.Property("SupportsC2"); + + b.Property("SupportsCPRM"); + + b.Property("SupportsCSS"); + + b.Property("SupportsDAP"); + + b.Property("SupportsDeviceBusyEvent"); + + b.Property("SupportsHybridDiscs"); + + b.Property("SupportsModePage1Ch"); + + b.Property("SupportsOSSC"); + + b.Property("SupportsPWP"); + + b.Property("SupportsSWPP"); + + b.Property("SupportsSecurDisc"); + + b.Property("SupportsSeparateVolume"); + + b.Property("SupportsVCPS"); + + b.Property("SupportsWriteInhibitDCB"); + + b.Property("SupportsWriteProtectPAC"); + + b.Property("VolumeLevels"); + + b.Property("VolumeLevelsSql"); + + b.HasKey("Id"); + + b.ToTable("MmcFeatures"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CID"); + + b.Property("CSD"); + + b.Property("ExtendedCSD"); + + b.Property("OCR"); + + b.Property("SCR"); + + b.HasKey("Id"); + + b.ToTable("MmcSd"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CIS"); + + b.Property("CardCode"); + + b.Property("CardCodeSql"); + + b.Property("Compliance"); + + b.Property("Manufacturer"); + + b.Property("ManufacturerCode"); + + b.Property("ManufacturerCodeSql"); + + b.Property("ProductName"); + + b.HasKey("Id"); + + b.ToTable("Pcmcia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InquiryData"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("ModeSenseId"); + + b.Property("MultiMediaDeviceId"); + + b.Property("ReadCapabilitiesId"); + + b.Property("SequentialDeviceId"); + + b.Property("SupportsModeSense10"); + + b.Property("SupportsModeSense6"); + + b.Property("SupportsModeSubpages"); + + b.HasKey("Id"); + + b.HasIndex("ModeSenseId"); + + b.HasIndex("MultiMediaDeviceId"); + + b.HasIndex("ReadCapabilitiesId"); + + b.HasIndex("SequentialDeviceId"); + + b.ToTable("Scsi"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlankCheckEnabled"); + + b.Property("BufferedMode"); + + b.Property("DPOandFUA"); + + b.Property("MediumType"); + + b.Property("Speed"); + + b.Property("WriteProtected"); + + b.HasKey("Id"); + + b.ToTable("ScsiMode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ScsiId"); + + b.Property("ScsiModeId"); + + b.Property("page"); + + b.Property("subpage"); + + b.Property("value"); + + b.HasKey("Id"); + + b.HasIndex("ScsiId"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("ScsiPage"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlockSizeGranularity"); + + b.Property("MaxBlockLength"); + + b.Property("MaxBlockLengthSql"); + + b.Property("MinBlockLength"); + + b.Property("MinBlockLengthSql"); + + b.HasKey("Id"); + + b.ToTable("Ssc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description"); + + b.Property("Length"); + + b.Property("LengthSql"); + + b.Property("MediumType"); + + b.Property("Name"); + + b.Property("Organization"); + + b.Property("SscId"); + + b.Property("TestedSequentialMediaId"); + + b.Property("Width"); + + b.Property("WidthSql"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SscSupportedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BitsPerMm"); + + b.Property("BitsPerMmSql"); + + b.Property("Capacity"); + + b.Property("CapacitySql"); + + b.Property("DefaultDensity"); + + b.Property("Description"); + + b.Property("Duplicate"); + + b.Property("Name"); + + b.Property("Organization"); + + b.Property("PrimaryCode"); + + b.Property("SecondaryCode"); + + b.Property("SscId"); + + b.Property("TestedSequentialMediaId"); + + b.Property("Tracks"); + + b.Property("TracksSql"); + + b.Property("Width"); + + b.Property("WidthSql"); + + b.Property("Writable"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SupportedDensity"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AtaId"); + + b.Property("BlockSize"); + + b.Property("BlockSizeSql"); + + b.Property("Blocks"); + + b.Property("BlocksSql"); + + b.Property("CHSId"); + + b.Property("CanReadAACS"); + + b.Property("CanReadADIP"); + + b.Property("CanReadATIP"); + + b.Property("CanReadBCA"); + + b.Property("CanReadC2Pointers"); + + b.Property("CanReadCMI"); + + b.Property("CanReadCorrectedSubchannel"); + + b.Property("CanReadCorrectedSubchannelWithC2"); + + b.Property("CanReadDCB"); + + b.Property("CanReadDDS"); + + b.Property("CanReadDMI"); + + b.Property("CanReadDiscInformation"); + + b.Property("CanReadFirstTrackPreGap"); + + b.Property("CanReadFullTOC"); + + b.Property("CanReadHDCMI"); + + b.Property("CanReadLayerCapacity"); + + b.Property("CanReadLeadIn"); + + b.Property("CanReadLeadOut"); + + b.Property("CanReadMediaID"); + + b.Property("CanReadMediaSerial"); + + b.Property("CanReadPAC"); + + b.Property("CanReadPFI"); + + b.Property("CanReadPMA"); + + b.Property("CanReadPQSubchannel"); + + b.Property("CanReadPQSubchannelWithC2"); + + b.Property("CanReadPRI"); + + b.Property("CanReadRWSubchannel"); + + b.Property("CanReadRWSubchannelWithC2"); + + b.Property("CanReadRecordablePFI"); + + b.Property("CanReadSpareAreaInformation"); + + b.Property("CanReadTOC"); + + b.Property("CurrentCHSId"); + + b.Property("Density"); + + b.Property("IdentifyData"); + + b.Property("LBA48Sectors"); + + b.Property("LBA48SectorsSql"); + + b.Property("LBASectors"); + + b.Property("LBASectorsSql"); + + b.Property("LogicalAlignment"); + + b.Property("LogicalAlignmentSql"); + + b.Property("LongBlockSize"); + + b.Property("LongBlockSizeSql"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("MmcId"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("NominalRotationRate"); + + b.Property("NominalRotationRateSql"); + + b.Property("PhysicalBlockSize"); + + b.Property("PhysicalBlockSizeSql"); + + b.Property("ScsiId"); + + b.Property("SolidStateDevice"); + + b.Property("SupportsHLDTSTReadRawDVD"); + + b.Property("SupportsNECReadCDDA"); + + b.Property("SupportsPioneerReadCDDA"); + + b.Property("SupportsPioneerReadCDDAMSF"); + + b.Property("SupportsPlextorReadCDDA"); + + b.Property("SupportsPlextorReadRawDVD"); + + b.Property("SupportsRead10"); + + b.Property("SupportsRead12"); + + b.Property("SupportsRead16"); + + b.Property("SupportsRead6"); + + b.Property("SupportsReadCapacity"); + + b.Property("SupportsReadCapacity16"); + + b.Property("SupportsReadCd"); + + b.Property("SupportsReadCdMsf"); + + b.Property("SupportsReadCdMsfRaw"); + + b.Property("SupportsReadCdRaw"); + + b.Property("SupportsReadDma"); + + b.Property("SupportsReadDmaLba"); + + b.Property("SupportsReadDmaLba48"); + + b.Property("SupportsReadDmaRetry"); + + b.Property("SupportsReadDmaRetryLba"); + + b.Property("SupportsReadLba"); + + b.Property("SupportsReadLba48"); + + b.Property("SupportsReadLong"); + + b.Property("SupportsReadLong16"); + + b.Property("SupportsReadLongLba"); + + b.Property("SupportsReadLongRetry"); + + b.Property("SupportsReadLongRetryLba"); + + b.Property("SupportsReadRetry"); + + b.Property("SupportsReadRetryLba"); + + b.Property("SupportsReadSectors"); + + b.Property("SupportsSeek"); + + b.Property("SupportsSeekLba"); + + b.Property("UnformattedBPS"); + + b.Property("UnformattedBPSSql"); + + b.Property("UnformattedBPT"); + + b.Property("UnformattedBPTSql"); + + b.HasKey("Id"); + + b.HasIndex("AtaId"); + + b.HasIndex("CHSId"); + + b.HasIndex("CurrentCHSId"); + + b.HasIndex("MmcId"); + + b.HasIndex("ScsiId"); + + b.ToTable("TestedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CanReadMediaSerial"); + + b.Property("Density"); + + b.Property("Manufacturer"); + + b.Property("MediaIsRecognized"); + + b.Property("MediumType"); + + b.Property("MediumTypeName"); + + b.Property("ModeSense10Data"); + + b.Property("ModeSense6Data"); + + b.Property("Model"); + + b.Property("SscId"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.ToTable("TestedSequentialMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Descriptors"); + + b.Property("Manufacturer"); + + b.Property("Product"); + + b.Property("ProductID"); + + b.Property("ProductIDSql"); + + b.Property("RemovableMedia"); + + b.Property("VendorID"); + + b.Property("VendorIDSql"); + + b.HasKey("Id"); + + b.ToTable("Usb"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Commands"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("FireWireId"); + + b.Property("LastSynchronized"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.DeviceStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Bus"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("Revision"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("SeenDevices"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filesystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filesystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Filters"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Media", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Real"); + + b.Property("Synchronized"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.ToTable("Medias"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.MediaFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("MediaFormats"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.OperatingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.Property("Version"); + + b.HasKey("Id"); + + b.ToTable("OperatingSystems"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Partition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Name"); + + b.Property("Synchronized"); + + b.HasKey("Id"); + + b.ToTable("Partitions"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ATAId"); + + b.Property("ATAPIId"); + + b.Property("CompactFlash"); + + b.Property("Created"); + + b.Property("FireWireId"); + + b.Property("Manufacturer"); + + b.Property("Model"); + + b.Property("MultiMediaCardId"); + + b.Property("PCMCIAId"); + + b.Property("Revision"); + + b.Property("SCSIId"); + + b.Property("SecureDigitalId"); + + b.Property("Type"); + + b.Property("USBId"); + + b.Property("Uploaded"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Reports"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Version", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Count"); + + b.Property("Synchronized"); + + b.Property("Value"); + + b.HasKey("Id"); + + b.ToTable("Versions"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia") + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") + .WithMany() + .HasForeignKey("FeaturesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") + .WithMany() + .HasForeignKey("MultiMediaDeviceId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode") + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia") + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata") + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") + .WithMany() + .HasForeignKey("CHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc") + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi") + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc") + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Device", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Database.Models.Report", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.cs b/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.cs new file mode 100644 index 000000000..c4d391edf --- /dev/null +++ b/DiscImageChef.Database/Migrations/20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.cs @@ -0,0 +1,90 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DiscImageChef.Database.Migrations +{ + public partial class UseBinaryDataForIdentifyInquiryAndModesInReports : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ModePage_2A"); + + migrationBuilder.AddColumn( + name: "ModeSense2AData", + table: "Mmc", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ModeSense2AData", + table: "Mmc"); + + migrationBuilder.CreateTable( + name: "ModePage_2A", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + AccurateCDDA = table.Column(nullable: false), + AudioPlay = table.Column(nullable: false), + BCK = table.Column(nullable: false), + BUF = table.Column(nullable: false), + BufferSize = table.Column(nullable: false), + C2Pointer = table.Column(nullable: false), + CDDACommand = table.Column(nullable: false), + CMRSupported = table.Column(nullable: false), + Composite = table.Column(nullable: false), + CurrentSpeed = table.Column(nullable: false), + CurrentWriteSpeed = table.Column(nullable: false), + CurrentWriteSpeedSelected = table.Column(nullable: false), + DeinterlaveSubchannel = table.Column(nullable: false), + DigitalPort1 = table.Column(nullable: false), + DigitalPort2 = table.Column(nullable: false), + Eject = table.Column(nullable: false), + ISRC = table.Column(nullable: false), + LSBF = table.Column(nullable: false), + LeadInPW = table.Column(nullable: false), + Length = table.Column(nullable: false), + LoadingMechanism = table.Column(nullable: false), + Lock = table.Column(nullable: false), + LockState = table.Column(nullable: false), + MaxWriteSpeed = table.Column(nullable: false), + MaximumSpeed = table.Column(nullable: false), + Method2 = table.Column(nullable: false), + Mode2Form1 = table.Column(nullable: false), + Mode2Form2 = table.Column(nullable: false), + MultiSession = table.Column(nullable: false), + PS = table.Column(nullable: false), + PreventJumper = table.Column(nullable: false), + RCK = table.Column(nullable: false), + ReadBarcode = table.Column(nullable: false), + ReadCDR = table.Column(nullable: false), + ReadCDRW = table.Column(nullable: false), + ReadDVDR = table.Column(nullable: false), + ReadDVDRAM = table.Column(nullable: false), + ReadDVDROM = table.Column(nullable: false), + RotationControlSelected = table.Column(nullable: false), + SCC = table.Column(nullable: false), + SDP = table.Column(nullable: false), + SSS = table.Column(nullable: false), + SeparateChannelMute = table.Column(nullable: false), + SeparateChannelVolume = table.Column(nullable: false), + Subchannel = table.Column(nullable: false), + SupportedVolumeLevels = table.Column(nullable: false), + TestWrite = table.Column(nullable: false), + UPC = table.Column(nullable: false), + WriteCDR = table.Column(nullable: false), + WriteCDRW = table.Column(nullable: false), + WriteDVDR = table.Column(nullable: false), + WriteDVDRAM = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ModePage_2A", x => x.Id); + }); + } + } +} diff --git a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs index 6ec76b294..bf2620a55 100644 --- a/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs +++ b/DiscImageChef.Database/Migrations/DicContextModelSnapshot.cs @@ -115,14 +115,12 @@ namespace DiscImageChef.Database.Migrations b.Property("FeaturesId"); - b.Property("ModeSense2AId"); + b.Property("ModeSense2AData"); b.HasKey("Id"); b.HasIndex("FeaturesId"); - b.HasIndex("ModeSense2AId"); - b.ToTable("Mmc"); }); @@ -1139,119 +1137,6 @@ namespace DiscImageChef.Database.Migrations b.ToTable("Versions"); }); - modelBuilder.Entity("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", b => - { - b.Property("Id").ValueGeneratedOnAdd(); - - b.Property("AccurateCDDA"); - - b.Property("AudioPlay"); - - b.Property("BCK"); - - b.Property("BUF"); - - b.Property("BufferSize"); - - b.Property("C2Pointer"); - - b.Property("CDDACommand"); - - b.Property("CMRSupported"); - - b.Property("Composite"); - - b.Property("CurrentSpeed"); - - b.Property("CurrentWriteSpeed"); - - b.Property("CurrentWriteSpeedSelected"); - - b.Property("DeinterlaveSubchannel"); - - b.Property("DigitalPort1"); - - b.Property("DigitalPort2"); - - b.Property("Eject"); - - b.Property("ISRC"); - - b.Property("LSBF"); - - b.Property("LeadInPW"); - - b.Property("Length"); - - b.Property("LoadingMechanism"); - - b.Property("Lock"); - - b.Property("LockState"); - - b.Property("MaxWriteSpeed"); - - b.Property("MaximumSpeed"); - - b.Property("Method2"); - - b.Property("Mode2Form1"); - - b.Property("Mode2Form2"); - - b.Property("MultiSession"); - - b.Property("PS"); - - b.Property("PreventJumper"); - - b.Property("RCK"); - - b.Property("ReadBarcode"); - - b.Property("ReadCDR"); - - b.Property("ReadCDRW"); - - b.Property("ReadDVDR"); - - b.Property("ReadDVDRAM"); - - b.Property("ReadDVDROM"); - - b.Property("RotationControlSelected"); - - b.Property("SCC"); - - b.Property("SDP"); - - b.Property("SSS"); - - b.Property("SeparateChannelMute"); - - b.Property("SeparateChannelVolume"); - - b.Property("Subchannel"); - - b.Property("SupportedVolumeLevels"); - - b.Property("TestWrite"); - - b.Property("UPC"); - - b.Property("WriteCDR"); - - b.Property("WriteCDRW"); - - b.Property("WriteDVDR"); - - b.Property("WriteDVDRAM"); - - b.HasKey("Id"); - - b.ToTable("ModePage_2A"); - }); - modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => { @@ -1273,14 +1158,12 @@ namespace DiscImageChef.Database.Migrations .WithMany("DensityCodes").HasForeignKey("SscSupportedMediaId"); }); - modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => - { - b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features").WithMany() - .HasForeignKey("FeaturesId"); - - b.HasOne("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", "ModeSense2A").WithMany() - .HasForeignKey("ModeSense2AId"); - }); + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", + b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features").WithMany() + .HasForeignKey("FeaturesId"); + }); modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => { diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj index 25a8c0047..0b4c56b61 100644 --- a/DiscImageChef.Server/DiscImageChef.Server.csproj +++ b/DiscImageChef.Server/DiscImageChef.Server.csproj @@ -213,6 +213,10 @@ 201812231612080_FixUnsignedFields.cs + + + 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs + @@ -305,6 +309,9 @@ 201812231612080_FixUnsignedFields.cs + + 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs + 10.0 diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs new file mode 100644 index 000000000..0232012cf --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs @@ -0,0 +1,29 @@ +// +namespace DiscImageChef.Server.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] + public sealed partial class UseBinaryDataForIdentifyInquiryAndModesInReports : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(UseBinaryDataForIdentifyInquiryAndModesInReports)); + + string IMigrationMetadata.Id + { + get { return "201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs new file mode 100644 index 000000000..1f8682989 --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs @@ -0,0 +1,77 @@ +namespace DiscImageChef.Server.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class UseBinaryDataForIdentifyInquiryAndModesInReports : DbMigration + { + public override void Up() + { + DropForeignKey("Mmcs", "ModeSense2A_Id", "ModePage_2A"); + DropIndex("dbo.Mmcs", new[] { "ModeSense2A_Id" }); + AddColumn("dbo.Mmcs", "ModeSense2AData", c => c.Binary()); + DropColumn("dbo.Mmcs", "ModeSense2A_Id"); + DropTable("dbo.ModePage_2A"); + } + + public override void Down() + { + CreateTable( + "dbo.ModePage_2A", + c => new + { + Id = c.Int(nullable: false, identity: true), + PS = c.Boolean(nullable: false), + MultiSession = c.Boolean(nullable: false), + Mode2Form2 = c.Boolean(nullable: false), + Mode2Form1 = c.Boolean(nullable: false), + AudioPlay = c.Boolean(nullable: false), + ISRC = c.Boolean(nullable: false), + UPC = c.Boolean(nullable: false), + C2Pointer = c.Boolean(nullable: false), + DeinterlaveSubchannel = c.Boolean(nullable: false), + Subchannel = c.Boolean(nullable: false), + AccurateCDDA = c.Boolean(nullable: false), + CDDACommand = c.Boolean(nullable: false), + LoadingMechanism = c.Byte(nullable: false), + Eject = c.Boolean(nullable: false), + PreventJumper = c.Boolean(nullable: false), + LockState = c.Boolean(nullable: false), + Lock = c.Boolean(nullable: false), + SeparateChannelMute = c.Boolean(nullable: false), + SeparateChannelVolume = c.Boolean(nullable: false), + Method2 = c.Boolean(nullable: false), + ReadCDRW = c.Boolean(nullable: false), + ReadCDR = c.Boolean(nullable: false), + WriteCDRW = c.Boolean(nullable: false), + WriteCDR = c.Boolean(nullable: false), + DigitalPort2 = c.Boolean(nullable: false), + DigitalPort1 = c.Boolean(nullable: false), + Composite = c.Boolean(nullable: false), + SSS = c.Boolean(nullable: false), + SDP = c.Boolean(nullable: false), + Length = c.Byte(nullable: false), + LSBF = c.Boolean(nullable: false), + RCK = c.Boolean(nullable: false), + BCK = c.Boolean(nullable: false), + TestWrite = c.Boolean(nullable: false), + ReadBarcode = c.Boolean(nullable: false), + ReadDVDRAM = c.Boolean(nullable: false), + ReadDVDR = c.Boolean(nullable: false), + ReadDVDROM = c.Boolean(nullable: false), + WriteDVDRAM = c.Boolean(nullable: false), + WriteDVDR = c.Boolean(nullable: false), + LeadInPW = c.Boolean(nullable: false), + SCC = c.Boolean(nullable: false), + BUF = c.Boolean(nullable: false), + RotationControlSelected = c.Byte(nullable: false), + }) + .PrimaryKey(t => t.Id); + + AddColumn("dbo.Mmcs", "ModeSense2A_Id", c => c.Int()); + DropColumn("dbo.Mmcs", "ModeSense2AData"); + CreateIndex("dbo.Mmcs", "ModeSense2A_Id"); + AddForeignKey("dbo.Mmcs", "ModeSense2A_Id", "dbo.ModePage_2A", "Id"); + } + } +} diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx new file mode 100644 index 000000000..9952f1770 --- /dev/null +++ b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + H4sIAAAAAAAEAO19W3PjOLLm+0bsf3D4cWKOXa7p6ejpqDonZMru0oxVZot2ed8ctAjbnKJINUm5S31if9k+7E/av7AAeMOVxI2SXO3oKEeLAD5kJhKJWyLx//7P//3wX99WydELyIs4Sz8en528Oz4C6TKL4vTp4/GmfPyPn47/6z//5//4cBGtvh19afL9DeWDJdPi4/FzWa5/Pj0tls9gFRYnq3iZZ0X2WJ4ss9VpGGWn79+9+8fp2dkpgBDHEOvo6MNik5bxCuAf8KeXpUuwLjdhMs8ikBT1d5gSYNSjz+EKFOtwCT4eT+NiOVuFT8B7Bo8nAcgh8SdVseOjSRKHkKQAJI/HR2GaZmVYQoJ/vi1AUOZZ+hSs4YcwudmuAcz3GCYFqBn5ucuuytO794in065gA7XcFGW20gQ8+1stpFO2uJGoj1shQjFeQHGXW8Q1FuXHYy9bwQqi4yO2rp+9JEf5egV9Uhf/65Eo019bPXl3gv/765G3ScpNDj6mYFPmYfLXI3/zkMTLf4HtTfYVpB/TTZKQBEOSYRr1AX7y82wN8nK7AI81GzPIwSld7pQt2BYjylQcztLyb++Pjz7DysOHBLT6QEgjKLMc/AJSkIcliPywLEGeIgyAJcrVztSF/ja1QQWEner4aB5+uwLpU/n88Rj+7/HRZfwNRM2XmoLbNIZ9EBYq8w0YqsTLYG8iePrxBwFPJMSH004ferVkCl7iJTBVkqr0m44MNN8kikB09wzSpsophLmJkeL0tqJIEVbQRpaXSVg8N2DnWZaAMNXGmofp5hGCwRbJR9dgrDCj17KA+lhgczpyRQi+rQQORXVPqD4PtcPn8CV+worF6snN5PhoARKcVjzHawr8Hidf5tlqkSVt10Vf74Nsk6NefJNxSTdh/gRKLRr82QAVKIOIDn/WQwlM1KXlMs7BHfzXR06Xh6OoSZIR1abr0jWHdiyegygOvTCP+qhjc3I00hlklDK5dOn1vbk361WtJgdHX5Ugo6tO1aUn8IJeFavSOVrQZxklOE2bDrCExm8aP8VlmPQSRGfkKSPTpSRSmXRpvQ3O+yjEyRxd8KuMGpQkokF55jApQ/VpA5pNZimek5/MQRlGYRmeQAR26kDk6+YPP5z8/eQf/zg5+/Eff/vzziGqfI/bdtSP0zDfqg1tqjq2AGHkhevwIU7iMgaFUOFgq93zGTvVE6VzSijMpNslFmCVvSBxY8vYRy2TjyWWSpbQSuex6jk3oIAagJEsexCB9NaTdHsSnISHDnoTO0MPU6TYk4kXcBN0tZLTmW9Y8sa05Lk3MSvovfezOIXyLwzLz2eGBbM8B0vY/MHmYfkMlaNbXVgD3cXls/feDG7qnRsWnBrqy9RUhNhepI9Zvqq3oExALmE/vbn2zAp/mhq3/1W4BTkaPZa4xxuRHudFeZOHy68+NCfh2pAQ+G9mKDxU9npTmhXGVn82tSgcgDwODbuNPzFsc//SsMX9uaGN8n+1tREkgo1x8BeGvC/ubFkgEWxYWIBllkdoZDZuyGAd5mCSg9Da+OgbnilIC9JgbMsD2ybDnbpAUn5K4z9AxPGnu8kHATcrcrtKiee21E62t3ezORhs1ussL4tPV9Ob4AYrc/j79IuuBW1gPl94eP4wnerapQbBh4oPQO4WZR5cmgIl4BucWduS06FYiRcBnL2zKaxr4ajCP1oUtinbTGmsCDCcF1EQvOXRKTwvHq3KQ9Wxrd8O4ipLn6zaAAFoFkdmMIADFPhxnKVpi3/2bpwKgiyJowCu0kFzrGgsvukqvHoI7QAWoMy3dih2pV0QANXIHsGSkACAr9atAQF++MmuKazKQxIcqJOtNliUD8ASDqy6Gy1CVbDQA82i50m2/FoEv7XTu9p7QaFUAOe/dEG0MdhfEHFoXvh8UsvYoOQPPwnLDvN6lT3FyzCZJPFTugJpSZdHY9CAA0q2ggY8WdS7owtofXUh/OdtgWgwltxtvZIrQXTu3+hWT5UOBktLzwO8T4HwDIDYJb/Hebr9fyaJ2/tn03WPKLxNnsM2VaKMyCohsM3RT2eXzeqYwnsuLI8nIMLbsYTqsYS3TeI0AqwBQR1Ac83/CZp6exShORvEUdauzm/DSsUamDc9U9Wzne5nwZ/RZlmOXg99Pmu7afYFpFGWz6b8MKgJVLOvjaTci+arZaDh4ivsQhjjrf8o22nizMXdqXEwAui1txhhjT8G6MW3EnY5EDkQg3LX8ZerpbUDRgXy1nnUO08wQufJVuskDtPlDk4q9jB47uYIhmDMQ/uEmms45Jc6XE65cwbLIrbsmgjirWMqO0Wlv23ifCSfqGb/qNvgtp2hcYiCoyIbyM3DGuoMv9eme/r66nb0pTsZF1/8qV/JRLCRgTrbPZGl28CgU7iNCyZZ2xO/EYCcKiILQ1WbIqaqSza/H9Ccg0iJ43KyNDIZJKSyufRdaRU8f3FVfa6/wgxiinfi/FvXJPX+FaXLyB32/+2jNgC/bZAhDpMhjeBzMvSyGcQEc7mstgIRJOqgDoZkBPM2LKsOy2ssdNJxR3MEKqqRTMf55yVMNmBnyzCkE8jSOlAtBPOmWsr7gEaeYXd5XAL4rcQ+09ZzrjUgQBSqP988PoIcRJXGaJRLwvQrVIjl14sU0WdN+dS/DtPo8pZ3kzK+/YlP36agWObxujrolYwRiPl7Pjc9TggzCccKcU6TmVj//BDXQ2QT0NumygntsliNaAy/ltaHQXszQqpGSOiPq9kVLVwMqgGs/7RbZy/efif+TXWUx69mefZ+Mvba9xKESMRi0wYb7b7L0Bk18jtnzqhEXVNL3R+UUETloYkifQVEdJHpVjYWgnWCse0YDdJbB1GOOjLxglogOlOlyS+zaaE1t4pTFEvqM4rwVNli/RndLfJ8yDfpZQ7ALBV5jesOCgLYYHI9BuyNPawXppNNFGfBMuSvwuhjXfwbLPlbZQY4eViAyg/EBdq3NZwyn08XF+0NIAeol9h1zBkQIg/dj8o2JabSGbAHPzoDu1zwlzxMsX51StliMXeA1Rg90rQ4gL3KQuuFH4SZb0rYK6B2QAq96kqd9UkBhL1+AfnvaHkN7RS+luoS88Ydpp+EW2+K7ZULtAJsoqylE/Y/B6D4NnySTDdh4hruzhHeufUQ1wK5YhHZvjOHWPwFLGOsaxdWBWMlG1GwAzMwz1UbetO5M8Xy/MX8fv4vPgyBGdx06oxLB9O6DslPNoU7odWArnpSAze9cgzomt87dxTm8QtASw40nYgf42VYuhiyqzAR7jQHY7lq5gps4so2VaEkvOkN+OZiQoYgrxOH40MFduEUzZlhV4oqYAKNnEKwckvCZZhi9oXg0MdEmzb4bAbZaxcN3gE66XstnJNlOA3oZgF+u37KwwhcxvnqdzcLv7tqQusOyUW7NlBOZnotmIupXgW2KS7SZb5do8tg9GaSJbKrOVYN5hbLm3xxB+emg9VgbjpXBRYE8zANn4CjmaBTe9eBOWtYp7NUEtEdvy7nqRSic5bdzFQbSJcSdCs9d5JzNtUl0JzMdTGes5kpgeZialo5uITLr2REQFdzDAxOhuJyNRsSALukWBBKxRwKO6sGoCjczNAbWNe8Q6wnkM+KII5A9QP7qyb2M8MKOUiykjkpMwSqHdfRuaifgwKk9qtHfzE3ODqEA7xBqen53NqAQtuE1QqtBG2xLlYPAD3YUIvXGi7PUTisZfYC8q1P+mIaAjYrlCmxw9I9KNFfFp2AxOnTHKCuEhfa7n9XGTKMthw4ayqo7i9Q3f+5Wa3tG6rpR8LQvYZY3XLGgbFrQAWxG02RfPvjuhYrcCa16YSPY2wKhb3fYTNsL14cGMY2huD2IY9xBF3r9Sl57wiZhzPP+mWXBvI6CPgAmYZY/p2zNgnufHdY6FEF1A7uAKuD3S9ZsllZ2+oG9YvnO+sd9a7Xc/wQl6Jw0zawfuXZLYrua+SV6VeBKVG52zTWjm1Ux0YyjkvUBDaaoRDlj+ESBGWYRmEefd7AQT7Xhat04gqOOYkgLoqRj1xQ2DqNQoQ3nzhVn7hWk37JQ8hjmGsHA/6m7DgsKB2nOqXlt8mqLguiyn1ael+vWN6LshKO98IcvPO9OJv2JbgGAh99YPUcppvMKyG8y9JPOZHPtcstqkficsskCUl05nLLtNLW1rYwcG+GRtXQ+Hm8CvOtx91T0h2d4cIRjVj2SGh8d7F9Md2sEyen+1PwGELtYK+AGKJd509wRfsHde47WrQM9Hf0Spr7RLtg6Dwu0VxtvrIOeXUXR+zQZhB8Dvsq2sewawJhjxV+C9puenSxn8vReG8G1/Y665sZ2aEZcdP5RdNjFRjp7K0eYtAQKp1x0v3uni5CzeZ6coomd33ZreZ6BJKl2SGQDsfgVHzpmhxymuTa6Gg+8NeF4HD31B+DeTitdejDg/W7V28vB/15Xw76jsJ4KW4dCa3NwGaSahlJ8HKFgmNtOA0QIN6CUi6ky+/ANpXyKHRbPFiOORDhbYR5i6uNBOYkrjYVrsa1ERUH7TZYfvjioN3uQt9XZ9LonST1/gnnLC8gP8HjXXHSIbD9s8rXdc13J/i/t265m0nYTqYjC9j6xU52BTeF+zp6Ijqi8U84QHf6ft/k6gZiLpEbcPkcVgPrZZyAYgvH8JVp/+0Q3vrvIeyRedmm8w2qw0e5sfWwpUugEV6M05MScOHE3nTk+9IRPLdq4piYKQoB8aYtfwJtsdKTNw0ZOn0kNr1GnMU5uPg7mpZdr5HsIOeB1USHgXnTvEOwTcwdjVdoA/0wh18wD2Z62QK8aeQhaOR4mnK7TrIwAlGzbDRTFxrlTWcGmrMR190zaK1Md0NJe4xbrcNleZmEhfXFiLfNIPOKqElRtylTfTZ2zZjcTIQ7PnSPu8fZui0fPpXb8xFk0T0+gmX8mSJ1KGMfff5MgUKYSZfG7hnVYTK7vFJKmyxDxLb5zJ/GQS+GqVDNlpDSTmcc4oDJrcuH7829mZLqNjmldFcZhuitc2kfgXqBkgpX+aQ0ouQhCnEe/YdxltAYT+OnuETLIQVC6QJyisl8g6RTmXV5uA3OVSjH2aT0wtQhKlEWq43rduJvNguqi79Nf4bWV+QDOq9hzlw57FCnk9WwPivgtOupaOFMvAkQfEFMFkbyKDjCQbmTLRQ22c60COcAXftrum36Nc1+h70Bt9fH43ecxKnseApSZz0bzIrmA3Vm/mIXlbmyvHXevw3kpY1fXYh/64IqNJ97bda/92f9/GUO2ryCK42VopAfJ0WRLWOsDPxVqXvvU8C0wEUaHZFeMG2+zvh1M0zqRhUesNHVE6jCH4//wjEiR25sJoHsPRcs4ruTkzOWY4I7DaY3eQ4NhTLvbfaxRNBVsANJTMqQfyNQRqYos0gKk1KLeyGsgPce4TqQAf3sYD+tkicIeyXAkzgIrCeDvxgLoH5zEJlMGXldFhG7zduH6m1O4Am4VBKfEYPQ0A+TRK7+3DBJLBXHZ7NdOA7Qxa8eHTDLLTUJ0G5F655pZt05QKVs8elAAJKVKgE9Xy2DaAwZ1GvXAQLZBawDnpnVLgHpL1dLx+aaebxYRprsJeOOturVci0rLXn/mAGtwka5ss7yNwT7qBx4UJAmuHqfUVsS/U8REnVwz/c5l033UOEgwYJXC91Jg3/vcHTdIJ7M7lVbwfvZ/X2hr+NLntw2kqQGv9TrbTLaxE+5UfZXh1Xh4280XPdummNeyeleH33CiBW9HA8otOxlubGnouJn1vu1UPrmuq16y55p15WsLv/KC7KBF9wt+d/nmkz4FvwAtYOrMtMBf1/rMklEICmtA+GBCEEUuvZgIKYQic3FtHEojr5r3z2kK90Bp8TDxonQFZbKNXJq5k1cDh9FfYhbcUptLLoQ50yBBHfmdMRvLhLli5L9O3U6tyZZG8HdM9cSo/bly530TPUbmYZ89WvjDgS7N41lQ5X19a+BWaBZp1WaBQ7I3nI+2KGrzAfZ3M7mQxywWBPG2NnBp04DmzD0ob+DXR3KQ0B7GmXAJHVcNkSc2GHABdtC74Jd7N8hl4MB4ii/AwfMkk4KBB6+jO6cQfJGYD9dwuuBLLvVlVxdlkX3CgclacW8wDlORmKfpxzROoyXrLoIetzsRjyXEPrfqZMoPo5xKYTdHM/I/PsU6ew7rnEmjJ0f3/S7DypSPXyc40xA+zjeEbsoKhIsP+5xJpOdHv+IPCEV6ZTNkJwJYmczpl4vS1Vih2ZQ7sSy+xmVwJlTkVjJDMuZMEaZcVWugl6WlmGctv5h03hZeXuiBPxKLecReFuA2imwqP0YWTYQcADK7noHLB4Vx0edd2LjmlQlCSRBQ1QzLBFCM/caAIDjsqg0Hq4HihKLWREEtYs7AIU9sXghoK8DJZtxVFS+G2MHQHCXESHUfWmgeGWYReUbkz0AgEyaqHhl6hQKV6e1YoDqkFQBZF4F/BSCzEURKVkQ7kydx+IOr4dbRtIuKkW7o0QRQpc6JJxCSATenhgqKggbxwNxe4nDBNFbZBLy2H20QWNCBn4VWBRiX13JNjA7WXIrwW15DcBDAy8Cw3ZfyWKihavcalaL4UHL0wSyEdueLlDOMFAJhL2liaAypOldBAyhqpMxNlSgpCCDxZk77yIg7nb9kHFtrisL7Wt3GXoAppowCJWGmYwMANVu+iKk9o4JA0HMM4SjJ/YVPyJy8SMo704u2HDnHcpb4tnR+lQdq5lfEViigfmU5lJXAp3j+JAgJC7mch54J3NrsfBu5c6lI3QmF8hm2OmcYqPX7ZxgopoX9sij19FcUcDGYqFdGaRS6fF4EPAidnnQl4nYv2E8kRAe5wJJyPzRRRvY5BYpQW+7yOhhXeCDPiA5K07RHaM+Xtk9UQmtxG6oMb/EfudoHHcrGSnT4h1QEc3c3qcZ69zuJgFDrMpciYC9Cy0VRN+up4gPyX6nmVAkO5oEWLPWdCWX5o61VB6iHU4R6czephn/zO4lAdIukq0ZZ3zWBZz3ebXzR9G8XztBdr007+Fc4sbOYNS0OmFe7MAukYOCtzvHTr+/O8NZvW0wIKF+93YCkufLncw6x/Y+YUnc38Us8Q7w5uLh/d1HVCLC013WgyS+8Lz2897w+j2I939XEaQB85Tbu4B1uVs8RbTQMZ628/1cC13haQDpDpUZ19SOrJhxqXcUR7rIP0qXfZE71HjzZLE7vFT5e/3mBfor85w36AoyX/kB+ZrKRGWZqeBLzzOistBUlMkelppCt3m5aFQXm70O9iaC2fV6U/a2rkAyCj73NEf9XvekdIoB+zLgZE9CCXhxIaTeZ9WEwlL2yGc5VfHJp4XHnR/0i1LFBZ9aMZC8utU48kmaAZWT+UrLFUXgG22sdAI3Z602MN5SVXm7SLbJquvOL9gj1XDo54wUf2I0uCWr4b8/dqfXeExJW/5Kuqzv+T9qC+yhB3CvkYtNhNo8V3YPQNckKM1zhwRvOoPhHP5lU5j+mwH8zEN6N0B/EiO9DTAgafNtsyr0lHTTjPeEE+12UT5wZhtmlJfbkOAs2KWjZ8n5lju/CakXur0ZSkLo2DbizikOSiiVBOflJqKZ9G8z45r0YCMQKgcHR5xSjwfJGJbeJxBQLbpRwLFfu1gMikB0h2BYlgbCEMXV5aUxdMGA4qDnigHBQut70COLnssE7k+VxDF8VWTRe67We9vAWh6jnrNJwwUPCkXh3G3o7oGdaHZ1DjcQm3hQUMrncmr3EeyEtsNzOklM5EF5DZ7b9d9NsJPPLs7xhGGYB8UyMDPru6VgJ5KxZ2r9wZ6H5aI4c1O6uGApqZ3N5ERhpgcl1T+z67nBYCcVNzO9JpJxez2hTftwGiyfwSqsP3w4hVmWYF1u4IISB7FuEubheh2nT0VXsv5yFKzDJSTc+4/g+OjbKkmLj8fPZbn++fS0wNDFySpe5lmRPZYny2x1GkbZ6ft37/5xenZ2uqowTpfU/gR7maKtqczy8AkwqehKRATgoFWU6DHwhxAdTnrRisvGXcagxdeKt6mOuW/Bt1njydkUQP/f3PuQRwVvbmkweJ1ELyGTK7iwxfwC0kdQVhKWDZZhEuaCIN5elmxWqSwQeF9p9JcuX31RR6hDbpMQ9Sce48Mpwz4r71NO4Iz6sw2o1LzNSsFV64p3QRQaV1ZwnLadRO1zMyQI8VmnlckHZ+jGJlPUEelnZ0hEOkUDsXpbhoKqPqljdC/HkDDdV3UkpEo0SvXlYHoFXiC56hLoWph+fxCWGqczVO8UPG5ZjObrwTQLdSbrqnl6drUVmqm39LjNhUZ7cZNVKRoWLEyRq8Bk4gWMASMT9PGmM1+MhxP08W5keDdGeOfeRAiHv2ujee/9LE6rS0kCUDJZH3s+E4Oi7/poWZ6DJTo92Twsn8M0ZYeGvnwuaruLy2fvvWqdTW7tmqfeubAO/F0fbSruHPi7PpqkRadGLYrtW/qIr6txI7Qsj3Ytl5skubn2hOhtmjbqp6lMu+sUbcSrcAsXOSGcesXlVojM5NCXBFpt3eTh8qufg1/CtVgkXCZ9TuC/mbg5myQjzOsNuyxh0rRR8Qg4mwpR2zQzVDhcx6HYQlHp2uj+RKzL+Ls+2qVYi/F3fbS5eGzC3/XRfh0w9XQGK/we4y7Kpl/XQiLnhYmcF3cDkqEzWOH3SEaUTb8usMzyCLk1ynSRyaFdQ7AOczDJQTg02IgzatcnG200R5o2RAAJJYkb0Iczwrocm8YCtctTGv8BmIWBIFkPu3qAiwdtvpug8ftibNpu9yVqf6ji09X0JrjBah7+Pv3CjEXyXPo1fb7w8Fx1Op2IK6Ey6OP7sLcAkPfXwWWyrmceXCpVhfMZ1JaAb3D1PMAVm8mqnj5FEGTTrwuVPnsnrqBJM0R934OqNTpQJX/sQf3RFLUH1BizmZ33UUzmsatluA7jGqIebC17TpecF499wDjZFBv2hz5snGxB9wB8k8OshqssferTmSbdHL0fW3f0w9f3fuT38tg0A9Szdz2wTaKGHLIkjpDjGWh8Yik5cKlmEp6uwquHUC7jJt0YfQHKfDtURZfJUE/68C1wh4m3phzqcD/1TQZz/GEu6Fz6NQUAfJVW0CbaaOgPPw3pKMphrD198FbYkLZewm171nC3stL9AcU3xQ7Asro3L0NvM1hqvYLKm+q7XNl1EHEogSL4jVmVEZ81sQK4bhXDtSnqiEhIclQ+VQP5fFK3MQ9LJ2lh/vBTDyqdqCOFpxh+nyTxU4pOJQWCEGTQ8HzJVnEaJos6RusCDupcFbI86rX4z9sCUSlvT3EO9Rpu682nEkTn/g0HL0g2xA76sQMJ9p6O0VGsNWfeXDyWiieXqNQ4p+XeNonTCAg6IJ2ijvgJGmserfuqYb0lpqHfKuxJazq3eFe6I7sFoKBA8qLjaJH7nV/4M9osmWO49qOOVxYZyoD1zaLT1FG/gDTK8tmUU00qQZtbASCdcjDaXntbu1L1Kia2vp5Lyo1kKrnzW81D24AtH2iVv/YWdHn8QcOcsuUDvfIX30qo3SDi+KASDkZFm0slrnS0jruur6SygmNpKeuHM9NzwMlW6yQOU3YDi/x+AAMD+iG0lFWCGYXopgBngYUZdI5q80iISyUcTK+pbh656jP4sQH9HiMuNk5/maW/beJc5C1KJuhvOXQb1OKNBzLdAl12ukZlMMTfPKyr4IDSCtocr31Tf4+9TRYW0rzH4dc5zHqduOg4PW+NHxEhy68Fz4r0IRSV/tEg7Ud1nJcw2TAo9aeD0pS5JGiXuabgJ1jMNEVcdKTlpVNXnbs8LgH8VmJHahqRTdOwnGvAgtWfNDaEN4+PIAdR9TIOtSFMpehsMYfpV9j4y68XKVrpMhQKkjXcxvzrMI0ubxlXFeLzwfQehVjFZp2IfXtIvy8NIozTpVz5/Dk/D7kC6VP5LAYk0g5GtXDQVIf7IGa7IDuzxM1U6v2kZ57VJB5SI/WEXzZuKxmmWpvJS4/TduiaWvucEAlDJWjg/TKbMouD+pNGl4/TCIrpMworUNkMptsL0nXH01t0ipFv0sscgFnKOTxKM9nVE0yuh+vBmezquVGp50avHi9MJ5sozmAi779OpGghXvwbsPv53Vc9pDwsQHUIxOORaXqo39Zw3nI+XVy03vk8uiiPVi3Nm2kMsPgpNSUsRA26E5FtSkyUBJvPZlCXB3IZ7VWSAebl4lICiVMMEH/tIfNXYzoXi7kEE6doIf4CUvRiHSDNGwcuzqRVz1UWRhxu9VELZ74pYaeCagPJ8aprOPw1XnEmrXqu4fj6O1qCQcOIrwZylQhymNVwM1jDjVkNfhJuvSm2khw2laaHWoBNlLW0wd7MgwuyaF8pmiTJdBMmPDqdaIx71wt8Z4B8Lr5VeW5yoVIk1va7CdrFmQzv4swQUXxDrk4xQbzm7RqRoo+YbKSRA+okbUxP3MaeSRt707lEC+sUfUR/Mb+f/0t8m75L1MadTiV8Vwn6eOzUl/xuguYnm0ImTDLZFFvcGbtEY9zpVS8ySjbG7hWHlTTuBsi+M6M7j18AWgKimVH8GC/h8C2uRphRu75PU5ke1ilmiGJdaZIMMSdi09glauNWcQm86Q2KMCfCpjNo418n0kGsSTLEvOgBvTBGlQw+XaI27m4vYaOzUNwxpGEYuBwGNfQHeuByaNWAQjThYw80qvCawyYbYgu6PJ1ohivYZxEkm2JzeyuCZC3s2/VTHuJolKvfRUt1Ll0L/a6a9nOo7XcTNF4j7sxWF00xwZSYTDLD5CfFZJIB5qa4SJf5do0c1AX7kn359GsTT0nJJBNMOaQ5ojf5IgfFiSa4oj5MJplgivoumWSAGQTzMA2fgHAiLcqiX4fYBhvb366gRBeaNANU+fSfSzdGl4nCbAVAlRXMpbl0c/R+odjJRLQM4DMY4cvlbSrrPjmby7hHvmaylSwhqDRTVMEigknVR5ZM86k0U1R+ok8n6uP64fIrGbJQPLPqy6pfJxkySjxLlGWzrUvKmyCbQV1sdAgqwQgPP1wRgII/GZZmMqpHTUiCfBq1wXJPIJ8VQRyB6gd+4TVh59o9+bRrC5KsZOeHVIo+Yu1ki/wP/BwUgIuT3pNPozZ/MRd6BFAJOjdcxA4G5HcNF6XzOTN2VF80EL5Msdqi1T6DRKVo3IFZPQAUBL2WP3MPhk3UwM1zFGtpmb2AfOtzPq2CZHXsZjU55Tb26BR1RHSCGKdPc4C6aVwIPDPFOXRqQMMAi1l90/BWEje+UcvD7vUCu9c/N6s12+5Mkr63PR9Zmk7RR+zWpVxnlGTRr4ON1Uh+N0Dz2fN1OsUAMZAIFSfo400nvhgPJxjg4UBAsBm2Fy+cgZdm0q/n0/Yhj3F8Y8lVDiqDPj7yh0M26cx7FuNTGfTxr4PAEwNXKfqI/p2kJXGCPl5w50sAqxQDRPTcEWoRCWyXbIJd+Wh8QcBsmCpJHv1avni+pPtVKfqI9a7rc/wQl1zscmkmw3r86g4AFwNZmknXZdqvAkaiKedtGvMxSuS5dEbRp/4IIsIMGmNiHYBkhgL3P4b43c00CvPo8wZOhXJpwJK+/Oq1V7p5BcfehHdA5xIPxhcZvznMVmV8iacwcRgXlpKJ2c7puFWtX/Iw3cB07tKBOIfGJC/81ndxQJCsgR2nvdh88uGoGf8YvTOlo6G3Jho4CDGOOvp5vArzrcddsKISNMYMuCZDFkyAyCSpY6Khhd+x6L5qrH8360Tgz0F81sACjyFcN0nuDdFp6qjX+RNcH/4hOKSnU9QR0V8aqfqiw2l1GYsjiUrQMIFxicbx+Yof46kUDQ2JI4E16r6qI2EHV370JD7r7PRVoYAFkQ6IhMMxkMWytUKO38zioM3G6CGMcUyk28u2f4YO7q47SuYZhzi/qI295/ROOgFq9EZmT2mp1eIGbtl4vddX/QLw2wa9Xhcmo7zvx8Abv/Q3iDOOzfJGfQ/p7X0U+3HgcN9HeQtIQxgb/HK4K9MCwQwMibDUSFOdP1nYSjIChnDioxnC+08fBrM6nUHPOrh+IhxhGj8TLi78WvrQYT3Gfb5hQxJshH1kb2GHE1Bs4dRr5TLwcINpFHpYXngcDbRfEHrZhnOwqT4dUjvjx5EdtjHEM2tfYcG3tjVuWzyOV6EEHIan6UBNwtP0lX5rarumdtzIps27q4bll5C6i0e4dk/YkVzzntvhq8b1GkX7gL8Dx8M5A2ygLoMIh2oRhN6oJo6th68+fpjD75AvhxHPG0iToOfysoeqLK+gkau7vg53aNZJFkYgqnBNNmsGAMZp66bWu2fA9G06RaftV2u4VL1MwuKZVQEy5W1drD+q76mv1GbeXWdpxg39XiItOU73+MKHs/4iC2f9GozhpCiyZYwPiiWnY3g+e+99Co61Tr2IYuLjLOE8GSpQxHYGGu7+JsyfgMieKrU2QhC1OJJTW7M+UUG2yZeic1VjFewlyMvSCM8AjmbF502SfDx+DJOCPWsVsvrhVNjkhlqxyXOok6bKQZR2qCMtqq2qdECuNaZDPkjF6WPcWn8mZXjfvG7+ECeV+6Si9ojLsroDcynojAjLUmM4OAd6IyTzELVGgXlHukMe0WmqDlPUzuoIIC1bBiE60xmaMDvNHkdlxOxaa0l1UHc/uZmoKgdZQnzsp6AOHYilsBGCAy0g6DlEeyHm0mHj+zP95kdlHCiAP7NXAYjhVAkg3oGqgZBTV4rQPteqpwtdMVt1aJAsNaKFcacULeQh6kUPv65UA99Vx8Mjei9QU0HYwrZqQuNZKgsD5k5lGOBDVJxB3l2pj+/NvZnuFKMpZKsuFY6lmtQg7tSjBjxEtZDyaq0O6MW2+4sv/rR6bVDjiTiylOqLgQLh01CW0sdgDjSCIeoQlx8SVp0oBGrle+5pNM3nAwUAmk+cSRpGCO5AcTCuI+UR03ioeiTh3J0uNYE+9JWIKGlpZGi4Q9SXjrg/o6Lct5cftEYhopTKa9EyY9/C2E5eWxxXw1CHeIgzkz5+rdVivlret4/hqb++R5RReBFRIHcSw3bl28A4UAeKrENUhh5mnegCucOtoQ5UMbtdcwbOshUQmiO9IIk6xNFDzKqjgaNdNNcLUa3xgytsNYwwaM62Qmo4Z4MKC3yI5kSBezcKZHqiKylso0Cv4FBXTOchKtAuTnVraRgd64rL2o1QIsxD2lV5DUe7o+2tFMt7Qfgt9eAxwtK6IbRELSOEtlWbwsnsRkLbQeqNkGMXakNH/LmnYqyYxh5iUDSCpohbqQfdXpMYcDd61Uexnn6pBotxomODsnBrqHAtSMfMLBVZXDuW1ZA96MAP0FgRxP2JrJUw3o/FsKeO52AgVK3MUtvE1Thz1FWg/xAVUlUqY6uovsHTAHRhApWre6VqeuCGc2d6iiy0wZ4nV8woJJtkdHO3++lwyD303c+xFgZondo1o8HuJ1/YZvOKRbNsCw7O1R4EB3yIm1cK3LtyBgu8QNfduCpi6wiGUGyVBEG4cwLDcAepDmI+nakAejgETOOnuEQBNPR0gS5rrRQknLUJIbEcqgmFe5D6MsC5K8W5Dc411QWXsFUSCGKpGgjBnUIgtENUAzGXjhofhRO8ryM8aAcxbAuqhyqUip/Asz4wwyDOFIOk7BD1Q8qvtYrQEUB0LrSJSurFFxE0Bw96GBfdBHQdop6MdOGN51794pu47AiKcjgX4oS0Hai6jHMxjpGA7gU5aXHXanOAF+dkFB6i/ox5gY6Rg9lFugEQ1+p04Bfs+qk9RAUb/6IdIxO9C3eSwq7V6sAu4ompO0T1Ge9CHiMDna05YVHXKnNAW3Yiyg5RWcbaumP5N9nC68dwrjyHvLXXS+tB6tXYW3yMRDS2+kQlXSvTwWwBCug6RHUx3QpsojDCSsowTkHOZmnDPNZf2t9F8wE1PVSUSjm6csHyGaxCLIRiHS5B5TUH5/5FiZ4/eggLUGU5PoKcv8QRyOHMDT0XeYLST/D/ekkMUPjJJsc8TONHUJQ32VeQfjz++8nfj48mSRwWqMMkj8dH31ZJWvy83BRltgrTNCsx6x+Pn8ty/fPpaYFrLE5W8TLPiuyxPFlmq9Mwyk7fvzv72+nZ2SmIVqds8RpWCeXdPxqUoogSUkmIEKStY+EK1hLRmvThX4BTgUY1FuDxSKZFH07Zgh8Emohq/3gcp83W7C8gRVG+QeSHZQnyFOUCmM7jI6RsyJm7VbjTXnj0t6kgydKnEnwrSZAy54ORshh1tNEK5AEav7QcoIMMM9orbNEhxKuV9SRqwx1XtUQQt4xRA/g5WOK4vh+P32nj0nGP62bIskQbiA53bKcUdbxjO5Au2rEdThXvmGha3Zar91oJBNbc/DxLI/Dt4/F/4yI/H83+131V6q9H1zk0gj8fvTv637p0d5t22jXjcjZ1Uxs+etUTRW0oEOwI6NHBAdhQQyww9ahoC9rU3q5Y9Oqui1nVzM1pNUlgytvQ0kyY9CioSqnXqzw6cZFhX+3QVBV83JKG9iHJHvQNtuB+n15rCSBGaDrpFb5X34TVM6V2zVg/wjuZeIFsQqEDM535LmBunMCcexMHKN57P4PNCJooTHZg85kLlCyHs0jkRrx5WD7DPtbNv9yi3sXls/feAfbUO3eBMnWhpFMnbYB3YNJH/BobMW+1QLyEhW6uPQdIn6Zu9Owq3IIcWeglNlP2HKLdhZs8XH6Fq6BfwrULEuG/mQvpI6DrTekAqXrge+oKqXka3RrNn7jQLf/ShWb5cxem2f/VqQEk4ZxZPn/hQl6LO6ecknDOOEUv2ucRKuZGR4J1mINJDkK3ZtbSxDb3GWuITRmnW2ajQWnF63IDBhucAsn/KY3/AJGMP7WtIYi2WZH7KMY8tkgu9h6dbDPV19yKT1fTm+AGa234+/SLlbFuMD9feHgaNZ1a2bYGzofqDkA+IuQ8uHSCmsCGyNwS2kG6ax+EdvbOGZKVyaSQfnSF5AyomfO5I83FLJLCkxo5faR58egODOqrU8oc4l1Bo+muRRGaDVYbvfJHF/sYLdrZOxdwQZbEEbo/AMiLnfZCm67Cq4fQIdoClPnWIaRDKOekwbZ0DOeSxACAr27bFqL98JPDhnUHNl0512GnWucKLADLLvy6Q5VzpW82ODhCehH81q0nufN8ZZgArjoIJAMYJBpXUOeTut2scX74iUcyE9NV9hQvw2SSxE8peo2VACxWYZIYQH7OVnEaJov6gGUBBysHqP7ztkCUOmqM23rtXoLo3L9xQB8FGDgAbF6r1Du7qkrZnHAyj2VqVk8WtvI7qF/S0/Q6wKWsTvzrmMSax/y4lNUZdxNeUvNouyo2wvGk91x8J8eS3hZ2PyidYqBTKoF9gsOlEyDegCtCKbdge5Ht+2hGlzuT8Ge0WZa2MHTcWqvdzS8gjbJ8NpWPakowNWOaOMoqBe1c8L34nXrdUZixk0JgDXHtLaz3BOwhLr6VUP9ApM2Qsub4y9Xyu3F08WaBtepkq3USh2m3hWN8/uDeLjo5FiHIQh78LmbEYR4ZQSlrKR/Y7NXq6Cz9bRPnTnyxmpV9tzNqNdRxcPLDD328zcO6e1PM9KTxkHeA6ceVNJcpRFk3btFEGDpNUngIG4r27fUpmt8LQvVpLu54iBEWeuIn816t3UPdv89BQAmkqMyIraPBS5hsgLX13dHOgLjm9nU//drroiOp7Jx7g+DVqqw7z5a7PC4B/FZif1m7UXUNOgRTes43j48gBxFuLFusJEy/es9g+fUiRaXs2Jv612EaXd5K3UJslsm9b9i+WjVV8DBTwnF5wHMF4Ork2e4o4GDNHPcw5atVnXbi+X7iYg5MvSmp12JE0XFarH1n9PtoOXQB5wvIySuwpgZ88stsWliPAnEaxenT5yxdgsqQuBmjbtEJQb5JL3MAZmmPZ5+aiRNgBpNr55g3lphemE42UZwFy1DqwqwKdPFv0O2oG4PkKL4DPhqxhvq2hiP8+XRx0Tps20Je4hNeNyiIMOTinm1KTJ8bVA/kjui7XEidcPWAfnVH02IxtwVqTCNpR2wxr7LQbjIKMeabEuo9VARIm1ddgLDbxIKY1y8g/x2tCKDpwbebnAHeOAL0k3DrTbEJsoYqwCbKWgph97JFxDc+k2S6CROnWHcuwM7tBqgWxQlnyJaduQKS+q9rAl1b2woMlGx6ruvqIHlOWsybzt0okOcv5vfzf0mvv+pgTadumLOddnUwfrIpHAmqRnPSURqs6ZVLNKds3jmiLY9fAFo8oNE/foyXcFxzgftp6khJMJCTRq2QJk7MTXVt2Jve4BNXe7zrxJWNr5Au3EG5sc86lzHVcdF5Itbg/kvOeoAKt6ZVAVHsELzXiyyvdfN2aPZdq8WyX/DSaA6WurfrpzzEsQRXvztYcd1V80xHMNat2ODYz8RaJOupWIW0KS7SZb5dI9doasvGCtbJTKhGcgjkTb44wnLQf2okB32nQgqCeZiGT8DFTM2d/eqQ3DSju/kjCeeITWczSArOLacO5pANnjOpOZSYI2m5mYESUPZTUAzmZs5IQFlPGqtj7XD5lYwB5WRKgJHJqCNOpi0CVGe0yq9d6+JgF6wAFIWDKXOD6ZRlCPQE8lkRxBGofmD/rMRy5lbBBklW9p4daYHVLogo+JafgwKklqs3fzF3dOoGx2xHSNPzuZ0JhTYK6xxat1kBXaweAIpkXEvfDivPUUCPZfYC8q1POH0ZoTVriymx3TEcY1ntomaIDizmAPWvuHDiLnSVIZNq5yvrpEGhYF5gn/nnZrW2bM6mJ/YFjtQC6lYvtmayQZQHtdKD8S1Pw1qgwI2kphNpcEw9HOzsCuW+vXixNaRtXKXtQx7j2Ih2i0/S1xwZizPPLt55g3cdBNLoX1pA/p2bRgjufEdAKPgyErwjtOqI9At6w8LOVDeQXzzfjf7XG1XP8UNc9sQV1cf0K4fOnjiJGn53fhVnC5W7TWMX9/3rEAKOLuY39/xnKLTtY4hfy02jMI8+b+Con9uBV2pzBQebZOjmrY17cvG9+O21bfpLHqabJMydRBj85sx1cx6nhljqjVn1RBA17q/fR8v6ebwK86034JitZqzg7Bl1UTdoyORZL/Kmm3Vif+Y4BY8hnN8yjs9GUNf5E5y2/0GdT5lerUR/bTEa73QH5JzHJRpV5ivLu+t3cUT1YePQCtg1yUmQhiY6oCVncEAwcS4vbIOKVE8MdNfI8AmkASUynDGu9hTL1uJ+T28jqN3x+bObEmcmgJsQmMdpeeu76k+l4XHSM7yZV80edPstOecYpedyFslMHTiM0Z6UYdr6OzGgbp8eeIuWrkXXgUVLP+gADbsZMJRtwm3x8J1YgO87AFh3Xbiw1UBBLDHj6Y8vCCjmOlBdteGPolq/aeo4BtPVK6bnm8KeFPwgtkl8lrrgCEbyMk5AsYWTp9V3ooEuhuoRH1WG8oYMvsl6F7LGQ1N9c/VN4LsS+HcianIBYW7xbS88jNdW12skqTh9Ct6sPzuJzF3MGEZsOz/M4RdE41ur7UDct+skCyMQVfOw70TmDVN3z6BV9WF/PUWrtVrDNcBlEhZ2PkLf7WqCHFxM1qaTm4nJGwG4lNXbBDcTf2ZWMy5nU3cT1N0k9FFX1E3wTxSP1yr0Zw1gQ43vzb2ZiRq0Ba0iJHqBiSLUxezCiy6hPZhCC1+GiVFsUbq8DS23wbkBBVWpERbzzczl+xihvrAxRPc7LZgURbaMcZtSh07VqZb3KWDEfpFGR4sMVYIeFKkpCEDyeIJ/Y1uAXHVgVXCQPTk541jpEIiaKCTqO434Fw4ONjbIq+MxL0uLMg+hMHjNiNNlvA4TgnYmj6L+IEm2aGzKFKxR2P20FDCoUl3zRg9fZYvMKPMQ9x9OiQbWaPf22Z+35t9h89MvNe1FC9CLS2zkbKkOGLTggE5MShoJ/x5FB3Qbx1IXECMq1QgDn+9RE8jzMLkiKDTbwRoD1ZbZsTFoHkzbS9vX8enhAmfEJqdfvMUgzafX3NA1D0ptXC9499zG/uytlcdt5Xp7YZ/tLHk9rmuoNgPZVN3Hg250MXN7b3lqc2efjU9v0UhVoHoOjmy1+stBN77gEbu9t7xgU22f7V9tjknbvX7MjWyx5tNBt7zoEbq9Nz2xg7mXJscPxVx88ac+fjhL1lb4aTSypaoPWu3dPjXE4lQfR2lz/km3cVpc/IySpK72TZ+9tTh+tYJ5p6S/8ck3XNqGqz5qKQH7OAoJyaWNphL880HjqEXvUzA92tE+SLJfDWniHOxGNfZlH3alDNo2Yv9a0L0ZuDMNGBxlXmnLq00Eqecd99Ls6DF7ySs21NS/zcMsALrvWk2PXjtikMZbAIj5G6ftuWecJNVQrxrtreWl+456TXWw27eqrbHj7Vsk+j0beuZF1hFbf5dWfkftrW7gRW/n7q/V93h2t0st2PHpnbI2HM7xXa0Naud3LjYD9jcE7GpLQFfp9rwrUCzvmWBHffYgKOhRAP/W6/9sZCUKjkscRxXYUF3jaEJ/ECmZOhT7nBJwEQuI6A69WsGEb2F0hE3V3C/uAkzQm8bE97H0pC8szThaI42nIVcYQaSK/RsTTAtqrlGtiZ3mvTJ7YqSOezUo4jg0GgOOOLgJP3Pgcry6QUkhjMtIamUyTMkDFR2ininYoh0p2kHYq/2pmpEFOzBdQwZVZb/MfnRzpJOva5QzV879Tp3RMq6jemA3zcHMZ5dnJjua36iu0Fkx791zBl3tGnXbZNc+M7vaLNHwmGlv3e21ockLdG8ecuM3OnfhcZ+tfxucS9scRVwjmwr/Puj25mLE7b21myule2xjFI/sXhjswKChlBocR0DjsarPozS8Ros4aXs+xpukNiJK2F5UgA52MfLFFiayBmU7mKTXfAWiL4CIpMa9XnjhdWDUiy9vWtCjBfu8EMPowU4vxuxbKXZ5UcZAM/Z/YYZRjp1enNm3cuxsmWCgGYdyoYbRjx1drNm3Zuzuoo2Bauz7wg2jEqPvGO1bGXa1g2SgCvvdSWIVYYc7SvvWiUMeOg5kp4nRjnF3nPatDzvagTLQhh3uRF3giFuwTAlLgLyN3RUBOM8tSvQ4xUMouIiDSgWgbPOvVmEKKb5oA3jVLdmmBMtnsAo/HkcPGWzqKgZYnVgIlITGbza4OPgmQYRepQ2D42Uzh4y/imBhwjAm5VDKYVOpojqIDMN14ahWvODRV6HQn4chu5Ujh9slicCb1OEq6hGEw6+/i8Bx0jByM3vloJsEEXaVNgxezYU46OqzCBilqMFWFw6F0FWSDL66LKlSRXU7TlhFlSSrYo49MIeq4K7ScjVxOUQVcleEFXRJrElSPVLC7C6VibC7VEkdXYahlilE5OOvwvYoFMjn3cb4Crgswtp4bzkFflhHIhF3bB4Jr3Q2lbGCcMwVDBhEqnjUIFyO1cw85wAjMfhcPrnpZ7IOU4KnX1y9+KuoFpigOupWR0GSkbdKlI++KF1luGmfQhENOF2ieMhp0pUqQm+ACCvBCZIKYJqCxSAevRBYDDJVaDG6DIp1yWrpwR8EZh8n4KvgcogqYzIpDNptYH3BuN2lCYfuJlmhlzDrCr7DMBmEfYfKM1xp+6oBV1ubIqqmTuTxiZm8cMKJI+IeEbn4WScfNJdamREzSliDcMpI5RfMdnE56jvDxSnNhi6LXfDXIU4lYWJfAcPCOKcCdofjodoSzx87EuXwb0fM0lcBpbz23BjUJXUP7UpErhRwKItracUYvYDGRZpPDtnxZ/0MsWfZh85St9aVciU7rBSezRKkdh/3yyJzeChntO+UUbRZTNBcf9kvo/UpmJxB0TGZ8KCMILL5tCfWmDBqAt76Aq0JDn0IIqsPPYyxWxZtqeqjE+bEEcMkfCqEF+MYIDdEWgbmgkfBqZKSfQ4MwKW5E0QXGKtPApLwWY5Y30WrE/GfZCotiRDlkMnBzmDAHBXlSMCaPAoSa2HZranGzsr2nNjybDlHzFHzJDF/PQEK9Ejcw8RNHLNGqqO9wW2s2B1LQcXhWWQM7nDNMTLDg8uO4UgllqPpjhRYHG9DxLBCZA6a5YJWYfy7r0UlG9RVYS7RBet9wSXEIlAOR8GKQrz/3QiGTe2dPnK72fUckvjuVi+I68pDiiG72WynGXbiM95ZUogTIN1r0o0xIOj7klMEwgpwOQ6oe6lfgdeXoZKWjSLEnWsie7tb0gHVJlG6Hc+RCE2HYe76smwc7r/nbGd7RppnkDd15VsQvFum5axiB/sqtAdhD29yT8PXsH2EXOHkzHGOchR5xNkspg3/3is75D1DKVfSy4hmxApKkUfLRMnqszWrgvt0Al6Hbt1Z7VGLzxsrJWCSRmBXvB0/fMXstbLct12vdKHK0bb9HkUwvJ2vcXnI2i7vURDy7X6F2zEOtv33yLpskjF4B8RysrFPlocmIerXHl6z0ksmKUNe/VaTlTHYbR6Cbt3S27QPp5WrTP0B/iyzPHwCaEs/KfDXD6eLDSy9qp6Q/jAFRfzUQXyAmClYUm7wbZ5Z+pg13vgMRU0W9mF6UIZRWIaTvIwfw2UJk5egKOL06fgIv6L98fhi9QCiWXq9KdebErIMVg8JteJGXv199X845Wj+cL3GDk8uWIBkxpAFcJ2eb+Ikaum+FDzQLYFAu1D18+OoLUv0DPnTtkX6nKWKQLX42lsON2C1TiBYcZ0G4Qswoe22AFfgKVxu4feXOEJOfjKQ4Yagxf5hGodPebgqaoyuPPwJdThaffvP/w+qF7M/kesCAA== + + + dbo + + \ No newline at end of file