public static Zip64ExtraField GetAndRemoveZip64Block(List <ZipGenericExtraField> extraFields, bool readUncompressedSize, bool readCompressedSize, bool readLocalHeaderOffset, bool readStartDiskNumber)
{
Zip64ExtraField zip64ExtraField = new Zip64ExtraField()
{
_compressedSize = null,
_uncompressedSize = null,
_localHeaderOffset = null,
_startDiskNumber = null
};
List <ZipGenericExtraField> zipGenericExtraFields = new List <ZipGenericExtraField>();
bool flag = false;
foreach (ZipGenericExtraField extraField in extraFields)
{
if (extraField.Tag != 1)
{
continue;
}
zipGenericExtraFields.Add(extraField);
if (flag || !Zip64ExtraField.TryGetZip64BlockFromGenericExtraField(extraField, readUncompressedSize, readCompressedSize, readLocalHeaderOffset, readStartDiskNumber, out zip64ExtraField))
{
continue;
}
flag = true;
}
foreach (ZipGenericExtraField zipGenericExtraField in zipGenericExtraFields)
{
extraFields.Remove(zipGenericExtraField);
}
return(zip64ExtraField);
}