* option to purge records from local DB

* metadata editing window size is now saved in settings
* old musicbrainz library removed, musicbrainz metadata now only comes from CTDB
* confirmation dialog before submitting to CTDB
This commit is contained in:
chudov
2011-06-13 20:25:13 +00:00
parent 6982996ab9
commit e3b05e3e7f
28 changed files with 1883 additions and 1679 deletions

View File

@@ -156,10 +156,6 @@
<Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project> <Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project>
<Name>Freedb</Name> <Name>Freedb</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
<ProjectReference Include="..\ProgressODoom\ProgressODoom.csproj"> <ProjectReference Include="..\ProgressODoom\ProgressODoom.csproj">
<Project>{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}</Project> <Project>{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}</Project>
<Name>ProgressODoom</Name> <Name>ProgressODoom</Name>

View File

@@ -1315,16 +1315,21 @@ namespace CUETools.AccurateRip
break; break;
} }
if (extra == "") if (extra == "")
{
int oiMin = _arOffsetRange;
int oiMax = -_arOffsetRange;
for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++) for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++)
if (CRCLOG(iTrack) == CRCWONULL(iTrack, oi)) if (CRCLOG(iTrack) == CRCWONULL(iTrack, oi))
{ {
inLog = " W/O NULL "; oiMin = Math.Min(oiMin, oi);
if (extra == "") oiMax = Math.Max(oiMax, oi);
extra = string.Format(": offset {0}", oi); }
else if (oiMax >= oiMin)
{ {
extra = string.Format(": with offset"); inLog = " W/O NULL ";
break; extra = oiMax == oiMin
? string.Format(": offset {0}", oiMin)
: string.Format(": offset {0}..{1}", oiMin, oiMax);
} }
} }
} }

View File

@@ -30,7 +30,9 @@ namespace AudioDataPlugIn
bool m_test_mode = false; bool m_test_mode = false;
IMetadataLookup m_data = null; IMetadataLookup m_data = null;
CDImageLayout TOC; CDImageLayout TOC;
#if USEAR
string ArId; string ArId;
#endif
AccurateRipVerify ar; AccurateRipVerify ar;
AccurateRipVerify arTest; AccurateRipVerify arTest;
CUEToolsDB ctdb; CUEToolsDB ctdb;
@@ -113,11 +115,11 @@ namespace AudioDataPlugIn
m_data.GetTrackPreemphasis(i))); m_data.GetTrackPreemphasis(i)));
} }
TOC[1][0].Start = 0U; TOC[1][0].Start = 0U;
ArId = AccurateRipVerify.CalculateAccurateRipId(TOC);
ar = new AccurateRipVerify(TOC, null); ar = new AccurateRipVerify(TOC, null);
arTest = new AccurateRipVerify(TOC, null); arTest = new AccurateRipVerify(TOC, null);
ctdb = new CUEToolsDB(TOC, null); ctdb = new CUEToolsDB(TOC, null);
#if USEAR #if USEAR
ArId = AccurateRipVerify.CalculateAccurateRipId(TOC);
ar.ContactAccurateRip(ArId); ar.ContactAccurateRip(ArId);
#endif #endif
var form = new FormSubmitParity(ctdb, "EAC" + m_data.HostVersion + " CTDB 2.1.2", m_drivename); var form = new FormSubmitParity(ctdb, "EAC" + m_data.HostVersion + " CTDB 2.1.2", m_drivename);

View File

