diff --git a/Aaru.CommonTypes.csproj b/Aaru.CommonTypes.csproj
index e36a1c4..7553bb4 100644
--- a/Aaru.CommonTypes.csproj
+++ b/Aaru.CommonTypes.csproj
@@ -33,8 +33,8 @@
CS1591;CS1574
-
-
+
+
$(Version)+{chash:8}
@@ -42,10 +42,11 @@
true
-
-
-
-
+
+
+
+
+
@@ -53,9 +54,9 @@
-
-
-
+
+
+
diff --git a/AaruMetadata/ATA.cs b/AaruMetadata/ATA.cs
new file mode 100644
index 0000000..3392e39
--- /dev/null
+++ b/AaruMetadata/ATA.cs
@@ -0,0 +1,49 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : ATA.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class ATA
+{
+ public Dump Identify { get; set; }
+}
diff --git a/AaruMetadata/AaruMetadata.cs b/AaruMetadata/AaruMetadata.cs
new file mode 100644
index 0000000..da913d7
--- /dev/null
+++ b/AaruMetadata/AaruMetadata.cs
@@ -0,0 +1,81 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AaruMetadata.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class MetadataJson
+{
+ public Metadata AaruMetadata { get; set; }
+}
+
+public class Metadata
+{
+ public List Developers { get; set; }
+ public List Publishers { get; set; }
+ public List Authors { get; set; }
+ public List Performers { get; set; }
+ public string Name { get; set; }
+ public string Version { get; set; }
+ public ReleaseType? Release { get; set; }
+ public DateTime? ReleaseDate { get; set; }
+ public List Barcodes { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public List Keywords { get; set; }
+ public List Magazines { get; set; }
+ public List Books { get; set; }
+ public List Categories { get; set; }
+ public List Subcategories { get; set; }
+ public List Languages { get; set; }
+ public List Systems { get; set; }
+ public List Architectures { get; set; }
+ public List RequiredOperatingSystems { get; set; }
+ public List UserManuals { get; set; }
+ public List OpticalDiscs { get; set; }
+ public List Advertisements { get; set; }
+ public List LinearMedias { get; set; }
+ public List PciCards { get; set; }
+ public List BlockMedias { get; set; }
+ public List AudioMedia { get; set; }
+}
\ No newline at end of file
diff --git a/AaruMetadata/Advertisement.cs b/AaruMetadata/Advertisement.cs
new file mode 100644
index 0000000..309f8fa
--- /dev/null
+++ b/AaruMetadata/Advertisement.cs
@@ -0,0 +1,60 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Advertisement.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Advertisement
+{
+ public string Manufacturer { get; set; }
+ public string Product { get; set; }
+ public File File { get; set; }
+ public ulong FileSize { get; set; }
+ public ulong? Frames { get; set; }
+ public double Duration { get; set; }
+ public float? MeanFrameRate { get; set; }
+ public List Checksums { get; set; }
+ public List AudioTracks { get; set; }
+ public List VideoTracks { get; set; }
+ public List SubtitleTracks { get; set; }
+ public Recording Recording { get; set; }
+}
diff --git a/AaruMetadata/Architecture.cs b/AaruMetadata/Architecture.cs
new file mode 100644
index 0000000..7355fd0
--- /dev/null
+++ b/AaruMetadata/Architecture.cs
@@ -0,0 +1,79 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Architecture.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Text.Json.Serialization;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter))]
+public enum Architecture
+{
+ [JsonPropertyName("4004")]
+ _4004, [JsonPropertyName("4040")]
+ _4040, [JsonPropertyName("6502")]
+ _6502, [JsonPropertyName("65816")]
+ _65816, [JsonPropertyName("8008")]
+ _8008, [JsonPropertyName("8051")]
+ _8051, [JsonPropertyName("8080")]
+ _8080, [JsonPropertyName("8085")]
+ _8085, Aarch64, Am29000, Amd64,
+ Apx432, Arm, Avr,
+ Avr32, Axp, Clipper,
+ Cray, Esa390, Hobbit,
+ I86, I860, I960,
+ Ia32, Ia64, M56K,
+ M6800, M6801, M6805,
+ M6809, M68K, M88K,
+ Mcs41, Mcs48, Mips32,
+ Mips64, Msp430, Nios2,
+ Openrisc, Parisc, PDP1,
+ PDP10, PDP11, PDP7,
+ PDP8, Pic, Power,
+ Ppc, Ppc64, Prism,
+ Renesasrx, Riscv, S360,
+ S370, Sh, Sh1,
+ Sh2, Sh3, Sh4,
+ Sh5, Sh64, Sparc,
+ Sparc64, Transputer, Vax,
+ We32000, X32, Z80,
+ Z800, Z8000, Z80000,
+ Zarch
+}
diff --git a/AaruMetadata/AudioMedia.cs b/AaruMetadata/AudioMedia.cs
new file mode 100644
index 0000000..cdb2e4a
--- /dev/null
+++ b/AaruMetadata/AudioMedia.cs
@@ -0,0 +1,71 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AudioMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class AudioMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public Sequence Sequence { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string AccoustID { get; set; }
+ public List Blocks { get; set; }
+ public string CopyProtection { get; set; }
+ public DimensionsNew Dimensions { get; set; }
+ public Scans Scans { get; set; }
+ public List DumpHardware { get; set; }
+}
+
+public class AudioBlock
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public string AccoustID { get; set; }
+ public List Checksums { get; set; }
+ public string Format { get; set; }
+}
diff --git a/AaruMetadata/AudioVideo.cs b/AaruMetadata/AudioVideo.cs
new file mode 100644
index 0000000..324076c
--- /dev/null
+++ b/AaruMetadata/AudioVideo.cs
@@ -0,0 +1,153 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : AudioVideo.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class AudioTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string AccoustID { get; set; }
+ public string Codec { get; set; }
+ public uint Channels { get; set; }
+ public double SampleRate { get; set; }
+ public long MeanBitrate { get; set; }
+}
+
+public class VideoTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string Codec { get; set; }
+ public uint Horizontal { get; set; }
+ public uint Vertical { get; set; }
+ public long MeanBitrate { get; set; }
+ [JsonPropertyName("3D")]
+ public bool ThreeD { get; set; }
+}
+
+public class SubtitleTrack
+{
+ public List Languages { get; set; }
+ public uint Number { get; set; }
+ public string Codec { get; set; }
+}
+
+public class Recording
+{
+ public string Broadcaster { get; set; }
+ public string BroadcastPlatform { get; set; }
+ public SourceFormat SourceFormat { get; set; }
+ public DateTime Timestamp { get; set; }
+ public List Software { get; set; }
+ public Coordinates Coordinates { get; set; }
+}
+
+public class Coordinates
+{
+ public double Latitude { get; set; }
+ public double Longitude { get; set; }
+}
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter)), SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum SourceFormat
+{
+ [JsonPropertyName("ITU-A")]
+ ITUA, [JsonPropertyName("ITU-B")]
+ ITUB, [JsonPropertyName("ITU-C")]
+ ITUC, [JsonPropertyName("ITU-D")]
+ ITUD, [JsonPropertyName("ITU-E")]
+ ITUE, [JsonPropertyName("ITU-F")]
+ ITUF, [JsonPropertyName("ITU-G")]
+ ITUG, [JsonPropertyName("ITU-H")]
+ ITUH, [JsonPropertyName("ITU-I")]
+ ITUI, [JsonPropertyName("ITU-J")]
+ ITUJ, [JsonPropertyName("ITU-K")]
+ ITUK, [JsonPropertyName("ITU-L")]
+ ITUL, [JsonPropertyName("ITU-M")]
+ ITUM, [JsonPropertyName("ITU-N")]
+ ITUN, [JsonPropertyName("PAL-B")]
+ PALB, [JsonPropertyName("SECAM-B")]
+ SECAMB, [JsonPropertyName("PAL-D")]
+ PALD, [JsonPropertyName("SECAM-D")]
+ SECAMD, [JsonPropertyName("PAL-G")]
+ PALG, [JsonPropertyName("SECAM-G")]
+ SECAMG, [JsonPropertyName("PAL-H")]
+ PALH, [JsonPropertyName("PAL-I")]
+ PALI, [JsonPropertyName("PAL-K")]
+ PALK, [JsonPropertyName("SECAM-K")]
+ SECAMK, [JsonPropertyName("NTSC-M")]
+ NTSCM, [JsonPropertyName("PAL-N")]
+ PALN, [JsonPropertyName("PAL-M")]
+ PALM, [JsonPropertyName("SECAM-M")]
+ SECAMM, MUSE, PALplus, FM,
+ AM, COFDM, [JsonPropertyName("CAM-D")]
+ CAMD, DAB, [JsonPropertyName("DAB+")]
+ DAB1, DRM, [JsonPropertyName("DRM+")]
+ DRM1, FMeXtra, ATSC, ATSC2,
+ ATSC3, [JsonPropertyName("ATSC-M/H")]
+ ATSCMH, [JsonPropertyName("DVB-T")]
+ DVBT, [JsonPropertyName("DVB-T2")]
+ DVBT2, [JsonPropertyName("DVB-S")]
+ DVBS, [JsonPropertyName("DVB-S2")]
+ DVBS2, [JsonPropertyName("DVB-S2X")]
+ DVBS2X, [JsonPropertyName("DVB-C")]
+ DVBC, [JsonPropertyName("DVB-C2")]
+ DVBC2, [JsonPropertyName("DVB-H")]
+ DVBH, [JsonPropertyName("DVB-NGH")]
+ DVBNGH, [JsonPropertyName("DVB-SH")]
+ DVBSH, [JsonPropertyName("ISDB-T")]
+ ISDBT, [JsonPropertyName("ISDB-Tb")]
+ ISDBTb, [JsonPropertyName("ISDB-S")]
+ ISDBS, [JsonPropertyName("ISDB-C")]
+ ISDBC, [JsonPropertyName("1seg")]
+ Item1seg, DTMB, CCMB, [JsonPropertyName("T-DMB")]
+ TDMB, [JsonPropertyName("S-DMB")]
+ SDMB, IPTV, [JsonPropertyName("DVB-MT")]
+ DVBMT, [JsonPropertyName("DVB-MC")]
+ DVBMC, [JsonPropertyName("DVB-MS")]
+ DVBMS, ADR, SDR
+}
diff --git a/AaruMetadata/Barcode.cs b/AaruMetadata/Barcode.cs
new file mode 100644
index 0000000..cde1ad0
--- /dev/null
+++ b/AaruMetadata/Barcode.cs
@@ -0,0 +1,64 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Barcode.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public enum BarcodeType
+{
+ Aztec, Codabar, Code11,
+ Code128, Code39, Code93,
+ CPC_Binary, EZcode, FIM,
+ ITF, ITF14, EAN13,
+ EAN8, MaxiCode, ISBN,
+ ISRC, MSI, ShotCode,
+ RM4SCC, QR, EAN5,
+ EAN2, POSTNET, PostBar,
+ Plessey, Pharmacode, PDF417,
+ PatchCode
+}
+
+public class Barcode
+{
+ public BarcodeType Type { get; set; }
+ public string Value { get; set; }
+}
diff --git a/AaruMetadata/BlockMedia.cs b/AaruMetadata/BlockMedia.cs
new file mode 100644
index 0000000..4b31fe9
--- /dev/null
+++ b/AaruMetadata/BlockMedia.cs
@@ -0,0 +1,98 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : BlockMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class BlockMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public List ContentChecksums { get; set; }
+ public Sequence Sequence { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Serial { get; set; }
+ public string Firmware { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public uint PhysicalBlockSize { get; set; }
+ public uint LogicalBlockSize { get; set; }
+ public ulong LogicalBlocks { get; set; }
+ public List VariableBlockSize { get; set; }
+ public List TapeInformation { get; set; }
+ public Scans Scans { get; set; }
+ public ATA ATA { get; set; }
+ public Pci Pci { get; set; }
+ public Pcmcia Pcmcia { get; set; }
+ public SecureDigital SecureDigital { get; set; }
+ public MultiMediaCard MultiMediaCard { get; set; }
+ public SCSI SCSI { get; set; }
+ public Usb Usb { get; set; }
+ public Dump Mam { get; set; }
+ public ushort? Heads { get; set; }
+ public uint? Cylinders { get; set; }
+ public ulong? SectorsPerTrack { get; set; }
+ public List Track { get; set; }
+ public string CopyProtection { get; set; }
+ public DimensionsNew Dimensions { get; set; }
+ public List FileSystemInformation { get; set; }
+ public List DumpHardware { get; set; }
+ public string DiskType { get; set; }
+ public string DiskSubType { get; set; }
+ public string Interface { get; set; }
+}
+
+public class BlockTrack
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public ushort Head { get; set; }
+ public uint Cylinder { get; set; }
+ public ulong StartSector { get; set; }
+ public ulong EndSector { get; set; }
+ public ulong Sectors { get; set; }
+ public uint BytesPerSector { get; set; }
+ public List Checksums { get; set; }
+ public string Format { get; set; }
+}
diff --git a/AaruMetadata/Book.cs b/AaruMetadata/Book.cs
new file mode 100644
index 0000000..98006a7
--- /dev/null
+++ b/AaruMetadata/Book.cs
@@ -0,0 +1,59 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Book.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Book
+{
+ public List Barcodes { get; set; }
+ public Cover Cover { get; set; }
+ public string Name { get; set; }
+ public string Editorial { get; set; }
+ public string Author { get; set; }
+ public DateTime? PublicationDate { get; set; }
+ public List Languages { get; set; }
+ public uint? Pages { get; set; }
+ public string PageSize { get; set; }
+ public Scan Scan { get; set; }
+}
diff --git a/AaruMetadata/Checksum.cs b/AaruMetadata/Checksum.cs
new file mode 100644
index 0000000..3427416
--- /dev/null
+++ b/AaruMetadata/Checksum.cs
@@ -0,0 +1,63 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Checksum.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Checksum
+{
+ public ChecksumType Type { get; set; }
+ public string Value { get; set; }
+}
+
+public enum ChecksumType
+{
+ Fletcher16, Fletcher32, Adler32,
+ CRC16, CRC16Ccitt, CRC32,
+ CRC64, Md4, Md5,
+ Dm6, Ripemd128, Ripemd160,
+ Ripemed320, Sha1, Sha224,
+ Sha256, Sha384, Sha512,
+ Sha3, Skein, Snefru,
+ Blake256, Blake512, Tiger,
+ Whirlpool, SpamSum
+}
diff --git a/AaruMetadata/Contents.cs b/AaruMetadata/Contents.cs
new file mode 100644
index 0000000..15d99d5
--- /dev/null
+++ b/AaruMetadata/Contents.cs
@@ -0,0 +1,98 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Contents.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class FilesystemContents
+{
+ public List Files { get; set; }
+ public List Directories { get; set; }
+ public string Namespace { get; set; }
+}
+
+public class ContentsFile
+{
+ public List Checksums { get; set; }
+ public List ExtendedAttributes { get; set; }
+ public string Name { get; set; }
+ public DateTime? CreationTime { get; set; }
+ public DateTime? AccessTime { get; set; }
+ public DateTime? StatusChangeTime { get; set; }
+ public DateTime? BackupTime { get; set; }
+ public DateTime? LastWriteTime { get; set; }
+ public ulong Attributes { get; set; }
+ public uint? PosixMode { get; set; }
+ public ulong? DeviceNumber { get; set; }
+ public ulong? PosixGroupId { get; set; }
+ public ulong Inode { get; set; }
+ public ulong Links { get; set; }
+ public ulong? PosixUserId { get; set; }
+ public ulong Length { get; set; }
+}
+
+public class ExtendedAttribute
+{
+ public List Checksums { get; set; }
+ public string Name { get; set; }
+ public ulong Length { get; set; }
+}
+
+public class Directory
+{
+ public List Files { get; set; }
+ public List Directories { get; set; }
+ public string Name { get; set; }
+ public DateTime? CreationTime { get; set; }
+ public DateTime? AccessTime { get; set; }
+ public DateTime? StatusChangeTime { get; set; }
+ public DateTime? BackupTime { get; set; }
+ public DateTime? LastWriteTime { get; set; }
+ public ulong Attributes { get; set; }
+ public uint? PosixMode { get; set; }
+ public ulong? DeviceNumber { get; set; }
+ public ulong? PosixGroupId { get; set; }
+ public ulong? Inode { get; set; }
+ public ulong? Links { get; set; }
+ public ulong? PosixUserId { get; set; }
+}
diff --git a/AaruMetadata/Dimensions.cs b/AaruMetadata/Dimensions.cs
new file mode 100644
index 0000000..8b71cef
--- /dev/null
+++ b/AaruMetadata/Dimensions.cs
@@ -0,0 +1,52 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Dimensions.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class DimensionsNew
+{
+ public double? Diameter { get; set; }
+ public double? Height { get; set; }
+ public double? Width { get; set; }
+ public double Thickness { get; set; }
+}
diff --git a/AaruMetadata/Dump.cs b/AaruMetadata/Dump.cs
new file mode 100644
index 0000000..318d2e4
--- /dev/null
+++ b/AaruMetadata/Dump.cs
@@ -0,0 +1,78 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Dump.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Image
+{
+ public string Format { get; set; }
+ public ulong? Offset { get; set; }
+ public string Value { get; set; }
+}
+
+public class Dump
+{
+ public string Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+}
+
+public class Border
+{
+ public string Image { get; set; }
+ public ulong Size { get; set; }
+ public List Checksums { get; set; }
+ public uint? Session { get; set; }
+}
+
+public class File
+{
+ public string Format { get; set; }
+ public string Value { get; set; }
+}
+
+public class BlockSize
+{
+ public uint StartingBlock { get; set; }
+ public uint Value { get; set; }
+}
\ No newline at end of file
diff --git a/AaruMetadata/DumpHardware.cs b/AaruMetadata/DumpHardware.cs
new file mode 100644
index 0000000..85ef97f
--- /dev/null
+++ b/AaruMetadata/DumpHardware.cs
@@ -0,0 +1,68 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : DumpHardware.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class DumpHardware
+{
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Revision { get; set; }
+ public string Firmware { get; set; }
+ public string Serial { get; set; }
+ public List Extents { get; set; }
+ public Software Software { get; set; }
+}
+
+public class Extent
+{
+ public ulong Start { get; set; }
+ public ulong End { get; set; }
+}
+
+public class Software
+{
+ public string Name { get; set; }
+ public string Version { get; set; }
+ public string OperatingSystem { get; set; }
+}
diff --git a/AaruMetadata/FileSystem.cs b/AaruMetadata/FileSystem.cs
new file mode 100644
index 0000000..8c59c32
--- /dev/null
+++ b/AaruMetadata/FileSystem.cs
@@ -0,0 +1,68 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : FileSystem.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class FileSystem
+{
+ public string Type { get; set; }
+ public DateTime? CreationDate { get; set; }
+ public DateTime? ModificationDate { get; set; }
+ public DateTime? BackupDate { get; set; }
+ public uint ClusterSize { get; set; }
+ public ulong Clusters { get; set; }
+ public ulong? Files { get; set; }
+ public bool Bootable { get; set; }
+ public string VolumeSerial { get; set; }
+ public string VolumeName { get; set; }
+ public ulong? FreeClusters { get; set; }
+ public bool Dirty { get; set; }
+ public DateTime? ExpirationDate { get; set; }
+ public DateTime? EffectiveDate { get; set; }
+ public string SystemIdentifier { get; set; }
+ public string VolumeSetIdentifier { get; set; }
+ public string PublisherIdentifier { get; set; }
+ public string DataPreparerIdentifier { get; set; }
+ public string ApplicationIdentifier { get; set; }
+ public FilesystemContents Contents { get; set; }
+}
diff --git a/AaruMetadata/Language.cs b/AaruMetadata/Language.cs
new file mode 100644
index 0000000..0a75eee
--- /dev/null
+++ b/AaruMetadata/Language.cs
@@ -0,0 +1,213 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Language.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json.Serialization;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+[JsonConverter(typeof(JsonStringEnumMemberConverter)), SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum Language
+{
+ aar, abk, ace,
+ ach, ada, ady,
+ afa, afh, afr,
+ ain, aka, akk,
+ alb, ale, alg,
+ alt, amh, ang,
+ anp, apa, ara,
+ arc, arg, arm,
+ arn, arp, art,
+ arw, asm, ast,
+ ath, aus, ava,
+ ave, awa, aym,
+ aze, bad, bai,
+ bak, bal, bam,
+ ban, baq, bas,
+ bat, bej, bel,
+ bem, ben, ber,
+ bho, bih, bik,
+ bin, bis, bla,
+ bnt, bos, bra,
+ bre, btk, bua,
+ bug, bul, bur,
+ byn, cad, cai,
+ car, cat, cau,
+ ceb, cel, cha,
+ chb, che, chg,
+ chi, chk, chm,
+ chn, cho, chp,
+ chr, chu, chv,
+ chy, cmc, cop,
+ cor, cos, cpe,
+ cpf, cpp, cre,
+ crh, crp, csb,
+ cus, cze, dak,
+ dan, dar, day,
+ del, den, dgr,
+ din, div, doi,
+ dra, dsb, dua,
+ dum, dut, dyu,
+ dzo, efi, egy,
+ eka, elx, eng,
+ enm, epo, est,
+ ewe, ewo, fan,
+ fao, fat, fij,
+ fil, fin, fiu,
+ fon, fre, frm,
+ fro, frr, frs,
+ fry, ful, fur,
+ gaa, gay, gba,
+ gem, geo, ger,
+ gez, gil, gla,
+ gle, glg, glv,
+ gmh, goh, gon,
+ gor, got, grb,
+ grc, gre, grn,
+ gsw, guj, gwi,
+ hai, hat, hau,
+ haw, heb, her,
+ hil, him, hin,
+ hit, hmn, hmo,
+ hrv, hsb, hun,
+ hup, iba, ibo,
+ ice, ido, iii,
+ ijo, iku, ile,
+ ilo, ina, inc,
+ ind, ine, inh,
+ ipk, ira, iro,
+ ita, jav, jbo,
+ jpn, jpr, jrb,
+ kaa, kab, kac,
+ kal, kam, kan,
+ kar, kas, kau,
+ kaw, kaz, kbd,
+ kha, khi, khm,
+ kho, kik, kin,
+ kir, kmb, kok,
+ kom, kon, kor,
+ kos, kpe, krc,
+ krl, kro, kru,
+ kua, kum, kur,
+ kut, lad, lah,
+ lam, lao, lat,
+ lav, lez, lim,
+ lin, lit, lol,
+ loz, ltz, lua,
+ lub, lug, lui,
+ lun, luo, lus,
+ mac, mad, mag,
+ mah, mai, mak,
+ mal, man, mao,
+ map, mar, mas,
+ may, mdf, mdr,
+ men, mga, mic,
+ min, mis, mkh,
+ mlg, mlt, mnc,
+ mni, mno, moh,
+ mon, mos, mul,
+ mun, mus, mwl,
+ mwr, myn, myv,
+ nah, nai, nap,
+ nau, nav, nbl,
+ nde, ndo, nds,
+ nep, @new, nia,
+ nic, niu, nno,
+ nob, nog, non,
+ nor, nqo, nso,
+ nub, nwc, nya,
+ nym, nyn, nyo,
+ nzi, oci, oji,
+ ori, orm, osa,
+ oss, ota, oto,
+ paa, pag, pal,
+ pam, pan, pap,
+ pau, peo, per,
+ phi, phn, pli,
+ pol, pon, por,
+ pra, pro, pus,
+ [JsonPropertyName("qaa-qtz")]
+ qaaqtz, que, raj, rap,
+ rar, roa, roh,
+ rom, rum, run,
+ rup, rus, sad,
+ sag, sah, sai,
+ sal, sam, san,
+ sas, sat, scn,
+ sco, sel, sem,
+ sga, sgn, shn,
+ sid, sin, sio,
+ sit, sla, slo,
+ slv, sma, sme,
+ smi, smj, smn,
+ smo, sms, sna,
+ snd, snk, sog,
+ som, son, sot,
+ spa, srd, srn,
+ srp, srr, ssa,
+ ssw, suk, sun,
+ sus, sux, swa,
+ swe, syc, syr,
+ tah, tai, tam,
+ tat, tel, tem,
+ ter, tet, tgk,
+ tgl, tha, tib,
+ tig, tir, tiv,
+ tkl, tlh, tli,
+ tmh, tog, ton,
+ tpi, tsi, tsn,
+ tso, tuk, tum,
+ tup, tur, tut,
+ tvl, twi, tyv,
+ udm, uga, uig,
+ ukr, umb, und,
+ urd, uzb, vai,
+ ven, vie, vol,
+ vot, wak, wal,
+ war, was, wel,
+ wen, wln, wol,
+ xal, xho, yao,
+ yap, yid, yor,
+ ypk, zap, zbl,
+ zen, zgh, zha,
+ znd, zul, zun,
+ zxx, zza
+}
\ No newline at end of file
diff --git a/AaruMetadata/Layers.cs b/AaruMetadata/Layers.cs
new file mode 100644
index 0000000..fa4074d
--- /dev/null
+++ b/AaruMetadata/Layers.cs
@@ -0,0 +1,69 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Layers.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Layers
+{
+ public List Sectors { get; set; }
+ public LayerType? Type { get; set; }
+}
+
+[SuppressMessage("ReSharper", "InconsistentNaming")]
+public enum LayerType
+{
+ PTP, OTP
+}
+
+public class LayeredText
+{
+ public uint? Layer { get; set; }
+ public string Text { get; set; }
+}
+
+public class Sectors
+{
+ public uint? Layer { get; set; }
+ public ulong Value { get; set; }
+}
diff --git a/AaruMetadata/LinearMedia.cs b/AaruMetadata/LinearMedia.cs
new file mode 100644
index 0000000..66ff648
--- /dev/null
+++ b/AaruMetadata/LinearMedia.cs
@@ -0,0 +1,67 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : LinearMedia.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class LinearMedia
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public List ImageChecksums { get; set; }
+ public List Checksums { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public string Title { get; set; }
+ public uint? Sequence { get; set; }
+ public uint? ImageInterleave { get; set; }
+ public uint? Interleave { get; set; }
+ public string Manufacturer { get; set; }
+ public string Model { get; set; }
+ public string Package { get; set; }
+ public string Interface { get; set; }
+ public DimensionsNew Dimensions { get; set; }
+ public Scans Scans { get; set; }
+ public List DumpHardware { get; set; }
+ public Pcmcia Pcmcia { get; set; }
+ public string CopyProtection { get; set; }
+}
diff --git a/AaruMetadata/Magazine.cs b/AaruMetadata/Magazine.cs
new file mode 100644
index 0000000..d4924f0
--- /dev/null
+++ b/AaruMetadata/Magazine.cs
@@ -0,0 +1,59 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : Magazine.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class Magazine
+{
+ public List Barcodes { get; set; }
+ public Cover Cover { get; set; }
+ public string Name { get; set; }
+ public string Editorial { get; set; }
+ public DateTime? PublicationDate { get; set; }
+ public uint? Number { get; set; }
+ public List Languages { get; set; }
+ public uint? Pages { get; set; }
+ public string PageSize { get; set; }
+ public Scan Scan { get; set; }
+}
diff --git a/AaruMetadata/MultiMediaCard.cs b/AaruMetadata/MultiMediaCard.cs
new file mode 100644
index 0000000..59a08cf
--- /dev/null
+++ b/AaruMetadata/MultiMediaCard.cs
@@ -0,0 +1,52 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : MultiMediaCard.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class MultiMediaCard
+{
+ public Dump CID { get; set; }
+ public Dump CSD { get; set; }
+ public Dump ExtendedCSD { get; set; }
+ public Dump OCR { get; set; }
+}
diff --git a/AaruMetadata/OpticalDisc.cs b/AaruMetadata/OpticalDisc.cs
new file mode 100644
index 0000000..70a4b6d
--- /dev/null
+++ b/AaruMetadata/OpticalDisc.cs
@@ -0,0 +1,150 @@
+// /***************************************************************************
+// Aaru Data Preservation Suite
+// ----------------------------------------------------------------------------
+//
+// Filename : OpticalDisc.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Metadata.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines format for metadata.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2023 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+
+// ReSharper disable UnusedMember.Global
+// ReSharper disable ClassNeverInstantiated.Global
+
+namespace Aaru.CommonTypes.AaruMetadata;
+
+public class OpticalDisc
+{
+ public Image Image { get; set; }
+ public ulong Size { get; set; }
+ public Sequence Sequence { get; set; }
+ public Layers Layers { get; set; }
+ public List Checksums { get; set; }
+ public string PartNumber { get; set; }
+ public string SerialNumber { get; set; }
+ public List RingCode { get; set; }
+ public List MasteringSid { get; set; }
+ public List Toolstamp { get; set; }
+ public List MouldSid { get; set; }
+ public List MouldText { get; set; }
+ public string DiscType { get; set; }
+ public string DiscSubType { get; set; }
+ public int? Offset { get; set; }
+ public uint[] Tracks { get; set; }
+ public uint Sessions { get; set; }
+ public string CopyProtection { get; set; }
+ public DimensionsNew Dimensions { get; set; }
+ public Case Case { get; set; }
+ public Scans Scans { get; set; }
+ public Dump Pfi { get; set; }
+ public Dump Dmi { get; set; }
+ public Dump Cmi { get; set; }
+ public Dump Bca { get; set; }
+ public Dump Atip { get; set; }
+ public Dump Adip { get; set; }
+ public Dump Pma { get; set; }
+ public Dump Dds { get; set; }
+ public Dump Sai { get; set; }
+ public Dump LastRmd { get; set; }
+ public Dump Pri { get; set; }
+ public Dump MediaID { get; set; }
+ public Dump Pfir { get; set; }
+ public Dump Dcb { get; set; }
+ public Dump Di { get; set; }
+ public Dump Pac { get; set; }
+ public Dump Toc { get; set; }
+ public Dump LeadInCdText { get; set; }
+ public List FirstTrackPregrap { get; set; }
+ public List LeadIn { get; set; }
+ public List LeadOut { get; set; }
+ public Xbox Xbox { get; set; }
+ public Ps3Encryption Ps3Encryption { get; set; }
+ public string MediaCatalogueNumber { get; set; }
+ public List