@@ -18,7 +18,7 @@ namespace CUETools.CTDB
{ {
public class CUEToolsDB public class CUEToolsDB
{ {
const string defaultServer = "http://db.cuetools.net"; const string defaultServer = "db.cuetools.net";
string urlbase; string urlbase;
string userAgent; string userAgent;
string driveName; string driveName;
@@ -73,6 +73,7 @@ namespace CUETools.CTDB
req.UserAgent = this.userAgent; req.UserAgent = this.userAgent;
req.Timeout = connectTimeout; req.Timeout = connectTimeout;
req.ReadWriteTimeout = socketTimeout; req.ReadWriteTimeout = socketTimeout;
req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
if (uploadHelper.onProgress != null) if (uploadHelper.onProgress != null)
uploadHelper.onProgress(this, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, 0)); uploadHelper.onProgress(this, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, 0));

View File

@@ -220,29 +220,6 @@ namespace CUETools.Processor
} }
} }
public void FillFromMusicBrainz(MusicBrainz.Release release, int firstAudio)
{
var evs = release.GetEvents();
if (evs.Count > 0)
{
var ev = evs[0];
ReleaseDate = ev.Date ?? "";
Year = (ev.Date ?? "").Substring(0, 4);
Barcode = ev.Barcode ?? "";
Country = ev.Country;
Label = ((ev.Label == null ? null : ev.Label.GetName()) ?? "") + (ev.Label == null ? "" : " ") + (ev.CatalogNumber ?? "");
}
Artist = release.GetArtist();
Title = release.GetTitle();
// How to get Genre: http://mm.musicbrainz.org/ws/1/release/6fe1e218-2aee-49ac-94f0-7910ba2151df.html?type=xml&inc=tags
for (int i = 0; i < Tracks.Count; i++)
{
MusicBrainz.Track track = release.GetTracks()[i + firstAudio]; // !!!!!! - _toc.FirstAudio?
Tracks[i].Title = track.GetTitle();
Tracks[i].Artist = track.GetArtist();
}
}
public void FillFromFreedb(Freedb.CDEntry cdEntry, int firstAudio) public void FillFromFreedb(Freedb.CDEntry cdEntry, int firstAudio)
{ {
Year = cdEntry.Year; Year = cdEntry.Year;

View File

@@ -109,10 +109,6 @@
<Project>{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}</Project> <Project>{8A0426FA-0BC2-4C49-A6E5-1F9A68156F19}</Project>
<Name>CUETools.Codecs.LossyWAV</Name> <Name>CUETools.Codecs.LossyWAV</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5"> <BootstrapperPackage Include="Microsoft.Net.Client.3.5">

View File

@@ -47,7 +47,6 @@ using CUETools.AccurateRip;
using CUETools.CTDB; using CUETools.CTDB;
using CUETools.Ripper; using CUETools.Ripper;
using CUETools.Compression; using CUETools.Compression;
using MusicBrainz;
using Freedb; using Freedb;
using CSScriptLibrary; using CSScriptLibrary;
@@ -1146,6 +1145,8 @@ namespace CUETools.Processor
public bool CreateTOC { get; set; } public bool CreateTOC { get; set; }
[DefaultValue(true), Category("CTDB"), DisplayName("Submit to CTDB")] [DefaultValue(true), Category("CTDB"), DisplayName("Submit to CTDB")]
public bool CTDBSubmit { get; set; } public bool CTDBSubmit { get; set; }
[DefaultValue(true), Category("CTDB"), DisplayName("Ask before submitting")]
public bool CTDBAsk { get; set; }
[DefaultValue("db.cuetools.net"), Category("CTDB"), DisplayName("CTDB Server")] [DefaultValue("db.cuetools.net"), Category("CTDB"), DisplayName("CTDB Server")]
public string CTDBServer { get; set; } public string CTDBServer { get; set; }
@@ -1238,7 +1239,7 @@ namespace CUETools.Processor
writeArTagsOnEncode = true; writeArTagsOnEncode = true;
writeArLogOnConvert = true; writeArLogOnConvert = true;
writeArTagsOnVerify = false; writeArTagsOnVerify = false;
writeArLogOnVerify = true; writeArLogOnVerify = false;
autoCorrectFilenames = true; autoCorrectFilenames = true;
preserveHTOA = true; preserveHTOA = true;
@@ -1547,7 +1548,7 @@ return processor.Go();
writeArTagsOnEncode = sr.LoadBoolean("ArWriteCRC") ?? true; writeArTagsOnEncode = sr.LoadBoolean("ArWriteCRC") ?? true;
writeArLogOnConvert = sr.LoadBoolean("ArWriteLog") ?? true; writeArLogOnConvert = sr.LoadBoolean("ArWriteLog") ?? true;
writeArTagsOnVerify = sr.LoadBoolean("ArWriteTagsOnVerify") ?? false; writeArTagsOnVerify = sr.LoadBoolean("ArWriteTagsOnVerify") ?? false;
writeArLogOnVerify = sr.LoadBoolean("ArWriteLogOnVerify") ?? true; writeArLogOnVerify = sr.LoadBoolean("ArWriteLogOnVerify") ?? false;
preserveHTOA = sr.LoadBoolean("PreserveHTOA") ?? true; preserveHTOA = sr.LoadBoolean("PreserveHTOA") ?? true;
autoCorrectFilenames = sr.LoadBoolean("AutoCorrectFilenames") ?? true; autoCorrectFilenames = sr.LoadBoolean("AutoCorrectFilenames") ?? true;
@@ -1860,7 +1861,7 @@ return processor.Go();
public CUEAction _action = CUEAction.Encode; public CUEAction _action = CUEAction.Encode;
public CUEStyle _CUEStyle = CUEStyle.SingleFileWithCUE; public CUEStyle _CUEStyle = CUEStyle.SingleFileWithCUE;
public int _writeOffset = 0; public int _writeOffset = 0;
public bool _useFreeDb = true, _useMusicBrainz = true, _useAccurateRip = true, _useCUEToolsDB = true, _useLocalDB = true, _skipRecent = true; public bool _useFreeDb = true, _useMusicBrainz = true, _useAccurateRip = true, _useCUEToolsDB = true, _useLocalDB = true, _skipRecent = false;
public string _name; public string _name;
} }
@@ -2206,11 +2207,9 @@ return processor.Go();
_localDB.Save(); _localDB.Save();
} }
public List<object> LookupAlbumInfo(bool useFreedb, bool useMusicBrainz, bool useCTDB, bool useCache, bool useCUE) public List<object> LookupAlbumInfo(bool useFreedb, bool useCTDB, bool useCache, bool useCUE)
{ {
List<object> Releases = new List<object>(); List<object> Releases = new List<object>();
StringCollection DiscIds = new StringCollection();
DiscIds.Add(_toc.MusicBrainzId);
CUEMetadata dbmeta = null; CUEMetadata dbmeta = null;
@@ -2304,8 +2303,6 @@ return processor.Go();
CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks);
metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1); metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1);
CDImageLayout toc = TocFromCDEntry(cdEntry); CDImageLayout toc = TocFromCDEntry(cdEntry);
if (!DiscIds.Contains(toc.MusicBrainzId))
DiscIds.Add(toc.MusicBrainzId);
Releases.Add(new CUEMetadataEntry(metadata, toc, "freedb")); Releases.Add(new CUEMetadataEntry(metadata, toc, "freedb"));
} }
} }
@@ -2324,8 +2321,6 @@ return processor.Go();
CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks);
metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1); metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1);
CDImageLayout toc = TocFromCDEntry(cdEntry); CDImageLayout toc = TocFromCDEntry(cdEntry);
if (!DiscIds.Contains(toc.MusicBrainzId))
DiscIds.Add(toc.MusicBrainzId);
Releases.Add(new CUEMetadataEntry(metadata, toc,"freedb")); Releases.Add(new CUEMetadataEntry(metadata, toc,"freedb"));
} }
} }
@@ -2338,58 +2333,6 @@ return processor.Go();
} }
} }
if (useMusicBrainz && !ctdbFound)
{
ShowProgress("Looking up album via MusicBrainz...", 0.0, null, null);
//if (_tocFromLog != null && !DiscIds.Contains(_tocFromLog.MusicBrainzId))
// DiscIds.Add(_tocFromLog.MusicBrainzId);
MusicBrainzService.XmlRequest += new EventHandler<XmlRequestEventArgs>(MusicBrainz_LookupProgress);
MusicBrainzService.Proxy = proxy;
foreach (string DiscId in DiscIds)
{
ReleaseQueryParameters p = new ReleaseQueryParameters();
p.DiscId = DiscId;
Query<Release> results = Release.Query(p);
try
{
foreach (MusicBrainz.Release release in results)
{
release.GetEvents();
release.GetTracks();
try
{
foreach (MusicBrainz.Track track in release.GetTracks())
;
}
catch { }
try
{
foreach (MusicBrainz.Event ev in release.GetEvents())
;
}
catch { }
CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks);
metadata.FillFromMusicBrainz(release, TOC.FirstAudio - 1);
Releases.Add(new CUEMetadataEntry(metadata, TOC, "musicbrainz"));
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
}
}
MusicBrainzService.Proxy = null;
MusicBrainzService.XmlRequest -= new EventHandler<XmlRequestEventArgs>(MusicBrainz_LookupProgress);
//if (release != null)
//{
// FillFromMusicBrainz(release);
// return;
//}
//if (cdEntry != null)
// FillFromFreedb(cdEntry);
}
ShowProgress("", 0, null, null); ShowProgress("", 0, null, null);
return Releases; return Releases;
} }
@@ -3400,18 +3343,6 @@ return processor.Go();
// this.CUEToolsProgress(this, _progress); // this.CUEToolsProgress(this, _progress);
//} //}
private void MusicBrainz_LookupProgress(object sender, XmlRequestEventArgs e)
{
if (this.CUEToolsProgress == null)
return;
_progress.percent = (1.0 + _progress.percent) / 2;
_progress.offset = 0;
_progress.input = e.Uri.ToString();
_progress.output = null;
_progress.status = "Looking up album via MusicBrainz";
this.CUEToolsProgress(this, _progress);
}
private void unzip_ExtractionProgress(object sender, CompressionExtractionProgressEventArgs e) private void unzip_ExtractionProgress(object sender, CompressionExtractionProgressEventArgs e)
{ {
CheckStop(); CheckStop();

View File

@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion> <ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{9253A314-1821-42BF-B02F-2BF986B1765D}</ProjectGuid> <ProjectGuid>{9253A314-1821-42BF-B02F-2BF986B1765D}</ProjectGuid>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
@@ -54,6 +54,10 @@
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project> <Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
<Name>CUETools.CDImage</Name> <Name>CUETools.CDImage</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
<Name>CUETools.CTDB</Name>
</ProjectReference>
<ProjectReference Include="..\CUETools.Ripper.SCSI\CUETools.Ripper.SCSI.csproj"> <ProjectReference Include="..\CUETools.Ripper.SCSI\CUETools.Ripper.SCSI.csproj">
<Project>{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}</Project> <Project>{8CF07381-BEA2-4AFC-B3DD-9B2F21C65A3A}</Project>
<Name>CUETools.Ripper.SCSI</Name> <Name>CUETools.Ripper.SCSI</Name>
@@ -63,10 +67,6 @@
<Project>{D2700165-3E77-4B28-928D-551F5FC11954}</Project> <Project>{D2700165-3E77-4B28-928D-551F5FC11954}</Project>
<Name>CUETools.Ripper</Name> <Name>CUETools.Ripper</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -29,7 +29,7 @@ using CUETools.Ripper.SCSI;
using CUETools.Codecs; using CUETools.Codecs;
using CUETools.CDImage; using CUETools.CDImage;
using CUETools.AccurateRip; using CUETools.AccurateRip;
using MusicBrainz; using CUETools.CTDB;
namespace CUETools.ConsoleRipper namespace CUETools.ConsoleRipper
{ {
@@ -178,24 +178,19 @@ namespace CUETools.ConsoleRipper
AudioBuffer buff = new AudioBuffer(audioSource, 0x10000); AudioBuffer buff = new AudioBuffer(audioSource, 0x10000);
string CDDBId = AccurateRipVerify.CalculateCDDBId(audioSource.TOC); string CDDBId = AccurateRipVerify.CalculateCDDBId(audioSource.TOC);
string ArId = AccurateRipVerify.CalculateAccurateRipId(audioSource.TOC); string ArId = AccurateRipVerify.CalculateAccurateRipId(audioSource.TOC);
Release release; var ctdb = new CUEToolsDB(audioSource.TOC, null);
ReleaseQueryParameters p = new ReleaseQueryParameters(); ctdb.Init(arVerify);
p.DiscId = audioSource.TOC.MusicBrainzId; ctdb.ContactDB(null, "CUETools.ConsoleRipper 2.1.2", audioSource.ARName, true, false);
Query<Release> results = Release.Query(p);
arVerify.ContactAccurateRip(ArId); arVerify.ContactAccurateRip(ArId);
CTDBResponseMeta meta = null;
try foreach (var imeta in ctdb.Metadata)
{ {
release = results.First(); meta = imeta;
} break;
catch
{
release = null;
} }
//string destFile = (release == null) ? "cdimage.flac" : release.GetArtist() + " - " + release.GetTitle() + ".flac"; //string destFile = (release == null) ? "cdimage.flac" : release.GetArtist() + " - " + release.GetTitle() + ".flac";
string destFile = (release == null) ? "cdimage.wav" : release.GetArtist() + " - " + release.GetTitle() + ".wav"; string destFile = (meta == null) ? "cdimage.wav" : meta.artist + " - " + meta.album + ".wav";
Console.WriteLine("Drive : {0}", audioSource.Path); Console.WriteLine("Drive : {0}", audioSource.Path);
Console.WriteLine("Read offset : {0}", audioSource.DriveOffset); Console.WriteLine("Read offset : {0}", audioSource.DriveOffset);
@@ -204,7 +199,7 @@ namespace CUETools.ConsoleRipper
Console.WriteLine("Filename : {0}", destFile); Console.WriteLine("Filename : {0}", destFile);
Console.WriteLine("Disk length : {0}", CDImageLayout.TimeToString(audioSource.TOC.AudioLength)); Console.WriteLine("Disk length : {0}", CDImageLayout.TimeToString(audioSource.TOC.AudioLength));
Console.WriteLine("AccurateRip : {0}", arVerify.ARStatus == null ? "ok" : arVerify.ARStatus); Console.WriteLine("AccurateRip : {0}", arVerify.ARStatus == null ? "ok" : arVerify.ARStatus);
Console.WriteLine("MusicBrainz : {0}", release == null ? "not found" : release.GetArtist() + " - " + release.GetTitle()); Console.WriteLine("MusicBrainz : {0}", meta == null ? "not found" : meta.artist + " - " + meta.album);
ProgressMeter meter = new ProgressMeter(); ProgressMeter meter = new ProgressMeter();
audioSource.ReadProgress += new EventHandler<ReadProgressArgs>(meter.ReadProgress); audioSource.ReadProgress += new EventHandler<ReadProgressArgs>(meter.ReadProgress);
@@ -215,24 +210,24 @@ namespace CUETools.ConsoleRipper
cueWriter.WriteLine("REM DISCID {0}", CDDBId); cueWriter.WriteLine("REM DISCID {0}", CDDBId);
cueWriter.WriteLine("REM ACCURATERIPID {0}", ArId); cueWriter.WriteLine("REM ACCURATERIPID {0}", ArId);
cueWriter.WriteLine("REM COMMENT \"{0}\"", audioSource.RipperVersion); cueWriter.WriteLine("REM COMMENT \"{0}\"", audioSource.RipperVersion);
if (release != null && release.GetEvents().Count > 0) if (meta != null && meta.year != "")
cueWriter.WriteLine("REM DATE {0}", release.GetEvents()[0].Date.Substring(0, 4)); cueWriter.WriteLine("REM DATE {0}", meta.year);
if (audioSource.TOC.Barcode != null) if (audioSource.TOC.Barcode != null)
cueWriter.WriteLine("CATALOG {0}", audioSource.TOC.Barcode); cueWriter.WriteLine("CATALOG {0}", audioSource.TOC.Barcode);
if (release != null) if (meta != null)
{ {
cueWriter.WriteLine("PERFORMER \"{0}\"", release.GetArtist()); cueWriter.WriteLine("PERFORMER \"{0}\"", meta.artist);
cueWriter.WriteLine("TITLE \"{0}\"", release.GetTitle()); cueWriter.WriteLine("TITLE \"{0}\"", meta.album);
} }
cueWriter.WriteLine("FILE \"{0}\" WAVE", destFile); cueWriter.WriteLine("FILE \"{0}\" WAVE", destFile);
for (int track = 1; track <= audioSource.TOC.TrackCount; track++) for (int track = 1; track <= audioSource.TOC.TrackCount; track++)
if (audioSource.TOC[track].IsAudio) if (audioSource.TOC[track].IsAudio)
{ {
cueWriter.WriteLine(" TRACK {0:00} AUDIO", audioSource.TOC[track].Number); cueWriter.WriteLine(" TRACK {0:00} AUDIO", audioSource.TOC[track].Number);
if (release != null && release.GetTracks().Count >= audioSource.TOC[track].Number) if (meta != null && meta.track.Length >= audioSource.TOC[track].Number)
{ {
cueWriter.WriteLine(" TITLE \"{0}\"", release.GetTracks()[(int)audioSource.TOC[track].Number - 1].GetTitle()); cueWriter.WriteLine(" TITLE \"{0}\"", meta.track[(int)audioSource.TOC[track].Number - 1].name);
cueWriter.WriteLine(" PERFORMER \"{0}\"", release.GetTracks()[(int)audioSource.TOC[track].Number - 1].GetArtist()); cueWriter.WriteLine(" PERFORMER \"{0}\"", meta.track[(int)audioSource.TOC[track].Number - 1].artist);
} }
if (audioSource.TOC[track].ISRC != null) if (audioSource.TOC[track].ISRC != null)
cueWriter.WriteLine(" ISRC {0}", audioSource.TOC[track].ISRC); cueWriter.WriteLine(" ISRC {0}", audioSource.TOC[track].ISRC);

View File

@@ -105,10 +105,6 @@
<Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project> <Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project>
<Name>Freedb</Name> <Name>Freedb</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project> </Project>

View File

@@ -89,10 +89,6 @@
<Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project> <Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project>
<Name>Freedb</Name> <Name>Freedb</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project> </Project>

View File

@@ -78,6 +78,12 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="frmSubmit.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSubmit.Designer.cs">
<DependentUpon>frmSubmit.cs</DependentUpon>
</Compile>
<Compile Include="frmAbout.cs"> <Compile Include="frmAbout.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -195,6 +201,15 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<DependentUpon>frmSettings.cs</DependentUpon> <DependentUpon>frmSettings.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="frmSubmit.de-DE.resx">
<DependentUpon>frmSubmit.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSubmit.resx">
<DependentUpon>frmSubmit.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSubmit.ru-RU.resx">
<DependentUpon>frmSubmit.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -250,10 +265,6 @@
<Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project> <Project>{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}</Project>
<Name>Freedb</Name> <Name>Freedb</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\MusicBrainz\MusicBrainz.csproj">
<Project>{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}</Project>
<Name>MusicBrainz</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="Resources\freedb.gif" /> <None Include="Resources\freedb.gif" />

View File

@@ -101,8 +101,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.CDImage", "..\CUET
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.AccurateRip", "..\CUETools.AccurateRip\CUETools.AccurateRip.csproj", "{5802C7E9-157E-4124-946D-70B5AE48A5A1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUETools.AccurateRip", "..\CUETools.AccurateRip\CUETools.AccurateRip.csproj", "{5802C7E9-157E-4124-946D-70B5AE48A5A1}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MusicBrainz", "..\MusicBrainz\MusicBrainz.csproj", "{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUERipper", "..\CUERipper\CUERipper.csproj", "{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUERipper", "..\CUERipper\CUERipper.csproj", "{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freedb", "..\Freedb\Freedb.csproj", "{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Freedb", "..\Freedb\Freedb.csproj", "{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}"
@@ -525,21 +523,6 @@ Global
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Win32.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|Win32.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x64.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x64.ActiveCfg = Release|Any CPU
{5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x86.ActiveCfg = Release|Any CPU {5802C7E9-157E-4124-946D-70B5AE48A5A1}.Release|x86.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|Win32.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x64.Build.0 = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Debug|x86.ActiveCfg = Debug|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Any CPU.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|Win32.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x64.ActiveCfg = Release|Any CPU
{74C2036B-2C9B-4FC8-B7BD-AE81A8DCE533}.Release|x86.ActiveCfg = Release|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.Build.0 = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {39B43BBB-BAFC-4D85-9BEA-3BCB7EFED89C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU

View File

@@ -33,6 +33,7 @@ namespace JDP
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.linkLabel2 = new System.Windows.Forms.LinkLabel(); this.linkLabel2 = new System.Windows.Forms.LinkLabel();
this.linkLabel3 = new System.Windows.Forms.LinkLabel();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkLabel1 // linkLabel1
@@ -41,6 +42,7 @@ namespace JDP
this.linkLabel1.Name = "linkLabel1"; this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true; this.linkLabel1.TabStop = true;
this.linkLabel1.UseCompatibleTextRendering = true; this.linkLabel1.UseCompatibleTextRendering = true;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
// //
// textBox1 // textBox1
// //
@@ -63,12 +65,20 @@ namespace JDP
this.linkLabel2.Name = "linkLabel2"; this.linkLabel2.Name = "linkLabel2";
this.linkLabel2.TabStop = true; this.linkLabel2.TabStop = true;
this.linkLabel2.UseCompatibleTextRendering = true; this.linkLabel2.UseCompatibleTextRendering = true;
this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// linkLabel3
//
resources.ApplyResources(this.linkLabel3, "linkLabel3");
this.linkLabel3.Name = "linkLabel3";
this.linkLabel3.UseCompatibleTextRendering = true;
// //
// frmAbout // frmAbout
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.button1; this.CancelButton = this.button1;
this.Controls.Add(this.linkLabel3);
this.Controls.Add(this.linkLabel2); this.Controls.Add(this.linkLabel2);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
@@ -91,5 +101,6 @@ namespace JDP
private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
private System.Windows.Forms.LinkLabel linkLabel2; private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.LinkLabel linkLabel3;
} }
} }

View File

@@ -14,5 +14,10 @@ namespace JDP
{ {
InitializeComponent(); InitializeComponent();
} }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start((sender as LinkLabel).Text.Substring(e.Link.Start, e.Link.Length));
}
} }
} }

View File

@@ -118,8 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="textBox1.Text" xml:space="preserve"> <data name="textBox1.Text" xml:space="preserve">
<value>AccurateRip, Monkey's Audio, Apple Lossless, RAR-Archive, Tag- <value>
und HDCD-Unterstützung (c) Gregory S. Chudov, gchudov@gmail.com.
Dank geht an Christopher Key und Whitehobbit für Einsicht in AccurateRip- Dank geht an Christopher Key und Whitehobbit für Einsicht in AccurateRip-
Funktionen und Mr Spoon für die Genehmigung, die Datenbank zu nutzen. Funktionen und Mr Spoon für die Genehmigung, die Datenbank zu nutzen.
@@ -134,14 +133,14 @@ hdcd.dll (c) Christopher Key</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms"> <data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>26, 28</value> <value>26, 23</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>286, 17</value> <value>253, 17</value>
</data> </data>
<data name="linkLabel2.Text" xml:space="preserve"> <data name="linkLabel2.Text" xml:space="preserve">
<value>Unterstützung gibt es auf http://www.hydrogenaudio.org.</value> <value>Unterstützung gibt es auf http://www.cuetools.net.</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Über CUETools</value> <value>Über CUETools</value>

View File

@@ -127,7 +127,7 @@
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 10</value> <value>87, 34</value>
</data> </data>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 17</value> <value>265, 17</value>
@@ -151,23 +151,22 @@
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing"> <data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value> <value>12, 61</value>
</data> </data>
<data name="textBox1.Multiline" type="System.Boolean, mscorlib"> <data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 151</value> <value>415, 131</value>
</data> </data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib"> <data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
</data> </data>
<data name="textBox1.Text" xml:space="preserve"> <data name="textBox1.Text" xml:space="preserve">
<value>AccurateRip, Monkey's Audio, Apple Lossless, RAR archives, tags <value>
and HDCD support (c) Gregory S. Chudov, gchudov@gmail.com.
Thanks go out to Christopher Key and Whitehobbit for insight on AccurateRip Thanks go out to Christopher Key and Whitehobbit for insight on AccurateRip
functionality, and to Mr Spoon for permission to use the database. functionality, and to Mr Spoon for permission to use the database.
@@ -190,7 +189,7 @@ hdcd.dll (c) Christopher Key</value>
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing"> <data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>180, 228</value> <value>180, 228</value>
@@ -214,7 +213,7 @@ hdcd.dll (c) Christopher Key</value>
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="linkLabel2.AutoSize" type="System.Boolean, mscorlib"> <data name="linkLabel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@@ -223,19 +222,19 @@ hdcd.dll (c) Christopher Key</value>
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms"> <data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>36, 28</value> <value>24, 23</value>
</data> </data>
<data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>46, 195</value> <value>96, 195</value>
</data> </data>
<data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value> <value>247, 17</value>
</data> </data>
<data name="linkLabel2.TabIndex" type="System.Int32, mscorlib"> <data name="linkLabel2.TabIndex" type="System.Int32, mscorlib">
<value>5</value> <value>5</value>
</data> </data>
<data name="linkLabel2.Text" xml:space="preserve"> <data name="linkLabel2.Text" xml:space="preserve">
<value>Updates and support can be found at http://www.hydrogenaudio.org.</value> <value>Updates can be found at http://www.cuetools.net</value>
</data> </data>
<data name="linkLabel2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="linkLabel2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value> <value>MiddleCenter</value>
@@ -250,6 +249,42 @@ hdcd.dll (c) Christopher Key</value>
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;linkLabel2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkLabel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="linkLabel3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkLabel3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="linkLabel3.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>0, 0</value>
</data>
<data name="linkLabel3.Location" type="System.Drawing.Point, System.Drawing">
<value>58, 9</value>
</data>
<data name="linkLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>322, 17</value>
</data>
<data name="linkLabel3.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="linkLabel3.Text" xml:space="preserve">
<value>Copyright 2008-2011 Gregory S. Chudov, gchudov@gmail.com</value>
</data>
<data name="linkLabel3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;linkLabel3.Name" xml:space="preserve">
<value>linkLabel3</value>
</data>
<data name="&gt;&gt;linkLabel3.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabel3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;linkLabel3.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

View File

@@ -119,11 +119,10 @@
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 214</value> <value>415, 194</value>
</data> </data>
<data name="textBox1.Text" xml:space="preserve"> <data name="textBox1.Text" xml:space="preserve">
<value>Поддержка AccurateRip, Monkey's Audio, Apple Lossless, RAR архивов, <value>
тэгов и HDCD добавлена в 2008 году Григорием Чудовым, gchudov@gmail.com.
Спасибо Christopher Key и Whitehobbit за их исследования принципов работы Спасибо Christopher Key и Whitehobbit за их исследования принципов работы
AccurateRip, и Mr Spoon за разрешение пользоваться базой данных. AccurateRip, и Mr Spoon за разрешение пользоваться базой данных.
@@ -141,16 +140,25 @@ hdcd.dll (c) Christopher Key
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms"> <data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>39, 28</value> <value>27, 23</value>
</data> </data>
<data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 226</value> <value>74, 226</value>
</data> </data>
<data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>394, 17</value> <value>291, 17</value>
</data> </data>
<data name="linkLabel2.Text" xml:space="preserve"> <data name="linkLabel2.Text" xml:space="preserve">
<value>Обновления и поддержку ищите на форуме http://www.hydrogenaudio.org.</value> <value>Официальный сайт программы http://www.cuetools.net</value>
</data>
<data name="linkLabel3.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 9</value>
</data>
<data name="linkLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>309, 17</value>
</data>
<data name="linkLabel3.Text" xml:space="preserve">
<value>Copyright 2008-2011 Григорий Чудов, gchudov@gmail.com</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>439, 296</value> <value>439, 296</value>

View File

@@ -419,6 +419,8 @@ namespace JDP {
bool _usePregapForFirstTrackInSingleFile; bool _usePregapForFirstTrackInSingleFile;
bool _reducePriority; bool _reducePriority;
string _defaultLosslessFormat, _defaultLossyFormat, _defaultHybridFormat, _defaultNoAudioFormat; string _defaultLosslessFormat, _defaultLossyFormat, _defaultHybridFormat, _defaultNoAudioFormat;
int _choiceWidth, _choiceHeight;
bool _choiceMaxed;
Thread _workThread; Thread _workThread;
CUESheet _workClass; CUESheet _workClass;
CUEToolsProfile _profile, _defaultProfile; CUEToolsProfile _profile, _defaultProfile;
@@ -530,9 +532,19 @@ namespace JDP {
this.Invoke((MethodInvoker)delegate() this.Invoke((MethodInvoker)delegate()
{ {
frmChoice dlg = new frmChoice(); frmChoice dlg = new frmChoice();
if (_choiceWidth != 0 && _choiceHeight != 0)
dlg.Size = new Size(_choiceWidth, _choiceHeight);
if (_choiceMaxed)
dlg.WindowState = FormWindowState.Maximized;
dlg.Choices = e.choices; dlg.Choices = e.choices;
if (dlg.ShowDialog(this) == DialogResult.OK) if (dlg.ShowDialog(this) == DialogResult.OK)
e.selection = dlg.ChosenIndex; e.selection = dlg.ChosenIndex;
_choiceMaxed = dlg.WindowState == FormWindowState.Maximized;
if (!_choiceMaxed)
{
_choiceHeight = dlg.Height;
_choiceWidth = dlg.Width;
}
}); });
} }
@@ -903,9 +915,19 @@ namespace JDP {
if (_batchPaths.Count == 0 && action == CUEAction.Encode && (checkBoxUseFreeDb.Checked || checkBoxUseMusicBrainz.Checked)) if (_batchPaths.Count == 0 && action == CUEAction.Encode && (checkBoxUseFreeDb.Checked || checkBoxUseMusicBrainz.Checked))
{ {
frmChoice dlg = new frmChoice(); frmChoice dlg = new frmChoice();
if (_choiceWidth != 0 && _choiceHeight != 0)
dlg.Size = new Size(_choiceWidth, _choiceHeight);
if (_choiceMaxed)
dlg.WindowState = FormWindowState.Maximized;
dlg.CUE = cueSheet; dlg.CUE = cueSheet;
dlg.LookupAlbumInfo(checkBoxUseFreeDb.Checked, false, checkBoxUseMusicBrainz.Checked, _profile._config.advanced.CacheMetadata, true); dlg.LookupAlbumInfo(checkBoxUseFreeDb.Checked, checkBoxUseMusicBrainz.Checked, _profile._config.advanced.CacheMetadata, true);
dlgRes = dlg.ShowDialog(this); dlgRes = dlg.ShowDialog(this);
_choiceMaxed = dlg.WindowState == FormWindowState.Maximized;
if (!_choiceMaxed)
{
_choiceHeight = dlg.Height;
_choiceWidth = dlg.Width;
}
if (dlgRes == DialogResult.Cancel) if (dlgRes == DialogResult.Cancel)
{ {
cueSheet.Close(); cueSheet.Close();
@@ -990,11 +1012,35 @@ namespace JDP {
) )
) )
{ {
cueSheet.CTDB.Submit((int)cueSheet.ArVerify.WorstConfidence(), 100, cueSheet.Metadata.Artist, cueSheet.Metadata.Title, cueSheet.Metadata.Barcode); DialogResult res = DialogResult.OK;
if (cueSheet.Config.advanced.CTDBAsk)
{
bool remember = true;
this.Invoke((MethodInvoker)delegate()
{
var confirm = new frmSubmit();
res = confirm.ShowDialog(this);
remember = confirm.checkBoxRemember.Checked;
});
if (remember)
{
cueSheet.Config.advanced.CTDBSubmit = res == DialogResult.OK;
cueSheet.Config.advanced.CTDBAsk = false;
}
}
if (res == DialogResult.OK)
{
cueSheet.CTDB.Submit(
(int)cueSheet.ArVerify.WorstConfidence(),
100,
cueSheet.Metadata.Artist,
cueSheet.Metadata.Title + (cueSheet.Metadata.Title != "" && cueSheet.Metadata.DiscNumberAndName != "" ? " (disc " + cueSheet.Metadata.DiscNumberAndName + ")" : ""),
cueSheet.Metadata.Barcode);
if (cueSheet.CTDB.SubStatus != null) if (cueSheet.CTDB.SubStatus != null)
status += ", submit: " + cueSheet.CTDB.SubStatus; status += ", submit: " + cueSheet.CTDB.SubStatus;
} }
} }
}
else else
status = cueSheet.ExecuteScript(script); status = cueSheet.ExecuteScript(script);
@@ -1328,6 +1374,9 @@ namespace JDP {
profilePath = sr.ProfilePath; profilePath = sr.ProfilePath;
_profile.Load(sr); _profile.Load(sr);
lastMOTD = sr.LoadDate("LastMOTD") ?? DateTime.FromBinary(0); lastMOTD = sr.LoadDate("LastMOTD") ?? DateTime.FromBinary(0);
_choiceWidth = sr.LoadInt32("ChoiceWidth", null, null) ?? 0;
_choiceHeight = sr.LoadInt32("ChoiceHeight", null, null) ?? 0;
_choiceMaxed = sr.LoadBoolean("ChoiceMaxed") ?? false;
_defaultLosslessFormat = sr.Load("DefaultLosslessFormat") ?? "flac"; _defaultLosslessFormat = sr.Load("DefaultLosslessFormat") ?? "flac";
_defaultLossyFormat = sr.Load("DefaultLossyFormat") ?? "mp3"; _defaultLossyFormat = sr.Load("DefaultLossyFormat") ?? "mp3";
_defaultHybridFormat = sr.Load("DefaultHybridFormat") ?? "lossy.flac"; _defaultHybridFormat = sr.Load("DefaultHybridFormat") ?? "lossy.flac";
@@ -1383,6 +1432,9 @@ namespace JDP {
SettingsWriter sw = new SettingsWriter("CUE Tools", "settings.txt", Application.ExecutablePath); SettingsWriter sw = new SettingsWriter("CUE Tools", "settings.txt", Application.ExecutablePath);
SaveScripts(SelectedAction); SaveScripts(SelectedAction);
sw.Save("LastMOTD", lastMOTD); sw.Save("LastMOTD", lastMOTD);
sw.Save("ChoiceWidth", _choiceWidth);
sw.Save("ChoiceHeight", _choiceHeight);
sw.Save("ChoiceMaxed", _choiceMaxed);
sw.Save("InputPath", InputPath); sw.Save("InputPath", InputPath);
sw.Save("DefaultLosslessFormat", _defaultLosslessFormat); sw.Save("DefaultLosslessFormat", _defaultLosslessFormat);
sw.Save("DefaultLossyFormat", _defaultLossyFormat); sw.Save("DefaultLossyFormat", _defaultLossyFormat);
@@ -2120,9 +2172,19 @@ namespace JDP {
} }
CueSheet.UseLocalDB(_localDB); CueSheet.UseLocalDB(_localDB);
frmChoice dlg = new frmChoice(); frmChoice dlg = new frmChoice();
if (_choiceWidth != 0 && _choiceHeight != 0)
dlg.Size = new Size(_choiceWidth, _choiceHeight);
if (_choiceMaxed)
dlg.WindowState = FormWindowState.Maximized;
dlg.CUE = CueSheet; dlg.CUE = CueSheet;
dlg.LookupAlbumInfo(true, false, true, true, node is FileSystemTreeNodeLocalDBEntry); dlg.LookupAlbumInfo(true, true, true, node is FileSystemTreeNodeLocalDBEntry);
var dlgRes = dlg.ShowDialog(this); var dlgRes = dlg.ShowDialog(this);
_choiceMaxed = dlg.WindowState == FormWindowState.Maximized;
if (!_choiceMaxed)
{
_choiceHeight = dlg.Height;
_choiceWidth = dlg.Width;
}
if (dlgRes == DialogResult.OK && dlg.ChosenRelease != null) if (dlgRes == DialogResult.OK && dlg.ChosenRelease != null)
{ {
if (node is FileSystemTreeNodeLocalDBCollision) if (node is FileSystemTreeNodeLocalDBCollision)
@@ -2175,10 +2237,13 @@ namespace JDP {
else if (info.Node as FileSystemTreeNodeLocalDBEntry != null) else if (info.Node as FileSystemTreeNodeLocalDBEntry != null)
{ {
editMetadataToolStripMenuItem.Visible = true; editMetadataToolStripMenuItem.Visible = true;
//removeItemFromDatabaseToolStripMenuItem.Visible = true;
} }
else
return; if (info.Node is FileSystemTreeNodeLocalDBGroup || info.Node is FileSystemTreeNodeLocalDBEntry)
{
removeItemFromDatabaseToolStripMenuItem.Visible = true;
}
fileSystemTreeView1.SelectedNode = info.Node; fileSystemTreeView1.SelectedNode = info.Node;
contextMenuStripFileTree.Show(fileSystemTreeView1, e.Location); contextMenuStripFileTree.Show(fileSystemTreeView1, e.Location);
} }
@@ -2541,14 +2606,24 @@ namespace JDP {
private void removeItemFromDatabaseToolStripMenuItem_Click(object sender, EventArgs e) private void removeItemFromDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var node = contextMenuStripFileTree.Tag as FileSystemTreeNodeLocalDBEntry; var items = (contextMenuStripFileTree.Tag is FileSystemTreeNodeLocalDBGroup)
if (node == null || node.Path == null) ? new List<CUEToolsLocalDBEntry>((contextMenuStripFileTree.Tag as FileSystemTreeNodeLocalDBGroup).Group)
: (contextMenuStripFileTree.Tag is FileSystemTreeNodeLocalDBEntry)
? new List<CUEToolsLocalDBEntry>(new CUEToolsLocalDBEntry[] { (contextMenuStripFileTree.Tag as FileSystemTreeNodeLocalDBEntry).Item })
: null;
if (items == null)
return; return;
foreach (var node in fileSystemTreeView1.Nodes)
_localDB.Remove(node.Item); {
if (node is FileSystemTreeNodeLocalDB)
{
(node as FileSystemTreeNodeLocalDB).Purge(items);
//_localDB.RemoveAll(i => items.Contains(i));
_localDB.Dirty = true; _localDB.Dirty = true;
SaveDatabase(); SaveDatabase();
node.Remove(); return;
}
}
} }
} }
@@ -2621,6 +2696,20 @@ namespace JDP {
: base(icon_mgr, true) : base(icon_mgr, true)
{ {
} }
public void Purge(List<CUEToolsLocalDBEntry> entries)
{
foreach (TreeNode child in this.Nodes)
{
if (child is FileSystemTreeNodeLocalDBFolder)
(child as FileSystemTreeNodeLocalDBFolder).Purge(entries);
if ((child is FileSystemTreeNodeLocalDBEntry && entries.Contains((child as FileSystemTreeNodeLocalDBEntry).Item))
|| (child is FileSystemTreeNodeLocalDBGroup && (child as FileSystemTreeNodeLocalDBGroup).Group.Count == 0))
child.Remove();
}
this.Group.RemoveAll(item => entries.Contains(item));
}
} }
public class FileSystemTreeNodeLocalDBCollision : FileSystemTreeNodeLocalDBFolder public class FileSystemTreeNodeLocalDBCollision : FileSystemTreeNodeLocalDBFolder

File diff suppressed because it is too large Load Diff

View File

@@ -38,16 +38,16 @@ namespace JDP
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.tableLayoutPanelMeta = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanelMeta = new System.Windows.Forms.TableLayoutPanel();
this.listMetadata = new System.Windows.Forms.ListView();
this.columnHeaderMetadataValue = new System.Windows.Forms.ColumnHeader();
this.columnHeaderMetadataName = new System.Windows.Forms.ColumnHeader();
this.listTracks = new System.Windows.Forms.ListView(); this.listTracks = new System.Windows.Forms.ListView();
this.Title = new System.Windows.Forms.ColumnHeader(); this.Title = new System.Windows.Forms.ColumnHeader();
this.TrackNo = new System.Windows.Forms.ColumnHeader(); this.TrackNo = new System.Windows.Forms.ColumnHeader();
this.Start = new System.Windows.Forms.ColumnHeader(); this.Start = new System.Windows.Forms.ColumnHeader();
this.Length = new System.Windows.Forms.ColumnHeader(); this.Length = new System.Windows.Forms.ColumnHeader();
this.listMetadata = new System.Windows.Forms.ListView(); this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.columnHeaderMetadataValue = new System.Windows.Forms.ColumnHeader();
this.columnHeaderMetadataName = new System.Windows.Forms.ColumnHeader();
this.tableLayoutPanel1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout(); this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@@ -123,11 +123,6 @@ namespace JDP
this.pictureBox1.TabStop = false; this.pictureBox1.TabStop = false;
this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick); this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
// //
// backgroundWorker1
//
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
//
// tableLayoutPanelMeta // tableLayoutPanelMeta
// //
resources.ApplyResources(this.tableLayoutPanelMeta, "tableLayoutPanelMeta"); resources.ApplyResources(this.tableLayoutPanelMeta, "tableLayoutPanelMeta");
@@ -135,6 +130,29 @@ namespace JDP
this.tableLayoutPanelMeta.Controls.Add(this.listTracks, 1, 0); this.tableLayoutPanelMeta.Controls.Add(this.listTracks, 1, 0);
this.tableLayoutPanelMeta.Name = "tableLayoutPanelMeta"; this.tableLayoutPanelMeta.Name = "tableLayoutPanelMeta";
// //
// listMetadata
//
this.listMetadata.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeaderMetadataValue,
this.columnHeaderMetadataName});
resources.ApplyResources(this.listMetadata, "listMetadata");
this.listMetadata.FullRowSelect = true;
this.listMetadata.GridLines = true;
this.listMetadata.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.listMetadata.LabelEdit = true;
this.listMetadata.Name = "listMetadata";
this.listMetadata.UseCompatibleStateImageBehavior = false;
this.listMetadata.View = System.Windows.Forms.View.Details;
this.listMetadata.DoubleClick += new System.EventHandler(this.listMetadata_DoubleClick);
//
// columnHeaderMetadataValue
//
resources.ApplyResources(this.columnHeaderMetadataValue, "columnHeaderMetadataValue");
//
// columnHeaderMetadataName
//
resources.ApplyResources(this.columnHeaderMetadataName, "columnHeaderMetadataName");
//
// listTracks // listTracks
// //
this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
@@ -167,28 +185,10 @@ namespace JDP
// //
resources.ApplyResources(this.Length, "Length"); resources.ApplyResources(this.Length, "Length");
// //
// listMetadata // backgroundWorker1
// //
this.listMetadata.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.columnHeaderMetadataValue, this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
this.columnHeaderMetadataName});
resources.ApplyResources(this.listMetadata, "listMetadata");
this.listMetadata.FullRowSelect = true;
this.listMetadata.GridLines = true;
this.listMetadata.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.listMetadata.LabelEdit = true;
this.listMetadata.Name = "listMetadata";
this.listMetadata.UseCompatibleStateImageBehavior = false;
this.listMetadata.View = System.Windows.Forms.View.Details;
this.listMetadata.DoubleClick += new System.EventHandler(this.listMetadata_DoubleClick);
//
// columnHeaderMetadataValue
//
resources.ApplyResources(this.columnHeaderMetadataValue, "columnHeaderMetadataValue");
//
// columnHeaderMetadataName
//
resources.ApplyResources(this.columnHeaderMetadataName, "columnHeaderMetadataName");
// //
// frmChoice // frmChoice
// //
@@ -196,7 +196,6 @@ namespace JDP
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.tableLayoutPanel1);
this.MaximizeBox = false;
this.Name = "frmChoice"; this.Name = "frmChoice";
this.ShowIcon = false; this.ShowIcon = false;
this.ShowInTaskbar = false; this.ShowInTaskbar = false;

View File

@@ -20,16 +20,15 @@ namespace JDP
public CUESheet CUE; public CUESheet CUE;
private bool freedb, musicbrainz, ctdb; private bool freedb, ctdb;
public void LookupAlbumInfo(bool freedb, bool musicbrainz, bool ctdb, bool cache, bool cue) public void LookupAlbumInfo(bool freedb, bool ctdb, bool cache, bool cue)
{ {
this.freedb = freedb; this.freedb = freedb;
this.musicbrainz = musicbrainz;
this.ctdb = ctdb; this.ctdb = ctdb;
var releases = CUE.LookupAlbumInfo(false, false, false, cache, cue); var releases = CUE.LookupAlbumInfo(false, false, cache, cue);
this.Choices = releases; this.Choices = releases;
if (freedb || musicbrainz || ctdb) if (freedb || ctdb)
backgroundWorker1.RunWorkerAsync(null); backgroundWorker1.RunWorkerAsync(null);
} }
@@ -308,7 +307,7 @@ namespace JDP
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{ {
e.Result = CUE.LookupAlbumInfo(this.freedb, this.musicbrainz, this.ctdb, false, false); e.Result = CUE.LookupAlbumInfo(this.freedb, this.ctdb, false, false);
} }
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

View File

@@ -166,143 +166,142 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACm ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB+
HwAAAk1TRnQBSQFMAgEBBwEAAQwBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA HwAAAk1TRnQBSQFMAgEBBwEAAQwBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIB4AAx0BKgNDAXcDHQEqeAABLwEsASoBOwFxAWEBUQGUAZkBeQFaAc4BrAGC AwABIAMAAQEBAAEgBgABIB4AAx0BKgNDAXcDHQEqeAABKAInATsBWgFUAU4BlAGFAXABWwHOAaIBfgFZ
AVkB6wGsAYIBWQHrAZkBeQFaAc4BcQFhAVEBlAIAAeIB/wIAAeIB/1QAAx0BKQNCAXQC/wHwAf8DQgF0 AesBogF+AVkB6wGFAXABWwHOAVoBVAFOAZQCAAHiAf8CAAHiAf9UAAMdASkDQgF0Av8B8AH/A0IBdAMd
Ax0BKWwAAwoBDQFyAWEBUgGWAbQBhQFXAfoB4QHNAbkB/wHxAeABzgH/AfkB5wHWAf8B+AHmAdQB/wHw ASlsAAMKAQ0BWgFUAU8BlgGvAYIBVQH6AeEBzQG5Af8B8QHgAc4B/wH5AecB1gH/AfgB5gHUAf8B8AHd
Ad0BzAH/AeEBzQG5Af8CAAHiAf8CAAHiAf8DCgENTAADHAEoA0ABcQL/AfAB/wLpAdoD/wHxAf8DQAFx AcwB/wHhAc0BuQH/AgAB4gH/AgAB4gH/AwoBDUwAAxwBKANAAXEC/wHwAf8C6QHaA/8B8QH/A0ABcQMc
AxwBKCAAAzYBWQNCAXYDQgF2AzABSwQAAzABSwNCAXYDQgF2A0IBdgNCAXYDMAFLBAADMAFLA0IBdgNC ASggAAM2AVkDQgF2A0IBdgMwAUsEAAMwAUsDQgF2A0IBdgNCAXYDQgF2AzABSwQAAzABSwNCAXYDQgF2
AXYDNgFZBAADCgENAYoBcAFXAbgB2QG/AaUB/wH+AfIB5AL/AecBzwH/AfwB2wG7Af8B+QHTAbIB/wH2 AzYBWQQAAwoBDQFzAWUBVwG4AdkBvwGlAf8B/gHyAeQC/wHnAc8B/wH8AdsBuwH/AfkB0wGyAf8B9gHQ
AdABrAH/AfQB0QGuAf8B9gHYAbsB/wIAAeIB/wIAAeIB/wGKAXABVwG4AwoBDUQAAxwBJwNAAW8C/wHw AawB/wH0AdEBrgH/AfYB2AG7Af8CAAHiAf8CAAHiAf8BcwFlAVcBuAMKAQ1EAAMcAScDQAFvAv8B8AH/
Af8B6wHdAbEB/wH3AcEBNQH/Ae0B3wGzA/8B8gH/A0ABbwMcASccAANBAXIC+QHpAf8C8wHjAf8CWwFZ AesB3QGxAf8B9wHBATQB/wHtAd8BswP/AfIB/wNAAW8DHAEnHAADQQFyAvkB6QH/AvMB4wH/AlkBVgG1
AbUDQwF4AmUBYwHDAvMB4wH/AvMB4wH/AvMB4wH/AvMB4wH/AmUBYwHDA0MBeAJbAVkBtQLzAeMB/wL5 A0MBeANfAcMC8wHjAf8C8wHjAf8C8wHjAf8C8wHjAf8DXwHDA0MBeAJZAVYBtQLzAeMB/wL5AekB/wNB
AekB/wNBAXIEAAFyAWEBUgGWAdkBvwGlAv8B+AHrAv8B6wHRAv8B4QHDAf8B/gHbAboB/wH7AdYBsgH/ AXIEAAFaAVQBTwGWAdkBvwGlAv8B+AHrAv8B6wHRAv8B4QHDAf8B/gHbAboB/wH7AdYBsgH/AgAB4gH/
AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/QAADQAFuAv8B8AH/ AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/QAADQAFuAv8B8AH/AukB2gH/
AukB2gH/AecBqwEfAf8B5wGrAR8B/wHnAasBHwH/AeoB2wGwA/8B9AH/A0ABbgMcAScYAANAAW8C9AHm AecBqwEeAf8B5wGrAR4B/wHnAasBHgH/AeoB2wGwA/8B9AH/A0ABbgMcAScYAANAAW8C9AHmAf8C6QHa
Af8C6QHaAf8C7wHgAf8C9AHmAf8C7wHgAf8C6QHaAf8C6QHaAf8C6QHaAf8C6QHaAf8C7wHgAf8C9AHm Af8C7wHgAf8C9AHmAf8C7wHgAf8C6QHaAf8C6QHaAf8C6QHaAf8C6QHaAf8C7wHgAf8C9AHmAf8C7wHg
Af8C7wHgAf8C6QHaAf8C9AHmAf8DQAFvAS0BKgEoATgBtwGHAVcB/QL+AfoC/wH5AekC/wHvAdgC/wHn Af8C6QHaAf8C9AHmAf8DQAFvAyYBOAG2AYcBVQH9Av4B+gL/AfkB6QL/Ae8B2AL/AecBzQL/AeEBwgH/
Ac0C/wHhAcIB/wH8AdwBuwH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/AgAB4gH/ AfwB3AG7Af8CAAHiAf8CAAHiAf8CAAHiAf8CAAHiAf8CAAHiAf8CAAHiAf8CAAHiAf8CAAHiAf9AAAMc
AgAB4gH/QAADHAEnAz8BbQL/AfEB/wHnAdcBqwH/AdcBlgEKAf8B1wGWAQoB/wHXAZYBCgH/AegB2AGu AScDPwFtAv8B8QH/AecB1wGrAf8B1wGWAQkB/wHXAZYBCQH/AdcBlgEJAf8B6AHYAa4D/wH1Af8DPwFt
A/8B9QH/Az8BbQMcAScUAANAAW4C9gHoAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHe AxwBJxQAA0ABbgL2AegB/wLrAd4B/wLrAd4B/wLrAd4B/wLrAd4B/wLrAd4B/wLrAd4B/wLrAd4B/wLr
Af8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C6wHeAf8C9gHoAf8DQAFuAXIBYQFSAZYB4gHO Ad4B/wLrAd4B/wLrAd4B/wLrAd4B/wLrAd4B/wL2AegB/wNAAW4BWgFUAU8BlgHiAc4BugH/AfcB3gHG
AboB/wH3Ad4BxgL/AekB0QL/AfYB4gL/AfIB3QL/AfAB3QH/AfgB6gHZAf8B+AHmAdQB/wH7Ad8BxwH/ Av8B6QHRAv8B9gHiAv8B8gHdAv8B8AHdAf8B+AHqAdkB/wH4AeYB1AH/AfsB3wHHAf8B9QHPAasB/wIA
AfUBzwGrAf8CAAHiAf8CAAHiAf8B+AHdAcMB/wHiAc4BugH/AXIBYQFSAZZEAAMbASYDPwFsAv8B8gH/ AeIB/wIAAeIB/wH4Ad0BwwH/AeIBzgG6Af8BWgFUAU8BlkQAAxsBJgM/AWwC/wHyAf8B5QHUAakB/wHN
AeUB1AGpAf8BzQGJAQAB/wHNAYkBAAH/Ac0BiQEAAf8B6AHXAa8D/wH3Af8DPwFsAxsBJhAAAz8BbQL3 AYkBAAH/Ac0BiQEAAf8BzQGJAQAB/wHoAdcBrwP/AfcB/wM/AWwDGwEmEAADPwFtAvcB7AH/Au4B4wH/
AewB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLuAeMB/wLu Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/Au4B4wH/
AeMB/wLuAeMB/wLuAeMB/wL3AewB/wM/AW0BmgF5AVoB0AHvAeAB0AH/AecBvgGWAf8B5wG8AZQB/wHw Au4B4wH/AvcB7AH/Az8BbQGGAXABWwHQAe8B4AHQAf8B5wG+AZYB/wHnAbwBlAH/AfABzAGpAf8B/gHs
AcwBqQH/Af4B7AHaAf8B3QHEAawB/wGpAYEBWgHnAakBgQFaAecB3QHDAaoB/wH4Ad0BxAH/AgAB4gH/ AdoB/wHdAcQBrAH/AZwBfAFcAecBnAF8AVwB5wHdAcMBqgH/AfgB3QHEAf8CAAHiAf8CAAHiAf8B9QHW
AgAB4gH/AfUB1gG4Af8B8QHfAc8B/wGaAXkBWgHQSAADGwEmAz4BawL/AfQB/wHnAdYBrAH/AdEBjgEC AbgB/wHxAd8BzwH/AYYBcAFbAdBIAAMbASYDPgFrAv8B9AH/AecB1gGsAf8B0QGOAQEB/wHRAY4BAQH/
Af8B0QGOAQIB/wHRAY4BAgH/AewB2wGzA/8B+AH/Az4BawMbASYMAAM+AWsC+QHvAf8C8QHoAf8C8QHo AdEBjgEBAf8B7AHbAbMD/wH4Af8DPgFrAxsBJgwAAz4BawL5Ae8B/wLxAegB/wLxAegB/wLxAegB/wLx
Af8C8QHoAf8C8QHoAf8C8QHoAf8DAAH/AU0BhQGTAf8BuALLAf8C8QHoAf8C8QHoAf8C8QHoAf8C8QHo AegB/wLxAegB/wMAAf8BTAGFAZMB/wG4AssB/wLxAegB/wLxAegB/wLxAegB/wLxAegB/wL5Ae8B/wM+
Af8C+QHvAf8DPgFrAawBggFZAewB9QHkAdUB/wHpAb4BlwH/AegBvAGWAf8B5wG8AZQB/wHzAd4BygH/ AWsBoQF9AVkB7AH1AeQB1QH/AekBvgGXAf8B6AG8AZYB/wHnAbwBlAH/AfMB3gHKAf8BnAF7AVkB5gMU
AagBgQFZAeYBFgEVARQBGwEWARUBFAEbAagBgQFZAeYB9gHjAdMB/wIAAeIB/wIAAeIB/wHtAckBpAH/ ARsDFAEbAZwBewFZAeYB9gHjAdMB/wIAAeIB/wIAAeIB/wHtAckBpAH/AfYB5AHSAf8BoQF9AVkB7EwA
AfYB5AHSAf8BrAGCAVkB7EwAAxsBJgM+AWsC/wH1Af8B6wHcAbMB/wHfAaEBFQH/Ad8BoQEVAf8B3wGh AxsBJgM+AWsC/wH1Af8B6wHcAbMB/wHfAaEBFAH/Ad8BoQEUAf8B3wGhARQB/wHxAeIBuwP/AfoB/wM+
ARUB/wHxAeIBuwP/AfoB/wM+AWsDGwEmCAADPgFqAvoB8wH/AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/ AWsDGwEmCAADPgFqAvoB8wH/AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/AvUB7gH/AXcBsQHAAf8B2QH0
AvUB7gH/AXgBsQHAAf8B2QH0Av8BOwGcAasB/wG1AdMB1AH/AvUB7gH/AvUB7gH/AvUB7gH/AvoB8wH/ Av8BOgGcAasB/wG1AdMB1AH/AvUB7gH/AvUB7gH/AvUB7gH/AvoB8wH/Az4BagGhAX0BWQHsAfUB5AHV
Az4BagGsAYIBWQHsAfUB5AHVAf8B6QG/AZkB/wHpAcABmQH/AekBwQGaAf8B8wHdAckB/wGoAYEBWQHm Af8B6QG/AZkB/wHpAcABmQH/AekBwQGaAf8B8wHdAckB/wGcAXsBWQHmAxQBGwMUARsBnAF7AVkB5gH4
ARYBFQEUARsBFgEVARQBGwGoAYEBWQHmAfgB6AHZAf8B8gHSAbIB/wHwAcwBqwH/AfABzAGrAf8B9gHk AegB2QH/AfIB0gGyAf8B8AHMAasB/wHwAcwBqwH/AfYB5AHTAf8BoQF9AVkB7FAAAxsBJgM+AWoC/wH3
AdMB/wGsAYIBWQHsUAADGwEmAz4BagL/AfcB/wHyAeQBuwH/AfABuAEsAf8B8AG4ASwB/wHwAbgBLAH/ Af8B8gHkAbsB/wHwAbgBKwH/AfABuAErAf8B8AG4ASsB/wL4AfQD/wH7Af8DPgFqAxoBJQQAAz0BaQL8
AvgB9AP/AfsB/wM+AWoDGgElBAADPQFpAvwB9wH/AvgB8wH/AvgB8wH/AvgB8wH/AvgB8wH/AvgB8wH/ AfcB/wL4AfMB/wL4AfMB/wL4AfMB/wL4AfMB/wL4AfMB/wHUAeYB5wH/AUQBtAHDAf8BdAHmAfcB/wE7
AdQB5gHnAf8BRQG0AcMB/wF1AeYB9wH/ATwBnQGtAf8BtgHVAdcB/wL4AfMB/wL4AfMB/wL8AfcB/wM9 AZ0BrQH/AbYB1QHXAf8C+AHzAf8C+AHzAf8C/AH3Af8DPQFpAYYBcAFbAdAB8AHhAdEB/wHqAcQBoQH/
AWkBmgF5AVoB0AHwAeEB0QH/AeoBxAGhAf8B6QHBAZsB/wHpAcABlwH/AfEBzgGyAf8B3AHDAaoB/wGp AekBwQGbAf8B6QHAAZcB/wHxAc4BsgH/AdwBwwGqAf8BnAF8AVwB5wGcAXwBXAHnAd0BxAGsAv8B/AHz
AYEBWgHnAakBgQFaAecB3QHEAawC/wH8AfMC/wH0AeUC/wHuAdoB/wH8AeUB0QH/AfEB4QHRAf8BmgF5 Av8B9AHlAv8B7gHaAf8B/AHlAdEB/wHxAeEB0QH/AYYBcAFbAdBUAAMaASUDPQFpAv8B+AH/AfcB6gHD
AVoB0FQAAxoBJQM9AWkC/wH4Af8B9wHqAcMB/wH9AckBPQH/AfkB7AHHAf8C+wH3Af8C/AH5A/8B/AH/ Af8B/QHJATwB/wH5AewBxwH/AvsB9wH/AvwB+QP/AfwB/wM9AWkDGgElAz0BaAL9AfoB/wL7AfcB/wL7
Az0BaQMaASUDPQFoAv0B+gH/AvsB9wH/AvsB9wH/AvsB9wH/AvsB9wH/AvsB9wH/AvsB9wH/Ab4B5QHo AfcB/wL7AfcB/wL7AfcB/wL7AfcB/wL7AfcB/wG+AeUB6AH/AUUBtQHFAf8BdAHmAfcB/wE8AZ4BrgH/
Af8BRgG1AcUB/wF1AeYB9wH/AT0BngGuAf8BuQHYAdsB/wL7AfcB/wL9AfoB/wM9AWgBcgFhAVIBlgHi AbkB2AHbAf8C+wH3Af8C/QH6Af8DPQFoAVoBVAFPAZYB4gHOAboB/wHxAdIBtgH/AesBwQGbAf8B6wG/
Ac4BugH/AfEB0gG2Af8B6wHBAZsB/wHrAb8BmQL/AeQB0wL/AegB2wH/AfMB2gHHAf8B+AHxAeQC/wH4 AZkC/wHkAdMC/wHoAdsB/wHzAdoBxwH/AfgB8QHkAv8B+AHtAv8B9wHpAv8B/gHxAv8B/AHvAv8B/AHy
Ae0C/wH3AekC/wH+AfEC/wH8Ae8C/wH8AfIB/wHiAc4BugH/AXIBYQFSAZZYAAMaASUDPQFoAv8B+gH/ Af8B4gHOAboB/wFaAVQBTwGWWAADGgElAz0BaAL/AfoB/wL4AfQB/wL7AfcB/wLoAd4B/wLYAckB/wLo
AvgB9AH/AvsB9wH/AugB3gH/AtgByQH/AugB3gP/Af4B/wM9AWgDPQFoAv4B/QH/Av0B+wH/Av0B+wH/ Ad4D/wH+Af8DPQFoAz0BaAL+Af0B/wL9AfsB/wL9AfsB/wL9AfsB/wL9AfsB/wL9AfsB/wL9AfsB/wL9
Av0B+wH/Av0B+wH/Av0B+wH/Av0B+wH/Av0B+wH/AcAB5gHrAf8BRwG1AcYB/wF1AeYB9wH/AT0BngGv AfsB/wHAAeYB6wH/AUYBtQHGAf8BdAHmAfcB/wE8AZ4BrwH/Ab4B2AHcAf8C/gH9Af8DPQFoAyYBOAG2
Af8BvgHYAdwB/wL+Af0B/wM9AWgBLQEqASgBOAG3AYcBVwH9AfoB7QHhAf8B7AHHAaMC/wHsAdoF/wH3 AYcBVQH9AfoB7QHhAf8B7AHHAaMC/wHsAdoF/wH3Ac0BtgH/AewBvQGXAv8B9AHcA/8B9wL/AfcB6AP/
Ac0BtgH/AewBvQGXAv8B9AHcA/8B9wL/AfcB6AP/AfMD/wH5Af8C/gH5Af8BtwGHAVcB/QEtASoBKAE4 AfMD/wH5Af8C/gH5Af8BtgGHAVUB/QMmAThcAAMaASUDPQFoAv8B+wH/AvwB+QH/AssBuwH/BAACywG8
XAADGgElAz0BaAL/AfsB/wL8AfkB/wLLAbsB/wQAAssBvAP/Af4B/wM9AWgDPQFnJP8BwQHoAe4B/wFH A/8B/gH/Az0BaAM9AWck/wHBAegB7gH/AUYBtgHHAf8BdAHmAfcB/wOTAf8D1QH/Az0BZwQAAVoBVAFP
AbYBxwH/AXUB5gH3Af8DkwH/A9UB/wM9AWcEAAFyAWEBUgGWAdkBvwGlAv8B+gHwBv8B/QHzAf8B8AHB AZYB2QG/AaUC/wH6AfAG/wH9AfMB/wHwAcEBowH/Ae4BxgGgAf8B/QHwAdED/wH+Av8B/QHwAv8B/QHx
AaMB/wHuAcYBoAH/Af0B8AHRA/8B/gL/Af0B8AL/Af0B8QX/AdkBvwGlAf8BcgFhAVIBlmQAAxoBJQM9 Bf8B2QG/AaUB/wFaAVQBTwGWZAADGgElAz0BZwL/AfwB/wLUAcoB/wKvAZ8B/wLUAcsD/wH+Af8DPQFn
AWcC/wH8Af8C1AHKAf8CrwGfAf8C1AHLA/8B/gH/Az0BZwMxAU0DPAFmAzwBZgM8AWYDPAFmAzwBZgM8 AzEBTQM8AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDSgGMA1IBpwP3Af8CVgFY
AWYDPAFmAzwBZgM8AWYDPAFmA0sBjAJUAVIBpwP3Af8CVgFYAbsDRAF6BAADCgENAYoBcAFXAbgB2QG/ AbsDRAF6BAADCgENAXMBZQFXAbgB2QG/AaUB/wH+Af0B/AL/AfEB5AH/AfIBygGuAf8B8gHSAa0B/wH5
AaUB/wH+Af0B/AL/AfEB5AH/AfIBygGuAf8B8gHSAa0B/wH5Ae0ByAP/AfcD/wH9Af8B/gH9AfwB/wHZ Ae0ByAP/AfcD/wH9Af8B/gH9AfwB/wHZAb8BpQH/AXMBZQFXAbgDCgENaAADGgEkAz0BZwL/Af4D/wH+
Ab8BpQH/AYoBcAFXAbgDCgENaAADGgEkAz0BZwL/Af4D/wH+A/8B/gX/Az0BZzAAAxoBJAJEAUUBfAKA A/8B/gX/Az0BZzAAAxoBJAJEAUUBfAKAAv8CUwFdAcEIAAMKAQ0BWgFUAU8BlgGvAYIBVQH6AeEBzQG5
Av8CTwFiAcEIAAMKAQ0BcgFhAVIBlgG0AYUBVwH6AeEBzQG5Af8B8QHiAdQB/wH5AewB3wH/AfsB8wHl Af8B8QHiAdQB/wH5AewB3wH/AfsB8wHlAf8B9AHtAeQB/wHiAc4BuwH/Aa8BggFVAfoBWgFUAU8BlgMK
Af8B9AHtAeQB/wHiAc4BuwH/AbQBhQFXAfoBcgFhAVIBlgMKAQ1wAAMaASQDPAFmAzwBZgM8AWYDPAFm AQ1wAAMaASQDPAFmAzwBZgM8AWYDPAFmAzEBTTQAAyYBOQJSAVgBrwMqAUAQAAEoAicBOwFaAVQBTgGU
AzEBTTQAAyYBOQJPAVwBrwMqAUAQAAEvASwBKgE7AXEBYQFRAZQBmQF5AVoBzgGsAYIBWQHrAa0BgwFY AYUBcAFbAc4BogF+AVkB6wGjAX8BWAHvAY0BdAFaAdkBWwFUAU8BlwEoAicBO1wAAwIBAwMUARwDMAFM
Ae8BoAF8AVkB2QFzAWIBUQGXAS8BLAEqATtcAAMCAQMDFAEcAzABTANEAXkDUAGaA1ABpANQAZoDRAF5 A0QBeQNQAZoDUAGkA1ABmgNEAXkDMAFMAxQBHAMDAQQIAAOWAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIA
AzABTAMUARwDAwEECAADlgH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ Af8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIAAf8BGgIA
ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/ARsCAAH/BAABTgHMAv8BGwKZ Af8BGgIAAf8EAAFNAcwC/wEaApkB/wEaApkB/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFN
Af8BGwKZAf8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHM AcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/xAAAwIBAwMUARwDMAFMA0QBeQNQAZoDUAGk
Av8BTgHMAv8BTgHMAv8QAAMCAQMDFAEcAzABTANEAXkDUAGaA1ABpANQAZoDRAF5AzABTAMUARwDAwEE A1ABmgNEAXkDMAFMAxQBHAMDAQQQAAMEAQYDJAE2A1MBsAFjAl4B5QFtAl8B+wGzAqkB/wFtAmAB+wNg
EAADBAEGAyQBNgNTAbABYwJeAeUBcAJfAfsBswKpAf8BcAJiAfsDYAHrA1oB0wNTAawDRwGCAygBPAMH AesDWgHTA1MBrANHAYIDKAE8AwcBCQQAAcwCmQH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/A+oB/wPq
AQkEAAHMApkB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wPqAf8D6gH/A+oB/wGAAgAB/wPqAf8D6gH/ Af8D6gH/AYACAAH/A+oB/wPqAf8D6gH/AYACAAH/AYACAAH/AU0CAAH/ARoCAAH/ARoCmQH/AwAB/wMQ
A+oB/wGAAgAB/wGAAgAB/wFOAgAB/wEbAgAB/wEbApkB/wMAAf8DEQH/AzUB/wMAAf8DBAH/AU4BzAL/ Af8DNAH/AwAB/wMDAf8BTQHMAv8BTQHMAv8BTQHMAv8BTQHMAv8BTQHMAv8BTQHMAv8BTQHMAv8BTQHM
AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/AU4BzAL/CAADBAEG Av8BTQHMAv8BTQHMAv8IAAMEAQYDJAE2A1MBsAFjAl4B5QFtAl8B+wGzAqkB/wFtAmAB+wNgAesDWgHT
AyQBNgNTAbABYwJeAeUBcAJfAfsBswKpAf8BcAJiAfsDYAHrA1oB0wNTAawDRwGCAygBPAMHAQkIAAMC A1MBrANHAYIDKAE8AwcBCQgAAwIBAwMxAU8DXAHqAc8CtAL/At0C/wLiAv8C6AL/Au4C/wLzAf8DzwH/
AQMDMQFPA1wB6gHPArQC/wLdAv8C4gL/AugC/wLuAv8C8wH/A88B/wNfAfMDWAHGA0wBkgMoATwDAwEE A18B8wNYAcYDTAGSAygBPAMDAQQBzAKZAf8BgAIAAf8BgAIAAf8BgAIAAf8D8QH/AYACAAH/AYACAAH/
AcwCmQH/AYACAAH/AYACAAH/AYACAAH/A/EB/wGAAgAB/wGAAgAB/wPxAf8BgAIAAf8D8QH/AYACAAH/ A/EB/wGAAgAB/wPxAf8BgAIAAf8BgAIAAf8D8QH/AYACAAH/AYACAAH/ARoCAAH/AwAB/wPMDf8DNAH/
AYACAAH/A/EB/wGAAgAB/wGAAgAB/wEbAgAB/wMAAf8DzA3/AzUB/wMEAf8BTgHMAv8BTgHMAv8BTgHM AwMB/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wQA
Av8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8EAAMCAQMDMQFPA1wB6gHPArQC/wLd AwIBAwMxAU8DXAHqAc8CtAL/At0C/wLiAv8C6AL/Au4C/wLzAf8DzwH/A18B8wNYAcYDTAGSAygBPAMD
Av8C4gL/AugC/wLuAv8C8wH/A88B/wNfAfMDWAHGA0wBkgMoATwDAwEEBAADJgE4A20B9wH1AscC/wLS AQQEAAMmATgDbQH3AfUCxwL/AtIC/wLYAv8C3QL/AuIC/wLoAv8C9AX/A/UB/wOAAfsDWAHGA0cBggMU
Av8C2AL/At0C/wLiAv8C6AL/AvQF/wP1Af8DgQH7A1gBxgNHAYIDFAEcAcwCmQH/AZkBAAEbAf8BgAIA ARwBzAKZAf8BmQEAARoB/wGAAgAB/wGAAgAF/wGAAgAB/wGAAgAF/wGAAgAF/wGAAgAB/wGAAgAF/wGA
Af8BgAIABf8BgAIAAf8BgAIABf8BgAIABf8BgAIAAf8BgAIABf8BgAIAAf8BgAIAAf8BGwIAAf8DAAH/ AgAB/wGAAgAB/wEaAgAB/wMAAf8DzBH/AwAB/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wFN
A8wR/wMAAf8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHMAv8BTgHM AcwC/wFNAcwC/wFNAcwC/wFNAcwC/wQAAyYBOANtAfcB9QLHAv8C0gL/AtgC/wLdAv8C4gL/AugC/wL0
Av8EAAMmATgDbQH3AfUCxwL/AtIC/wLYAv8C3QL/AuIC/wLoAv8C9AX/A/UB/wOBAfsDWAHGA0cBggMU Bf8D9QH/A4AB+wNYAcYDRwGCAxQBHAMHAQkDXgHdAfUCzQL/As8C/wLNAv8C0gL/AtgC/wLdAv8C4gL/
ARwDBwEJA14B3QH1As0C/wLPAv8CzQL/AtIC/wLYAv8C3QL/AuIC/wL6Cf8D9QH/A18B8wNTAawDMAFM AvoJ/wP1Af8DXwHzA1MBrAMwAUwBzAKZAf8BmQEAARoB/wGAAgAB/wGAAgAB/wGAAgAN/wGAAgAN/wGA
AcwCmQH/AZkBAAEbAf8BgAIAAf8BgAIAAf8BgAIADf8BgAIADf8BgAIAAf8BgAIAAf8BgAIAAf8BGwIA AgAB/wGAAgAB/wGAAgAB/wEaAgAB/wEaApkB/wMDAf8DXgH/A8AB/wPAAf8DzAH/AwAB/wMQAf8DAAH/
Af8BGwKZAf8DBAH/A18B/wPAAf8DwAH/A8wB/wMAAf8DEQH/AwAB/wMAAf8DAAH/AwAB/wMRAf8BTgHM AwAB/wMAAf8DAAH/AxAB/wFNAcwC/wFNAcwC/wFNAcwC/wMHAQkDXgHdAfUCzQL/As8C/wLNAv8C0gL/
Av8BTgHMAv8BTgHMAv8DBwEJA14B3QH1As0C/wLPAv8CzQL/AtIC/wLYAv8C3QL/AuIC/wL6Cf8D9QH/ AtgC/wLdAv8C4gL/AvoJ/wP1Af8DXwHzA1MBrAMwAUwDPgFqAcYCsQL/AtkC/wLUAv8CzwL/As0C/wHU
A18B8wNTAawDMAFMAz4BagHGArEC/wLZAv8C1AL/As8C/wLNAv8B1AHbAv8B1wHiAv8B5AHqEf8B0gLM AdsC/wHXAeIC/wHkAeoR/wHSAswB/wNaAdMDQwF3AcwCmQH/AZkBAAEaAf8BgAIAAf8BgAIAAf8BgAIA
Af8DWgHTA0MBdwHMApkB/wGZAQABGwH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAX/AYACAAX/ Af8BgAIAAf8BgAIABf8BgAIABf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BGgIAAf8BTQHM
AYACAAH/AYACAAH/AYACAAH/AYACAAH/AYACAAH/ARsCAAH/AU4BzAL/ARsCmQH/AwQB/wMAAf8DAAX/ Av8BGgKZAf8DAwH/AwAB/wMABf8DAAH/AwMB/wGkAqAJ/wOZAf8DEAH/AxAB/wFNAcwC/wFNAcwC/wM+
AwAB/wMEAf8BpAKgCf8DmQH/AxEB/wMRAf8BTgHMAv8BTgHMAv8DPgFqAcYCsQL/AtkC/wLUAv8CzwL/ AWoBxgKxAv8C2QL/AtQC/wLPAv8CzQL/AdQB2wL/AdcB4gL/AeQB6hH/AdICzAH/A1oB0wNDAXcDVgG2
As0C/wHUAdsC/wHXAeIC/wHkAeoR/wHSAswB/wNaAdMDQwF3A1YBtgH/AuMB/wEAARYBFwH/AQABFgEX Af8C4wH/AQABFQEWAf8BAAEVARYB/wEAARUBFgL/Ad4B5wH/AQABFQEWAv8B0QHzAf8BAAEVARYC/wH4
Af8BAAEWARcC/wHeAecB/wEAARYBFwL/AdEB8wH/AQABFgEXAv8B+AL/AVYCXAH/AQABFgEXAf8BVgJc Av8BVQJbAf8BAAEVARYB/wFVAlsB/wHMApkB/wFcAlUB6gNOAZQBzAKZAf8BmQEAARoB/wGAAgAB/wGA
Af8BzAKZAf8BXAJVAeoDTgGUAcwCmQH/AZkBAAEbAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIA AgAB/wGAAgAB/wGAAgAB/wGAAgAF/wGAAgAF/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wEa
Bf8BgAIABf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BGwIAAf8BTgHMAv8BTgHMAv8BTgHM AgAB/wFNAcwC/wFNAcwC/wFNAcwC/wFNAcwC/wMABf8DAAH/AxAR/wPMAf8DAAH/AU0BzAL/AU0BzAL/
Av8BTgHMAv8DAAX/AwAB/wMREf8DzAH/AwAB/wFOAcwC/wFOAcwC/wNWAbYB/wLjAf8BVgJcAf8BAAEW A1YBtgH/AuMB/wFVAlsB/wEAARUBFgH/AVUCWwL/Ad4B5wH/AVUCWwH/AQABFQEWAf8BVQJbAv8B+AL/
ARcB/wFWAlwC/wHeAecB/wFWAlwB/wEAARYBFwH/AVYCXAL/AfgC/wEAARYBFwH/AQABFgEXAf8BAAEW AQABFQEWAf8BAAEVARYB/wEAARUBFgH/AcwCmQH/AVwCVQHqA04BlANhAeIB/wLnAf8BAAEVARYC/wLe
ARcB/wHMApkB/wFcAlUB6gNOAZQDYQHiAf8C5wH/AQABFgEXAv8C3gL/AuAC/wHvAfwB/wEAARYBFwL/ Av8C4AL/Ae8B/AH/AQABFQEWAv8B4gH8Af8BAAEVARYB/wH8AfAB+QH/AQABFQEWAf8BzAKZAf8BAAEV
AeIB/AH/AQABFgEXAf8B/AHwAfkB/wEAARYBFwH/AcwCmQH/AQABFgEXAf8BzAKZAf8BbQJsAfcDUQGh ARYB/wHMApkB/wFtAmwB9wNRAaEBzAKZAf8BmQEAARoB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGA
AcwCmQH/AZkBAAEbAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIA AgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wGAAgAB/wEaAgAB/wGZ
Af8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BgAIAAf8BGwIAAf8BmQJOAf8BmQJOAf8BmQJOAf8BmQJO Ak0B/wGZAk0B/wGZAk0B/wGZAk0B/wMABf8DAAH/AwAB/wM0Af8DzA3/AwAB/wGZAk0B/wGZAk0B/wNh
Af8DAAX/AwAB/wMAAf8DNQH/A8wN/wMAAf8BmQJOAf8BmQJOAf8DYQHiAf8C5wH/AQABFgEXAv8C3gH/ AeIB/wLnAf8BAAEVARYC/wLeAf8BAAEVARYC/wHvAfwB/wEAARUBFgL/AeIB/AH/AQABFQEWAf8B/AHw
AQABFgEXAv8B7wH8Af8BAAEWARcC/wHiAfwB/wEAARYBFwH/AfwB8AH5Af8BAAEWARcB/wHMApkB/wHM AfkB/wEAARUBFgH/AcwCmQH/AcwCmQH/AcwCmQH/AW0CbAH3A1EBoQGeAowB/wHpAr4B/wEAARUBFgH/
ApkB/wHMApkB/wFtAmwB9wNRAaEBngKMAf8B6QK+Af8BAAEWARcB/wEAARYBFwH/AfkC1gL/AekB8wH/ AQABFQEWAf8B+QLWAv8B6QHzAf8BAAEVARYB/wEAARUBFgH/AQABFQEWAf8B+QHoAewB/wEAARUBFgH/
AQABFgEXAf8BAAEWARcB/wEAARYBFwH/AfkB6AHsAf8BAAEWARcB/wHmAroB/wHmAr0B/wHmAsAB/wGm AeYCugH/AeYCvQH/AeYCwAH/AaYClAH/A04BlDT/A/EB/wPqAf8DgAH/AZkCTQH/AZkCTQH/AZkCTQH/
ApQB/wNOAZQ0/wPxAf8D6gH/A4AB/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wMABf8DAAH/Az0B/wME AZkCTQH/AwAF/wMAAf8DPAH/AwMB/wMAAf8DAAH/AwAF/wMAAf8BmQJNAf8BmQJNAf8BngKMAf8B6QK+
Af8DAAH/AwAB/wMABf8DAAH/AZkCTgH/AZkCTgH/AZ4CjAH/AekCvgH/AQABFgEXAf8B8wLFAf8B+QLW Af8BAAEVARYB/wHzAsUB/wH5AtYC/wHpAfMB/wEAARUBFgL/AekB8wH/AQABFQEWAf8B+QHoAewB/wEA
Av8B6QHzAf8BAAEWARcC/wHpAfMB/wEAARYBFwH/AfkB6AHsAf8BAAEWARcB/wEAARYBFwH/AeYCvQH/ ARUBFgH/AQABFQEWAf8B5gK9Af8B5gLAAf8BpgKUAf8DTgGUA10B0gHbAqgB/wEAARUBFgH/AeoCtwH/
AeYCwAH/AaYClAH/A04BlANdAdIB2wKoAf8BAAEWARcB/wHqArcB/wHzAs0C/wHuAfwB/wEAARYBFwL/ AfMCzQL/Ae4B/AH/AQABFQEWAv8B0gH1Af8BAAEVARYC/wH0AfwB/wEAARUBFgL/AtgB/wEAARUBFgL/
AdIB9QH/AQABFgEXAv8B9AH8Af8BAAEWARcC/wLYAf8BAAEWARcC/wLiAf8DYgH2A0MBdwT/AZkBAAEb AuIB/wNiAfYDQwF3BP8BmQEAARoJ/wGAAgAN/wGAAgAB/wGAAgAN/wGAAgAB/wGAAgAB/wOAAf8BmQJN
Cf8BgAIADf8BgAIAAf8BgAIADf8BgAIAAf8BgAIAAf8DgAH/AZkCTgH/AZkCTgH/AZkCTgH/AZkCTgH/ Af8BmQJNAf8BmQJNAf8BmQJNAf8DAAX/AwMB/wMAAf8DEAH/AzwB/wM8Af8DAAX/AwAB/wGZAk0B/wGZ
AwAF/wMEAf8DAAH/AxEB/wM9Af8DPQH/AwAF/wMAAf8BmQJOAf8BmQJOAf8DXQHSAdsCqAH/AQABFgEX Ak0B/wNdAdIB2wKoAf8BAAEVARYB/wHqArcB/wEAARUBFgL/Ae4B/AH/AQABFQEWAv8B0gH1Af8BAAEV
Af8B6gK3Af8BAAEWARcC/wHuAfwB/wEAARYBFwL/AdIB9QH/AQABFgEXAv8B9AH8Af8BAAEWARcC/wLY ARYC/wH0AfwB/wEAARUBFgL/AtgC/wLdAv8C4gH/A2IB9gNDAXcDVgGxAdUCogH/AQABFQEWAf8BAAEV
Av8C3QL/AuIB/wNiAfYDQwF3A1YBsQHVAqIB/wEAARYBFwH/AQABFgEXAf8BAAEWARcC/wH2Av8BVgJc ARYB/wEAARUBFgL/AfYC/wFVAlsB/wEAARUBFgH/AVUCWwL/AeAB5wH/AVUCWwH/AQABFQEWAf8BVQJb
Af8BAAEWARcB/wFWAlwC/wHgAecB/wFWAlwB/wEAARYBFwH/AVYCXAL/At0B/wNaAeQDMAFMBP8BmQEA Av8C3QH/A1oB5AMwAUwE/wGZAQABGgn/AYACAAn/AYACABH/AYACAAH/A/EB/wPqAf8DgAH/AZkCTQH/
ARsJ/wGAAgAJ/wGAAgAR/wGAAgAB/wPxAf8D6gH/A4AB/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wMA AZkCTQH/AZkCTQH/AZkCTQH/AwAJ/wOZAf8DEAH/AwAB/wMDAf8DAAX/AwAB/wGZAk0B/wGZAk0B/wNW
Cf8DmQH/AxEB/wMAAf8DBAH/AwAF/wMAAf8BmQJOAf8BmQJOAf8DVgGxAdUCogH/AVYCXAH/AQABFgEX AbEB1QKiAf8BVQJbAf8BAAEVARYB/wFVAlsC/wH2Av8BAAEVARYC/wHSAfUB/wEAARUBFgL/AeAB5wH/
Af8BVgJcAv8B9gL/AQABFgEXAv8B0gH1Af8BAAEWARcC/wHgAecB/wEAARYBFwH/AQABFgEXAf8BAAEW AQABFQEWAf8BAAEVARYB/wEAARUBFgL/At0B/wNaAeQDMAFMAzIBUAHDAr8S/wHsAfEC/wHbAecC/wHZ
ARcC/wLdAf8DWgHkAzABTAMyAVABwwK/Ev8B7AHxAv8B2wHnAv8B2QHeAv8C1AL/As8C/wLNAv8C0gH/ Ad4C/wLUAv8CzwL/As0C/wLSAf8BxgKtAf8DUwGsAxQBGwT/AZkBAAEaCf8BgAIACf8BgAIAAf8BgAIA
AcYCrQH/A1MBrAMUARsE/wGZAQABGwn/AYACAAn/AYACAAH/AYACAAH/AYACAAH/AYACAAX/AYACAAH/ Af8BgAIAAf8BgAIABf8BgAIAAf8BgAIAAf8BgAIAAf8BGgIAAf8BmQJNAf8BmQJNAf8BmQJNAf8BmQJN
AYACAAH/AYACAAH/ARsCAAH/AZkCTgH/AZkCTgH/AZkCTgH/AZkCTgH/AwAB/wPADf8DzAH/A0cB/wMA Af8DAAH/A8AN/wPMAf8DRgH/AwAF/wMAAf8BmQJNAf8BmQJNAf8DMgFQAcMCvxL/AewB8QL/AdsB5wL/
Bf8DAAH/AZkCTgH/AZkCTgH/AzIBUAHDAr8S/wHsAfEC/wHbAecC/wHZAd4C/wLUAv8CzwL/As0C/wLS AdkB3gL/AtQC/wLPAv8CzQL/AtIB/wHGAq0B/wNTAawDFAEbBAADWgHAA/UK/wL+Av8C5wL/AuMC/wLe
Af8BxgKtAf8DUwGsAxQBGwQAA1oBwAP1Cv8C/gL/AucC/wLjAv8C3gL/AtkC/wLUAv8CzwH/AfUCxwH/ Av8C2QL/AtQC/wLPAf8B9QLHAf8DXwHjAyMBNAMCAQME/wGZAQABGgH/AYACAAX/AYACAAn/AYACAAn/
A18B4wMjATQDAgEDBP8BmQEAARsB/wGAAgAF/wGAAgAJ/wGAAgAJ/wGAAgAF/wGAAgAB/wPxAf8D6gH/ AYACAAX/AYACAAH/A/EB/wPqAf8BGgIAAf8BmQJNAf8BmQJNAf8BmQJNAf8BmQJNAf8DEAH/AzQB/wPA
ARsCAAH/AZkCTgH/AZkCTgH/AZkCTgH/AZkCTgH/AxEB/wM1Af8DwBn/AwAB/wGZAk4B/wGZAk4B/wQA Gf8DAAH/AZkCTQH/AZkCTQH/BAADWgHAA/UK/wL+Av8C5wL/AuMC/wLeAv8C2QL/AtQC/wLPAf8B9QLH
A1oBwAP1Cv8C/gL/AucC/wLjAv8C3gL/AtkC/wLUAv8CzwH/AfUCxwH/A18B4wMjATQDAgEDBAADFwEg Af8DXwHjAyMBNAMCAQMEAAMXASADYgHvA/UG/wL4Av8C7AL/AucC/wLjAv8C3gL/AtkB/wH1As0B/wNt
A2IB7wP1Bv8C+AL/AuwC/wLnAv8C4wL/At4C/wLZAf8B9QLNAf8DbQH3AzABTQMEAQYEAAT/AZkCGwn/ AfcDMAFNAwQBBgQABP8BmQIaCf8BgAIAAf8BgAIACf8BgAIAAf8BgAIADf8BgAIAAf8BgAIAAf8DhgH/
AYACAAH/AYACAAn/AYACAAH/AYACAA3/AYACAAH/AYACAAH/A4YB/wGZAk4B/wGZAk4B/wGZAk4B/wGZ AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AxAB/wMAAf8DEAH/A5kR/wMAAf8BmQJNAf8BmQJN
Ak4B/wGZAk4B/wMRAf8DAAH/AxEB/wOZEf8DAAH/AZkCTgH/AZkCTgH/BAADFwEgA2IB7wP1Bv8C+AL/ Af8EAAMXASADYgHvA/UG/wL4Av8C7AL/AucC/wLjAv8C3gL/AtkB/wH1As0B/wNtAfcDMAFNAwQBBgwA
AuwC/wLnAv8C4wL/At4C/wLZAf8B9QLNAf8DbQH3AzABTQMEAQYMAAMXASADWgHAA8YC/wL3Av8C8gL/ AxcBIANaAcADxgL/AvcC/wLyAv8C7AL/AucC/wLjAf8BxgKxAf8DXgHQAyQBNgMCAQMIAAT/AZkCGi3/
AuwC/wLnAv8C4wH/AcYCsQH/A14B0AMkATYDAgEDCAAE/wGZAhst/wPxAf8D6gH/A4YB/wGZAk4B/wGZ A/EB/wPqAf8DhgH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AxAB/wMA
Ak4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wMRAf8DAAH/AwQB/wNfAf8DzAX/AwAB/wGZ Af8DAwH/A14B/wPMBf8DAAH/AZkCTQH/AZkCTQH/CAADFwEgA1oBwAPGAv8C9wL/AvIC/wLsAv8C5wL/
Ak4B/wGZAk4B/wgAAxcBIANaAcADxgL/AvcC/wLyAv8C7AL/AucC/wLjAf8BxgKxAf8DXgHQAyQBNgMC AuMB/wHGArEB/wNeAdADJAE2AwIBAxgAAzIBUANRAaIDXQHSAYwCiQH/A2AB1ANUAaYDNwFaAwUBBxAA
AQMYAAMyAVADUQGiA10B0gGMAokB/wNgAdQDVAGmAzcBWgMFAQcQAAj/AcwCmS3/A/EB/wPAAf8EAAGZ CP8BzAKZLf8D8QH/A8AB/wQAAZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/AZkCTQH/
Ak4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wGZAk4B/wMEAf8DAAH/ AZkCTQH/AZkCTQH/AwMB/wMAAf8DNAH/AxAB/wGZAk0B/xQAAzIBUANRAaIDXQHSAYwCiQH/A2AB1ANU
AzUB/wMRAf8BmQJOAf8UAAMyAVADUQGiA10B0gGMAokB/wNgAdQDVAGmAzcBWgMFAQcQAAFCAU0BPgcA AaYDNwFaAwUBBxAAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA/8BAAHjA/8B8AEH
AT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAB4wP/AfABBwIAAcED/wHAAQMCAAGAAf8BCAEQ AgABwQP/AcABAwIAAYAB/wEIARABgAEBAwABfwIAAYAEAAE/BwABHwYAAYABDwYAAcABBwYAAeABAwYA
AYABAQMAAX8CAAGABAABPwcAAR8GAAGAAQ8GAAHAAQcGAAHgAQMGAAHwAQEGAAH4BwAB/AcAAf4BCAIA AfABAQYAAfgHAAH8BwAB/gEIAgABgAEBAgAB/wMAAYABAQIAAf8BgAH/AfABwAEDAgAB/wHAAf8B+AHw
AYABAQIAAf8DAAGAAQECAAH/AYAB/wHwAcABAwIAAf8BwAH/AfgB8AEPAgAB4AEDAgABgAEBAeABAwHA AQ8CAAHgAQMCAAGAAQEB4AEDAcABAQQAAcABAQGABQABgAEAAYAFAAGAQQABgAUAAYABAAGAAQEEAAGA
AQEEAAHAAQEBgAUAAYABAAGABQABgEEAAYAFAAGAAQABgAEBBAABgAEBAcABAwQAAcABAwHwAQ8CAAGA AQEBwAEDBAABwAEDAfABDwIAAYABAQHwAQ8L
AQEB8AEPCw==
</value> </value>
</data> </data>
<data name="listChoices.TabIndex" type="System.Int32, mscorlib"> <data name="listChoices.TabIndex" type="System.Int32, mscorlib">
@@ -611,11 +610,17 @@
<data name="&gt;&gt;imageList1.Type" xml:space="preserve"> <data name="&gt;&gt;imageList1.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;backgroundWorker1.Name" xml:space="preserve"> <data name="&gt;&gt;columnHeaderMetadataValue.Name" xml:space="preserve">
<value>backgroundWorker1</value> <value>columnHeaderMetadataValue</value>
</data> </data>
<data name="&gt;&gt;backgroundWorker1.Type" xml:space="preserve"> <data name="&gt;&gt;columnHeaderMetadataValue.Type" xml:space="preserve">
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;columnHeaderMetadataName.Name" xml:space="preserve">
<value>columnHeaderMetadataName</value>
</data>
<data name="&gt;&gt;columnHeaderMetadataName.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;Title.Name" xml:space="preserve"> <data name="&gt;&gt;Title.Name" xml:space="preserve">
<value>Title</value> <value>Title</value>
@@ -641,17 +646,11 @@
<data name="&gt;&gt;Length.Type" xml:space="preserve"> <data name="&gt;&gt;Length.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;columnHeaderMetadataValue.Name" xml:space="preserve"> <data name="&gt;&gt;backgroundWorker1.Name" xml:space="preserve">
<value>columnHeaderMetadataValue</value> <value>backgroundWorker1</value>
</data> </data>
<data name="&gt;&gt;columnHeaderMetadataValue.Type" xml:space="preserve"> <data name="&gt;&gt;backgroundWorker1.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;columnHeaderMetadataName.Name" xml:space="preserve">
<value>columnHeaderMetadataName</value>
</data>
<data name="&gt;&gt;columnHeaderMetadataName.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmChoice</value> <value>frmChoice</value>

115
CUETools/frmSubmit.Designer.cs generated Normal file
View File

@@ -0,0 +1,115 @@
namespace JDP
{
partial class frmSubmit
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSubmit));
this.textBox1 = new System.Windows.Forms.TextBox();
this.buttonOk = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.checkBoxRemember = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.AccessibleDescription = null;
this.textBox1.AccessibleName = null;
resources.ApplyResources(this.textBox1, "textBox1");
this.textBox1.BackColor = System.Drawing.SystemColors.Control;
this.textBox1.BackgroundImage = null;
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Font = null;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.TabStop = false;
//
// buttonOk
//
this.buttonOk.AccessibleDescription = null;
this.buttonOk.AccessibleName = null;
resources.ApplyResources(this.buttonOk, "buttonOk");
this.buttonOk.BackgroundImage = null;
this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOk.Font = null;
this.buttonOk.Name = "buttonOk";
this.buttonOk.UseVisualStyleBackColor = true;
//
// buttonCancel
//
this.buttonCancel.AccessibleDescription = null;
this.buttonCancel.AccessibleName = null;
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.BackgroundImage = null;
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonCancel.Font = null;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
//
// checkBoxRemember
//
this.checkBoxRemember.AccessibleDescription = null;
this.checkBoxRemember.AccessibleName = null;
resources.ApplyResources(this.checkBoxRemember, "checkBoxRemember");
this.checkBoxRemember.BackgroundImage = null;
this.checkBoxRemember.Checked = true;
this.checkBoxRemember.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxRemember.Font = null;
this.checkBoxRemember.Name = "checkBoxRemember";
this.checkBoxRemember.UseVisualStyleBackColor = true;
//
// frmSubmit
//
this.AcceptButton = this.buttonOk;
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.CancelButton = this.buttonCancel;
this.Controls.Add(this.checkBoxRemember);
this.Controls.Add(this.buttonOk);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.textBox1);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = null;
this.Name = "frmSubmit";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button buttonOk;
private System.Windows.Forms.Button buttonCancel;
internal System.Windows.Forms.CheckBox checkBoxRemember;
}
}

18
CUETools/frmSubmit.cs Normal file
View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace JDP
{
public partial class frmSubmit : Form
{
public frmSubmit()
{
InitializeComponent();
}
}
}

View File

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

261
CUETools/frmSubmit.resx Normal file
View File

@@ -0,0 +1,261 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonCancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="&gt;&gt;buttonOk.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;buttonCancel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>476, 97</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CTDB submission confirmation</value>
</data>
<data name="checkBoxRemember.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 17</value>
</data>
<data name="&gt;&gt;checkBoxRemember.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="checkBoxRemember.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxRemember.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="buttonOk.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="buttonOk.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="textBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="buttonOk.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 63</value>
</data>
<data name="&gt;&gt;checkBoxRemember.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>385, 63</value>
</data>
<data name="&gt;&gt;buttonOk.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>460, 45</value>
</data>
<data name="checkBoxRemember.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 69</value>
</data>
<data name="&gt;&gt;buttonOk.Name" xml:space="preserve">
<value>buttonOk</value>
</data>
<data name="buttonOk.Text" xml:space="preserve">
<value>Ok</value>
</data>
<data name="textBox1.Text" xml:space="preserve">
<value>You are about to submit information about this CD to the CUETools Database. This information will help other users to repair their copy of this CD if it contains errors.</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="checkBoxRemember.Text" xml:space="preserve">
<value>Remember my choice</value>
</data>
<data name="checkBoxRemember.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="checkBoxRemember.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;checkBoxRemember.Name" xml:space="preserve">
<value>checkBoxRemember</value>
</data>
<data name="&gt;&gt;buttonOk.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="buttonOk.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmSubmit</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="textBox1.Text" xml:space="preserve">
<value>Предлагается отправить данные об этом диске в базу данных CUETools (CTDB). Это поможет другим пользователям исправить ошибки в их копиях данного диска.</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>Отмена</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="checkBoxRemember.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 17</value>
</data>
<data name="checkBoxRemember.Text" xml:space="preserve">
<value>Запомнить мой выбор</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Подтверждение на отправку данных в CTDB</value>
</data>
</root>