├── .vs └── RDR Explorer │ └── v14 │ └── .suo ├── LICENSE ├── RDR Explorer.sln └── RDR Explorer ├── About.Designer.cs ├── About.cs ├── About.de.resx ├── About.resx ├── About.zh.resx ├── App.config ├── Inc ├── Compression │ ├── BZip2 │ │ ├── BZip2.cs │ │ ├── BZip2Constants.cs │ │ ├── BZip2Exception.cs │ │ ├── BZip2InputStream.cs │ │ └── BZip2OutputStream.cs │ ├── Checksums │ │ ├── Adler32.cs │ │ ├── CRC32.cs │ │ ├── IChecksum.cs │ │ └── StrangeCRC.cs │ ├── Core │ │ ├── FileSystemScanner.cs │ │ ├── INameTransform.cs │ │ ├── IScanFilter.cs │ │ ├── NameFilter.cs │ │ ├── PathFilter.cs │ │ ├── StreamUtils.cs │ │ └── WindowsPathUtils.cs │ ├── Encryption │ │ ├── PkzipClassic.cs │ │ ├── ZipAESStream.cs │ │ └── ZipAESTransform.cs │ ├── GZip │ │ ├── GZIPConstants.cs │ │ ├── GZipException.cs │ │ ├── GzipInputStream.cs │ │ └── GzipOutputStream.cs │ ├── LZX │ │ ├── EndianStream.cs │ │ └── LZX.cs │ ├── Lzw │ │ ├── LzwConstants.cs │ │ ├── LzwException.cs │ │ └── LzwInputStream.cs │ ├── SharpZipBaseException.cs │ ├── Tar │ │ ├── InvalidHeaderException.cs │ │ ├── TarArchive.cs │ │ ├── TarBuffer.cs │ │ ├── TarEntry.cs │ │ ├── TarException.cs │ │ ├── TarHeader.cs │ │ ├── TarInputStream.cs │ │ └── TarOutputStream.cs │ ├── Zip │ │ ├── Comp │ │ │ ├── Deflater.cs │ │ │ ├── DeflaterConstants.cs │ │ │ ├── DeflaterEngine.cs │ │ │ ├── DeflaterHuffman.cs │ │ │ ├── DeflaterPending.cs │ │ │ ├── Inflater.cs │ │ │ ├── InflaterDynHeader.cs │ │ │ ├── InflaterHuffmanTree.cs │ │ │ ├── PendingBuffer.cs │ │ │ └── Streams │ │ │ │ ├── DeflaterOutputStream.cs │ │ │ │ ├── InflaterInputStream.cs │ │ │ │ ├── OutputWindow.cs │ │ │ │ └── StreamManipulator.cs │ │ ├── Compression │ │ │ ├── Deflater.cs │ │ │ ├── DeflaterConstants.cs │ │ │ ├── DeflaterEngine.cs │ │ │ ├── DeflaterHuffman.cs │ │ │ ├── DeflaterPending.cs │ │ │ ├── Inflater.cs │ │ │ ├── InflaterDynHeader.cs │ │ │ ├── InflaterHuffmanTree.cs │ │ │ ├── PendingBuffer.cs │ │ │ └── Streams │ │ │ │ ├── DeflaterOutputStream.cs │ │ │ │ ├── InflaterInputStream.cs │ │ │ │ ├── OutputWindow.cs │ │ │ │ └── StreamManipulator.cs │ │ ├── FastZip.cs │ │ ├── IEntryFactory.cs │ │ ├── WindowsNameTransform.cs │ │ ├── ZipConstants.cs │ │ ├── ZipEntry.cs │ │ ├── ZipEntryFactory.cs │ │ ├── ZipException.cs │ │ ├── ZipExtraData.cs │ │ ├── ZipFile.cs │ │ ├── ZipHelperStream.cs │ │ ├── ZipInputStream.cs │ │ ├── ZipNameTransform.cs │ │ └── ZipOutputStream.cs │ └── zlib │ │ ├── Adler32.cs │ │ ├── Deflate.cs │ │ ├── InfBlocks.cs │ │ ├── InfCodes.cs │ │ ├── InfTree.cs │ │ ├── Inflate.cs │ │ ├── StaticTree.cs │ │ ├── SupportClass.cs │ │ ├── Tree.cs │ │ ├── ZInputStream.cs │ │ ├── ZOutputStream.cs │ │ ├── ZStream.cs │ │ ├── ZStreamException.cs │ │ └── Zlib.cs ├── IniFile.cs └── RageLIB │ ├── KeyStore.cs │ ├── KeyUtil.cs │ ├── KeyUtilRDR.cs │ └── RPF │ ├── Archive.cs │ ├── Common │ ├── BigEndianBinaryReader.cs │ ├── BigEndianBinaryWriter.cs │ ├── BitsStream.cs │ ├── DataUtil.cs │ ├── Directory.cs │ ├── Entry.cs │ ├── File.cs │ ├── Hasher.cs │ └── fileSystemObject.cs │ ├── RPF6 │ ├── DirectoryEntry.cs │ ├── File.cs │ ├── FileEntry.cs │ ├── Header.cs │ ├── MagicId.cs │ ├── TOC.cs │ └── TOCEntry.cs │ ├── RSCTypes.cs │ └── Version6.cs ├── KnownFilenames.txt ├── Main.Designer.cs ├── Main.cs ├── Main.de.resx ├── Main.resx ├── Main.zh.resx ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.de.resx ├── Resources.resx ├── Resources.zh.resx ├── Settings.Designer.cs └── Settings.settings ├── PropertiesLoader.cs ├── RDR Explorer.csproj ├── RPFviewer.Designer.cs ├── RPFviewer.cs ├── RPFviewer.de.resx ├── RPFviewer.resx ├── RPFviewer.zh.resx ├── RSCUnpacker.exe ├── Resources ├── Icon1.ico ├── icon_RPF.ico ├── red_dead_redemption_icon_by_flitskikker-d315kze (1).ico ├── shell32_1.ico ├── shell32_235.ico └── shell32_4.ico ├── Saving.Designer.cs ├── Saving.cs ├── Saving.de.resx ├── Saving.resx ├── Saving.zh.resx ├── logo.png ├── logo_smll.png ├── obj ├── Debug │ ├── DesignTimeResolveAssemblyReferences.cache │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── RDR Explorer.csproj.FileListAbsolute.txt │ ├── RDR Explorer.csproj.GenerateResource.Cache │ ├── RDR Explorer.csprojResolveAssemblyReference.cache │ ├── RDR Explorer.exe │ ├── RDR Explorer.pdb │ ├── RDR_Explorer.About.de.resources │ ├── RDR_Explorer.About.resources │ ├── RDR_Explorer.About.zh.resources │ ├── RDR_Explorer.Main.de.resources │ ├── RDR_Explorer.Main.resources │ ├── RDR_Explorer.Main.zh.resources │ ├── RDR_Explorer.Properties.Resources.de.resources │ ├── RDR_Explorer.Properties.Resources.resources │ ├── RDR_Explorer.Properties.Resources.zh.resources │ ├── RDR_Explorer.RPFviewer.de.resources │ ├── RDR_Explorer.RPFviewer.resources │ ├── RDR_Explorer.RPFviewer.zh.resources │ ├── RDR_Explorer.Saving.de.resources │ ├── RDR_Explorer.Saving.resources │ ├── RDR_Explorer.Saving.zh.resources │ ├── TempPE │ │ └── Properties.Resources.Designer.cs.dll │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ ├── de │ │ └── RDR Explorer.resources.dll │ └── zh │ │ └── RDR Explorer.resources.dll └── Release │ ├── DesignTimeResolveAssemblyReferences.cache │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── RDR Explorer.csproj.FileListAbsolute.txt │ ├── RDR Explorer.csproj.GenerateResource.Cache │ ├── RDR Explorer.csprojResolveAssemblyReference.cache │ ├── RDR Explorer.exe │ ├── RDR Explorer.pdb │ ├── RDR_Explorer.About.de.resources │ ├── RDR_Explorer.About.resources │ ├── RDR_Explorer.About.zh.resources │ ├── RDR_Explorer.Main.de.resources │ ├── RDR_Explorer.Main.resources │ ├── RDR_Explorer.Main.zh.resources │ ├── RDR_Explorer.Properties.Resources.de.resources │ ├── RDR_Explorer.Properties.Resources.resources │ ├── RDR_Explorer.Properties.Resources.zh.resources │ ├── RDR_Explorer.RPFviewer.de.resources │ ├── RDR_Explorer.RPFviewer.resources │ ├── RDR_Explorer.RPFviewer.zh.resources │ ├── RDR_Explorer.Saving.de.resources │ ├── RDR_Explorer.Saving.resources │ ├── RDR_Explorer.Saving.zh.resources │ ├── TempPE │ └── Properties.Resources.Designer.cs.dll │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ ├── de │ └── RDR Explorer.resources.dll │ └── zh │ └── RDR Explorer.resources.dll ├── red_dead_redemption_icon_by_flitskikker-d315kze (1).ico ├── xcompress.dll └── xextool.exe /.vs/RDR Explorer/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/.vs/RDR Explorer/v14/.suo -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 reditec 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /RDR Explorer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.23107.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RDR Explorer", "RDR Explorer\RDR Explorer.csproj", "{719C60A7-787E-4ED2-BABA-1C1F25FE7294}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E8E42E4F-8740-4914-B5BA-2BEF73307EAF}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {719C60A7-787E-4ED2-BABA-1C1F25FE7294}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {719C60A7-787E-4ED2-BABA-1C1F25FE7294}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {719C60A7-787E-4ED2-BABA-1C1F25FE7294}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {719C60A7-787E-4ED2-BABA-1C1F25FE7294}.Release|Any CPU.Build.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | EndGlobal 25 | -------------------------------------------------------------------------------- /RDR Explorer/About.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RDR_Explorer 2 | { 3 | partial class About 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About)); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.label2 = new System.Windows.Forms.Label(); 34 | this.textBox1 = new System.Windows.Forms.TextBox(); 35 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 36 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 37 | this.SuspendLayout(); 38 | // 39 | // label1 40 | // 41 | resources.ApplyResources(this.label1, "label1"); 42 | this.label1.Name = "label1"; 43 | // 44 | // label2 45 | // 46 | resources.ApplyResources(this.label2, "label2"); 47 | this.label2.Name = "label2"; 48 | // 49 | // textBox1 50 | // 51 | this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; 52 | resources.ApplyResources(this.textBox1, "textBox1"); 53 | this.textBox1.Name = "textBox1"; 54 | this.textBox1.ReadOnly = true; 55 | // 56 | // pictureBox1 57 | // 58 | resources.ApplyResources(this.pictureBox1, "pictureBox1"); 59 | this.pictureBox1.Name = "pictureBox1"; 60 | this.pictureBox1.TabStop = false; 61 | // 62 | // About 63 | // 64 | resources.ApplyResources(this, "$this"); 65 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 66 | this.Controls.Add(this.pictureBox1); 67 | this.Controls.Add(this.textBox1); 68 | this.Controls.Add(this.label2); 69 | this.Controls.Add(this.label1); 70 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 71 | this.Name = "About"; 72 | this.Load += new System.EventHandler(this.About_Load); 73 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 74 | this.ResumeLayout(false); 75 | this.PerformLayout(); 76 | 77 | } 78 | 79 | #endregion 80 | 81 | private System.Windows.Forms.Label label1; 82 | private System.Windows.Forms.Label label2; 83 | private System.Windows.Forms.TextBox textBox1; 84 | private System.Windows.Forms.PictureBox pictureBox1; 85 | } 86 | } -------------------------------------------------------------------------------- /RDR Explorer/About.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace RDR_Explorer 12 | { 13 | public partial class About : Form 14 | { 15 | public About() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | private void About_Load(object sender, EventArgs e) 21 | { 22 | textBox1.Select(0,0); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /RDR Explorer/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/BZip2/BZip2.cs: -------------------------------------------------------------------------------- 1 | // BZip2.cs 2 | // 3 | // Copyright (C) 2010 David Pierson 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | // Suppress this in CF and 1.1, not needed. Static classes introduced in C# version 2.0 37 | #if !NETCF_2_0 && !NET_1_1 38 | 39 | using System; 40 | using System.IO; 41 | 42 | namespace ICSharpCode.SharpZipLib.BZip2 { 43 | 44 | /// 45 | /// An example class to demonstrate compression and decompression of BZip2 streams. 46 | /// 47 | public static class BZip2 48 | { 49 | /// 50 | /// Decompress the input writing 51 | /// uncompressed data to the output stream 52 | /// 53 | /// The readable stream containing data to decompress. 54 | /// The output stream to receive the decompressed data. 55 | /// Both streams are closed on completion if true. 56 | public static void Decompress(Stream inStream, Stream outStream, bool isStreamOwner) 57 | { 58 | if (inStream == null || outStream == null) { 59 | throw new Exception("Null Stream"); 60 | } 61 | 62 | try { 63 | using (BZip2InputStream bzipInput = new BZip2InputStream(inStream)) { 64 | bzipInput.IsStreamOwner = isStreamOwner; 65 | Core.StreamUtils.Copy(bzipInput, outStream, new byte[4096]); 66 | } 67 | } finally { 68 | if (isStreamOwner) { 69 | // inStream is closed by the BZip2InputStream if stream owner 70 | outStream.Close(); 71 | } 72 | } 73 | } 74 | 75 | /// 76 | /// Compress the input stream sending 77 | /// result data to output stream 78 | /// 79 | /// The readable stream to compress. 80 | /// The output stream to receive the compressed data. 81 | /// Both streams are closed on completion if true. 82 | /// Block size acts as compression level (1 to 9) with 1 giving 83 | /// the lowest compression and 9 the highest. 84 | public static void Compress(Stream inStream, Stream outStream, bool isStreamOwner, int level) 85 | { 86 | if (inStream == null || outStream == null) { 87 | throw new Exception("Null Stream"); 88 | } 89 | 90 | try { 91 | using (BZip2OutputStream bzipOutput = new BZip2OutputStream(outStream, level)) { 92 | bzipOutput.IsStreamOwner = isStreamOwner; 93 | Core.StreamUtils.Copy(inStream, bzipOutput, new byte[4096]); 94 | } 95 | } finally { 96 | if (isStreamOwner) { 97 | // outStream is closed by the BZip2OutputStream if stream owner 98 | inStream.Close(); 99 | } 100 | } 101 | } 102 | 103 | } 104 | } 105 | #endif 106 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/BZip2/BZip2Exception.cs: -------------------------------------------------------------------------------- 1 | // BZip2.cs 2 | // 3 | // Copyright 2004 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib.BZip2 43 | { 44 | /// 45 | /// BZip2Exception represents exceptions specific to Bzip2 algorithm 46 | /// 47 | #if !NETCF_1_0 && !NETCF_2_0 48 | [Serializable] 49 | #endif 50 | public class BZip2Exception : SharpZipBaseException 51 | { 52 | 53 | #if !NETCF_1_0 && !NETCF_2_0 54 | /// 55 | /// Deserialization constructor 56 | /// 57 | /// for this constructor 58 | /// for this constructor 59 | protected BZip2Exception(SerializationInfo info, StreamingContext context) 60 | : base(info, context) 61 | 62 | { 63 | } 64 | #endif 65 | /// 66 | /// Initialise a new instance of BZip2Exception. 67 | /// 68 | public BZip2Exception() 69 | { 70 | } 71 | 72 | /// 73 | /// Initialise a new instance of BZip2Exception with its message set to message. 74 | /// 75 | /// The message describing the error. 76 | public BZip2Exception(string message) : base(message) 77 | { 78 | } 79 | 80 | /// 81 | /// Initialise an instance of BZip2Exception 82 | /// 83 | /// A message describing the error. 84 | /// The exception that is the cause of the current exception. 85 | public BZip2Exception(string message, Exception exception) 86 | : base(message, exception) 87 | { 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Checksums/IChecksum.cs: -------------------------------------------------------------------------------- 1 | // IChecksum.cs - Interface to compute a data checksum 2 | // Copyright (C) 2001 Mike Krueger 3 | // 4 | // This file was translated from java, it was part of the GNU Classpath 5 | // Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. 6 | // 7 | // This program is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU General Public License 9 | // as published by the Free Software Foundation; either version 2 10 | // of the License, or (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program; if not, write to the Free Software 19 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | // 21 | // Linking this library statically or dynamically with other modules is 22 | // making a combined work based on this library. Thus, the terms and 23 | // conditions of the GNU General Public License cover the whole 24 | // combination. 25 | // 26 | // As a special exception, the copyright holders of this library give you 27 | // permission to link this library with independent modules to produce an 28 | // executable, regardless of the license terms of these independent 29 | // modules, and to copy and distribute the resulting executable under 30 | // terms of your choice, provided that you also meet, for each linked 31 | // independent module, the terms and conditions of the license of that 32 | // module. An independent module is a module which is not derived from 33 | // or based on this library. If you modify this library, you may extend 34 | // this exception to your version of the library, but you are not 35 | // obligated to do so. If you do not wish to do so, delete this 36 | // exception statement from your version. 37 | 38 | namespace ICSharpCode.SharpZipLib.Checksums 39 | { 40 | 41 | /// 42 | /// Interface to compute a data checksum used by checked input/output streams. 43 | /// A data checksum can be updated by one byte or with a byte array. After each 44 | /// update the value of the current checksum can be returned by calling 45 | /// getValue. The complete checksum object can also be reset 46 | /// so it can be used again with new data. 47 | /// 48 | public interface IChecksum 49 | { 50 | /// 51 | /// Returns the data checksum computed so far. 52 | /// 53 | long Value 54 | { 55 | get; 56 | } 57 | 58 | /// 59 | /// Resets the data checksum as if no update was ever called. 60 | /// 61 | void Reset(); 62 | 63 | /// 64 | /// Adds one byte to the data checksum. 65 | /// 66 | /// 67 | /// the data value to add. The high byte of the int is ignored. 68 | /// 69 | void Update(int value); 70 | 71 | /// 72 | /// Updates the data checksum with the bytes taken from the array. 73 | /// 74 | /// 75 | /// buffer an array of bytes 76 | /// 77 | void Update(byte[] buffer); 78 | 79 | /// 80 | /// Adds the byte array to the data checksum. 81 | /// 82 | /// 83 | /// The buffer which contains the data 84 | /// 85 | /// 86 | /// The offset in the buffer where the data starts 87 | /// 88 | /// 89 | /// the number of data bytes to add. 90 | /// 91 | void Update(byte[] buffer, int offset, int count); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Core/INameTransform.cs: -------------------------------------------------------------------------------- 1 | // INameTransform.cs 2 | // 3 | // Copyright 2005 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | namespace ICSharpCode.SharpZipLib.Core 37 | { 38 | /// 39 | /// INameTransform defines how file system names are transformed for use with archives, or vice versa. 40 | /// 41 | public interface INameTransform 42 | { 43 | /// 44 | /// Given a file name determine the transformed value. 45 | /// 46 | /// The name to transform. 47 | /// The transformed file name. 48 | string TransformFile(string name); 49 | 50 | /// 51 | /// Given a directory name determine the transformed value. 52 | /// 53 | /// The name to transform. 54 | /// The transformed directory name 55 | string TransformDirectory(string name); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Core/IScanFilter.cs: -------------------------------------------------------------------------------- 1 | // IScanFilter.cs 2 | // 3 | // Copyright 2006 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | namespace ICSharpCode.SharpZipLib.Core 37 | { 38 | /// 39 | /// Scanning filters support filtering of names. 40 | /// 41 | public interface IScanFilter 42 | { 43 | /// 44 | /// Test a name to see if it 'matches' the filter. 45 | /// 46 | /// The name to test. 47 | /// Returns true if the name matches the filter, false if it does not match. 48 | bool IsMatch(string name); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Core/WindowsPathUtils.cs: -------------------------------------------------------------------------------- 1 | // WindowsPathUtils.cs 2 | // 3 | // Copyright 2007 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | namespace ICSharpCode.SharpZipLib.Core 37 | { 38 | /// 39 | /// WindowsPathUtils provides simple utilities for handling windows paths. 40 | /// 41 | public abstract class WindowsPathUtils 42 | { 43 | /// 44 | /// Initializes a new instance of the class. 45 | /// 46 | internal WindowsPathUtils() 47 | { 48 | } 49 | 50 | /// 51 | /// Remove any path root present in the path 52 | /// 53 | /// A containing path information. 54 | /// The path with the root removed if it was present; path otherwise. 55 | /// Unlike the class the path isnt otherwise checked for validity. 56 | public static string DropPathRoot(string path) 57 | { 58 | string result = path; 59 | 60 | if ( (path != null) && (path.Length > 0) ) { 61 | if ((path[0] == '\\') || (path[0] == '/')) { 62 | // UNC name ? 63 | if ((path.Length > 1) && ((path[1] == '\\') || (path[1] == '/'))) { 64 | int index = 2; 65 | int elements = 2; 66 | 67 | // Scan for two separate elements \\machine\share\restofpath 68 | while ((index <= path.Length) && 69 | (((path[index] != '\\') && (path[index] != '/')) || (--elements > 0))) { 70 | index++; 71 | } 72 | 73 | index++; 74 | 75 | if (index < path.Length) { 76 | result = path.Substring(index); 77 | } 78 | else { 79 | result = ""; 80 | } 81 | } 82 | } 83 | else if ((path.Length > 1) && (path[1] == ':')) { 84 | int dropCount = 2; 85 | if ((path.Length > 2) && ((path[2] == '\\') || (path[2] == '/'))) { 86 | dropCount = 3; 87 | } 88 | result = result.Remove(0, dropCount); 89 | } 90 | } 91 | return result; 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Encryption/ZipAESStream.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ZipAESStream.cs 3 | // 4 | // Copyright 2009 David Pierson 5 | // 6 | // This program is free software; you can redistribute it and/or 7 | // modify it under the terms of the GNU General Public License 8 | // as published by the Free Software Foundation; either version 2 9 | // of the License, or (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program; if not, write to the Free Software 18 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 | // 20 | // Linking this library statically or dynamically with other modules is 21 | // making a combined work based on this library. Thus, the terms and 22 | // conditions of the GNU General Public License cover the whole 23 | // combination. 24 | // 25 | // As a special exception, the copyright holders of this library give you 26 | // permission to link this library with independent modules to produce an 27 | // executable, regardless of the license terms of these independent 28 | // modules, and to copy and distribute the resulting executable under 29 | // terms of your choice, provided that you also meet, for each linked 30 | // independent module, the terms and conditions of the license of that 31 | // module. An independent module is a module which is not derived from 32 | // or based on this library. If you modify this library, you may extend 33 | // this exception to your version of the library, but you are not 34 | // obligated to do so. If you do not wish to do so, delete this 35 | // exception statement from your version. 36 | // 37 | 38 | #if !NET_1_1 && !NETCF_2_0 39 | 40 | using System; 41 | using System.IO; 42 | using System.Security.Cryptography; 43 | 44 | namespace ICSharpCode.SharpZipLib.Encryption { 45 | 46 | // Based on information from http://www.winzip.com/aes_info.htm 47 | // and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ 48 | 49 | /// 50 | /// Encrypts and decrypts AES ZIP 51 | /// 52 | internal class ZipAESStream : CryptoStream { 53 | 54 | /// 55 | /// Constructor 56 | /// 57 | /// The stream on which to perform the cryptographic transformation. 58 | /// Instance of ZipAESTransform 59 | /// Read or Write 60 | public ZipAESStream(Stream stream, ZipAESTransform transform, CryptoStreamMode mode) 61 | : base(stream, transform, mode) { 62 | 63 | _stream = stream; 64 | _transform = transform; 65 | _slideBuffer = new byte[1024]; 66 | 67 | _blockAndAuth = CRYPTO_BLOCK_SIZE + AUTH_CODE_LENGTH; 68 | 69 | // mode: 70 | // CryptoStreamMode.Read means we read from "stream" and pass decrypted to our Read() method. 71 | // Write bypasses this stream and uses the Transform directly. 72 | if (mode != CryptoStreamMode.Read) { 73 | throw new Exception("ZipAESStream only for read"); 74 | } 75 | } 76 | 77 | // The final n bytes of the AES stream contain the Auth Code. 78 | private const int AUTH_CODE_LENGTH = 10; 79 | 80 | private Stream _stream; 81 | private ZipAESTransform _transform; 82 | private byte[] _slideBuffer; 83 | private int _slideBufStartPos; 84 | private int _slideBufFreePos; 85 | // Blocksize is always 16 here, even for AES-256 which has transform.InputBlockSize of 32. 86 | private const int CRYPTO_BLOCK_SIZE = 16; 87 | private int _blockAndAuth; 88 | 89 | /// 90 | /// Reads a sequence of bytes from the current CryptoStream into buffer, 91 | /// and advances the position within the stream by the number of bytes read. 92 | /// 93 | public override int Read(byte[] outBuffer, int offset, int count) { 94 | int nBytes = 0; 95 | while (nBytes < count) { 96 | // Calculate buffer quantities vs read-ahead size, and check for sufficient free space 97 | int byteCount = _slideBufFreePos - _slideBufStartPos; 98 | 99 | // Need to handle final block and Auth Code specially, but don't know total data length. 100 | // Maintain a read-ahead equal to the length of (crypto block + Auth Code). 101 | // When that runs out we can detect these final sections. 102 | int lengthToRead = _blockAndAuth - byteCount; 103 | if (_slideBuffer.Length - _slideBufFreePos < lengthToRead) { 104 | // Shift the data to the beginning of the buffer 105 | int iTo = 0; 106 | for (int iFrom = _slideBufStartPos; iFrom < _slideBufFreePos; iFrom++, iTo++) { 107 | _slideBuffer[iTo] = _slideBuffer[iFrom]; 108 | } 109 | _slideBufFreePos -= _slideBufStartPos; // Note the -= 110 | _slideBufStartPos = 0; 111 | } 112 | int obtained = _stream.Read(_slideBuffer, _slideBufFreePos, lengthToRead); 113 | _slideBufFreePos += obtained; 114 | 115 | // Recalculate how much data we now have 116 | byteCount = _slideBufFreePos - _slideBufStartPos; 117 | if (byteCount >= _blockAndAuth) { 118 | // At least a 16 byte block and an auth code remains. 119 | _transform.TransformBlock(_slideBuffer, 120 | _slideBufStartPos, 121 | CRYPTO_BLOCK_SIZE, 122 | outBuffer, 123 | offset); 124 | nBytes += CRYPTO_BLOCK_SIZE; 125 | offset += CRYPTO_BLOCK_SIZE; 126 | _slideBufStartPos += CRYPTO_BLOCK_SIZE; 127 | } else { 128 | // Last round. 129 | if (byteCount > AUTH_CODE_LENGTH) { 130 | // At least one byte of data plus auth code 131 | int finalBlock = byteCount - AUTH_CODE_LENGTH; 132 | _transform.TransformBlock(_slideBuffer, 133 | _slideBufStartPos, 134 | finalBlock, 135 | outBuffer, 136 | offset); 137 | 138 | nBytes += finalBlock; 139 | _slideBufStartPos += finalBlock; 140 | } 141 | else if (byteCount < AUTH_CODE_LENGTH) 142 | throw new Exception("Internal error missed auth code"); // Coding bug 143 | // Final block done. Check Auth code. 144 | byte[] calcAuthCode = _transform.GetAuthCode(); 145 | for (int i = 0; i < AUTH_CODE_LENGTH; i++) { 146 | if (calcAuthCode[i] != _slideBuffer[_slideBufStartPos + i]) { 147 | throw new Exception("AES Authentication Code does not match. This is a super-CRC check on the data in the file after compression and encryption. \r\n" 148 | + "The file may be damaged."); 149 | } 150 | } 151 | 152 | break; // Reached the auth code 153 | } 154 | } 155 | return nBytes; 156 | } 157 | 158 | /// 159 | /// Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. 160 | /// 161 | /// An array of bytes. This method copies count bytes from buffer to the current stream. 162 | /// The byte offset in buffer at which to begin copying bytes to the current stream. 163 | /// The number of bytes to be written to the current stream. 164 | public override void Write(byte[] buffer, int offset, int count) { 165 | // ZipAESStream is used for reading but not for writing. Writing uses the ZipAESTransform directly. 166 | throw new NotImplementedException(); 167 | } 168 | } 169 | } 170 | #endif -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/GZip/GZIPConstants.cs: -------------------------------------------------------------------------------- 1 | // GZipConstants.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // 5 | // This file was translated from java, it was part of the GNU Classpath 6 | // Copyright (C) 2001 Free Software Foundation, Inc. 7 | // 8 | // This program is free software; you can redistribute it and/or 9 | // modify it under the terms of the GNU General Public License 10 | // as published by the Free Software Foundation; either version 2 11 | // of the License, or (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program; if not, write to the Free Software 20 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 | // 22 | // Linking this library statically or dynamically with other modules is 23 | // making a combined work based on this library. Thus, the terms and 24 | // conditions of the GNU General Public License cover the whole 25 | // combination. 26 | // 27 | // As a special exception, the copyright holders of this library give you 28 | // permission to link this library with independent modules to produce an 29 | // executable, regardless of the license terms of these independent 30 | // modules, and to copy and distribute the resulting executable under 31 | // terms of your choice, provided that you also meet, for each linked 32 | // independent module, the terms and conditions of the license of that 33 | // module. An independent module is a module which is not derived from 34 | // or based on this library. If you modify this library, you may extend 35 | // this exception to your version of the library, but you are not 36 | // obligated to do so. If you do not wish to do so, delete this 37 | // exception statement from your version. 38 | 39 | namespace ICSharpCode.SharpZipLib.GZip 40 | { 41 | 42 | /// 43 | /// This class contains constants used for gzip. 44 | /// 45 | sealed public class GZipConstants 46 | { 47 | /// 48 | /// Magic number found at start of GZIP header 49 | /// 50 | public const int GZIP_MAGIC = 0x1F8B; 51 | 52 | /* The flag byte is divided into individual bits as follows: 53 | 54 | bit 0 FTEXT 55 | bit 1 FHCRC 56 | bit 2 FEXTRA 57 | bit 3 FNAME 58 | bit 4 FCOMMENT 59 | bit 5 reserved 60 | bit 6 reserved 61 | bit 7 reserved 62 | */ 63 | 64 | /// 65 | /// Flag bit mask for text 66 | /// 67 | public const int FTEXT = 0x1; 68 | 69 | /// 70 | /// Flag bitmask for Crc 71 | /// 72 | public const int FHCRC = 0x2; 73 | 74 | /// 75 | /// Flag bit mask for extra 76 | /// 77 | public const int FEXTRA = 0x4; 78 | 79 | /// 80 | /// flag bitmask for name 81 | /// 82 | public const int FNAME = 0x8; 83 | 84 | /// 85 | /// flag bit mask indicating comment is present 86 | /// 87 | public const int FCOMMENT = 0x10; 88 | 89 | /// 90 | /// Initialise default instance. 91 | /// 92 | /// Constructor is private to prevent instances being created. 93 | GZipConstants() 94 | { 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/GZip/GZipException.cs: -------------------------------------------------------------------------------- 1 | // GZipException.cs 2 | // 3 | // Copyright 2004 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib.GZip 43 | { 44 | /// 45 | /// GZipException represents a Gzip specific exception 46 | /// 47 | #if !NETCF_1_0 && !NETCF_2_0 48 | [Serializable] 49 | #endif 50 | public class GZipException : SharpZipBaseException 51 | { 52 | #if !NETCF_1_0 && !NETCF_2_0 53 | /// 54 | /// Deserialization constructor 55 | /// 56 | /// for this constructor 57 | /// for this constructor 58 | protected GZipException(SerializationInfo info, StreamingContext context) 59 | : base(info, context) 60 | 61 | { 62 | } 63 | #endif 64 | 65 | /// 66 | /// Initialise a new instance of GZipException 67 | /// 68 | public GZipException() 69 | { 70 | } 71 | 72 | /// 73 | /// Initialise a new instance of GZipException with its message string. 74 | /// 75 | /// A that describes the error. 76 | public GZipException(string message) 77 | : base(message) 78 | { 79 | } 80 | 81 | /// 82 | /// Initialise a new instance of . 83 | /// 84 | /// A that describes the error. 85 | /// The that caused this exception. 86 | public GZipException(string message, Exception innerException) 87 | : base (message, innerException) 88 | { 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Lzw/LzwConstants.cs: -------------------------------------------------------------------------------- 1 | // LzwConstants.cs 2 | // 3 | // Copyright (C) 2009 Gabriel Burca 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | namespace ICSharpCode.SharpZipLib.LZW { 37 | 38 | /// 39 | /// This class contains constants used for LZW 40 | /// 41 | sealed public class LzwConstants { 42 | /// 43 | /// Magic number found at start of LZW header: 0x1f 0x9d 44 | /// 45 | public const int MAGIC = 0x1f9d; 46 | 47 | /// 48 | /// Maximum number of bits per code 49 | /// 50 | public const int MAX_BITS = 16; 51 | 52 | /* 3rd header byte: 53 | * bit 0..4 Number of compression bits 54 | * bit 5 Extended header 55 | * bit 6 Free 56 | * bit 7 Block mode 57 | */ 58 | 59 | /// 60 | /// Mask for 'number of compression bits' 61 | /// 62 | public const int BIT_MASK = 0x1f; 63 | 64 | /// 65 | /// Indicates the presence of a fourth header byte 66 | /// 67 | public const int EXTENDED_MASK = 0x20; 68 | //public const int FREE_MASK = 0x40; 69 | 70 | /// 71 | /// Reserved bits 72 | /// 73 | public const int RESERVED_MASK = 0x60; 74 | 75 | /// 76 | /// Block compression: if table is full and compression rate is dropping, 77 | /// clear the dictionary. 78 | /// 79 | public const int BLOCK_MODE_MASK = 0x80; 80 | 81 | /// 82 | /// LZW file header size (in bytes) 83 | /// 84 | public const int HDR_SIZE = 3; 85 | 86 | /// 87 | /// Initial number of bits per code 88 | /// 89 | public const int INIT_BITS = 9; 90 | 91 | LzwConstants() { 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Lzw/LzwException.cs: -------------------------------------------------------------------------------- 1 | // LzwException.cs 2 | // 3 | // Copyright (C) 2009 Gabriel Burca 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib.LZW 43 | { 44 | 45 | /// 46 | /// LzwException represents a LZW specific exception 47 | /// 48 | #if !NETCF_1_0 && !NETCF_2_0 49 | [Serializable] 50 | #endif 51 | public class LzwException : SharpZipBaseException 52 | { 53 | 54 | #if !NETCF_1_0 && !NETCF_2_0 55 | /// 56 | /// Deserialization constructor 57 | /// 58 | /// for this constructor 59 | /// for this constructor 60 | protected LzwException(SerializationInfo info, StreamingContext context) 61 | : base(info, context) { 62 | } 63 | #endif 64 | 65 | /// 66 | /// Initialise a new instance of LzwException 67 | /// 68 | public LzwException() { 69 | } 70 | 71 | /// 72 | /// Initialise a new instance of LzwException with its message string. 73 | /// 74 | /// A that describes the error. 75 | public LzwException(string message) 76 | : base(message) { 77 | } 78 | 79 | /// 80 | /// Initialise a new instance of . 81 | /// 82 | /// A that describes the error. 83 | /// The that caused this exception. 84 | public LzwException(string message, Exception innerException) 85 | : base(message, innerException) { 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/SharpZipBaseException.cs: -------------------------------------------------------------------------------- 1 | // SharpZipBaseException.cs 2 | // 3 | // Copyright 2004 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib 43 | { 44 | /// 45 | /// SharpZipBaseException is the base exception class for the SharpZipLibrary. 46 | /// All library exceptions are derived from this. 47 | /// 48 | /// NOTE: Not all exceptions thrown will be derived from this class. 49 | /// A variety of other exceptions are possible for example 50 | #if !NETCF_1_0 && !NETCF_2_0 51 | [Serializable] 52 | #endif 53 | public class SharpZipBaseException : ApplicationException 54 | { 55 | #if !NETCF_1_0 && !NETCF_2_0 56 | /// 57 | /// Deserialization constructor 58 | /// 59 | /// for this constructor 60 | /// for this constructor 61 | protected SharpZipBaseException(SerializationInfo info, StreamingContext context ) 62 | : base( info, context ) 63 | { 64 | } 65 | #endif 66 | 67 | /// 68 | /// Initializes a new instance of the SharpZipBaseException class. 69 | /// 70 | public SharpZipBaseException() 71 | { 72 | } 73 | 74 | /// 75 | /// Initializes a new instance of the SharpZipBaseException class with a specified error message. 76 | /// 77 | /// A message describing the exception. 78 | public SharpZipBaseException(string message) 79 | : base(message) 80 | { 81 | } 82 | 83 | /// 84 | /// Initializes a new instance of the SharpZipBaseException class with a specified 85 | /// error message and a reference to the inner exception that is the cause of this exception. 86 | /// 87 | /// A message describing the exception. 88 | /// The inner exception 89 | public SharpZipBaseException(string message, Exception innerException) 90 | : base(message, innerException) 91 | { 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Tar/InvalidHeaderException.cs: -------------------------------------------------------------------------------- 1 | // InvalidHeaderException.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib.Tar { 43 | 44 | /// 45 | /// This exception is used to indicate that there is a problem 46 | /// with a TAR archive header. 47 | /// 48 | #if !NETCF_1_0 && !NETCF_2_0 49 | [Serializable] 50 | #endif 51 | public class InvalidHeaderException : TarException 52 | { 53 | 54 | #if !NETCF_1_0 && !NETCF_2_0 55 | /// 56 | /// Deserialization constructor 57 | /// 58 | /// for this constructor 59 | /// for this constructor 60 | protected InvalidHeaderException(SerializationInfo information, StreamingContext context) 61 | : base(information, context) 62 | 63 | { 64 | } 65 | #endif 66 | 67 | /// 68 | /// Initialise a new instance of the InvalidHeaderException class. 69 | /// 70 | public InvalidHeaderException() 71 | { 72 | } 73 | 74 | /// 75 | /// Initialises a new instance of the InvalidHeaderException class with a specified message. 76 | /// 77 | /// Message describing the exception cause. 78 | public InvalidHeaderException(string message) 79 | : base(message) 80 | { 81 | } 82 | 83 | /// 84 | /// Initialise a new instance of InvalidHeaderException 85 | /// 86 | /// Message describing the problem. 87 | /// The exception that is the cause of the current exception. 88 | public InvalidHeaderException(string message, Exception exception) 89 | : base(message, exception) 90 | { 91 | } 92 | } 93 | } 94 | 95 | /* The original Java file had this header: 96 | ** Authored by Timothy Gerard Endres 97 | ** 98 | ** 99 | ** This work has been placed into the public domain. 100 | ** You may use this work in any way and for any purpose you wish. 101 | ** 102 | ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, 103 | ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR 104 | ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY 105 | ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR 106 | ** REDISTRIBUTION OF THIS SOFTWARE. 107 | ** 108 | */ 109 | 110 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Tar/TarException.cs: -------------------------------------------------------------------------------- 1 | // TarException.cs 2 | // 3 | // Copyright 2004 John Reilly 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software 17 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | // 19 | // Linking this library statically or dynamically with other modules is 20 | // making a combined work based on this library. Thus, the terms and 21 | // conditions of the GNU General Public License cover the whole 22 | // combination. 23 | // 24 | // As a special exception, the copyright holders of this library give you 25 | // permission to link this library with independent modules to produce an 26 | // executable, regardless of the license terms of these independent 27 | // modules, and to copy and distribute the resulting executable under 28 | // terms of your choice, provided that you also meet, for each linked 29 | // independent module, the terms and conditions of the license of that 30 | // module. An independent module is a module which is not derived from 31 | // or based on this library. If you modify this library, you may extend 32 | // this exception to your version of the library, but you are not 33 | // obligated to do so. If you do not wish to do so, delete this 34 | // exception statement from your version. 35 | 36 | using System; 37 | 38 | #if !NETCF_1_0 && !NETCF_2_0 39 | using System.Runtime.Serialization; 40 | #endif 41 | 42 | namespace ICSharpCode.SharpZipLib.Tar { 43 | 44 | /// 45 | /// TarExceptions are used for exceptions specific to tar classes and code. 46 | /// 47 | #if !NETCF_1_0 && !NETCF_2_0 48 | [Serializable] 49 | #endif 50 | public class TarException : SharpZipBaseException 51 | { 52 | #if !NETCF_1_0 && !NETCF_2_0 53 | /// 54 | /// Deserialization constructor 55 | /// 56 | /// for this constructor 57 | /// for this constructor 58 | protected TarException(SerializationInfo info, StreamingContext context) 59 | : base(info, context) 60 | 61 | { 62 | } 63 | #endif 64 | 65 | /// 66 | /// Initialises a new instance of the TarException class. 67 | /// 68 | public TarException() 69 | { 70 | } 71 | 72 | /// 73 | /// Initialises a new instance of the TarException class with a specified message. 74 | /// 75 | /// The message that describes the error. 76 | public TarException(string message) 77 | : base(message) 78 | { 79 | } 80 | 81 | /// 82 | /// 83 | /// 84 | /// A message describing the error. 85 | /// The exception that is the cause of the current exception. 86 | public TarException(string message, Exception exception) 87 | : base(message, exception) 88 | { 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Comp/DeflaterConstants.cs: -------------------------------------------------------------------------------- 1 | // DeflaterConstants.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // Copyright (C) 2004 John Reilly 5 | // 6 | // This file was translated from java, it was part of the GNU Classpath 7 | // Copyright (C) 2001 Free Software Foundation, Inc. 8 | // 9 | // This program is free software; you can redistribute it and/or 10 | // modify it under the terms of the GNU General Public License 11 | // as published by the Free Software Foundation; either version 2 12 | // of the License, or (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program; if not, write to the Free Software 21 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 | // 23 | // Linking this library statically or dynamically with other modules is 24 | // making a combined work based on this library. Thus, the terms and 25 | // conditions of the GNU General Public License cover the whole 26 | // combination. 27 | // 28 | // As a special exception, the copyright holders of this library give you 29 | // permission to link this library with independent modules to produce an 30 | // executable, regardless of the license terms of these independent 31 | // modules, and to copy and distribute the resulting executable under 32 | // terms of your choice, provided that you also meet, for each linked 33 | // independent module, the terms and conditions of the license of that 34 | // module. An independent module is a module which is not derived from 35 | // or based on this library. If you modify this library, you may extend 36 | // this exception to your version of the library, but you are not 37 | // obligated to do so. If you do not wish to do so, delete this 38 | // exception statement from your version. 39 | 40 | using System; 41 | 42 | namespace ICSharpCode.SharpZipLib.Zip.Compression 43 | { 44 | 45 | /// 46 | /// This class contains constants used for deflation. 47 | /// 48 | public class DeflaterConstants 49 | { 50 | /// 51 | /// Set to true to enable debugging 52 | /// 53 | public const bool DEBUGGING = false; 54 | 55 | /// 56 | /// Written to Zip file to identify a stored block 57 | /// 58 | public const int STORED_BLOCK = 0; 59 | 60 | /// 61 | /// Identifies static tree in Zip file 62 | /// 63 | public const int STATIC_TREES = 1; 64 | 65 | /// 66 | /// Identifies dynamic tree in Zip file 67 | /// 68 | public const int DYN_TREES = 2; 69 | 70 | /// 71 | /// Header flag indicating a preset dictionary for deflation 72 | /// 73 | public const int PRESET_DICT = 0x20; 74 | 75 | /// 76 | /// Sets internal buffer sizes for Huffman encoding 77 | /// 78 | public const int DEFAULT_MEM_LEVEL = 8; 79 | 80 | /// 81 | /// Internal compression engine constant 82 | /// 83 | public const int MAX_MATCH = 258; 84 | 85 | /// 86 | /// Internal compression engine constant 87 | /// 88 | public const int MIN_MATCH = 3; 89 | 90 | /// 91 | /// Internal compression engine constant 92 | /// 93 | public const int MAX_WBITS = 15; 94 | 95 | /// 96 | /// Internal compression engine constant 97 | /// 98 | public const int WSIZE = 1 << MAX_WBITS; 99 | 100 | /// 101 | /// Internal compression engine constant 102 | /// 103 | public const int WMASK = WSIZE - 1; 104 | 105 | /// 106 | /// Internal compression engine constant 107 | /// 108 | public const int HASH_BITS = DEFAULT_MEM_LEVEL + 7; 109 | 110 | /// 111 | /// Internal compression engine constant 112 | /// 113 | public const int HASH_SIZE = 1 << HASH_BITS; 114 | 115 | /// 116 | /// Internal compression engine constant 117 | /// 118 | public const int HASH_MASK = HASH_SIZE - 1; 119 | 120 | /// 121 | /// Internal compression engine constant 122 | /// 123 | public const int HASH_SHIFT = (HASH_BITS + MIN_MATCH - 1) / MIN_MATCH; 124 | 125 | /// 126 | /// Internal compression engine constant 127 | /// 128 | public const int MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; 129 | 130 | /// 131 | /// Internal compression engine constant 132 | /// 133 | public const int MAX_DIST = WSIZE - MIN_LOOKAHEAD; 134 | 135 | /// 136 | /// Internal compression engine constant 137 | /// 138 | public const int PENDING_BUF_SIZE = 1 << (DEFAULT_MEM_LEVEL + 8); 139 | 140 | /// 141 | /// Internal compression engine constant 142 | /// 143 | public static int MAX_BLOCK_SIZE = Math.Min(65535, PENDING_BUF_SIZE - 5); 144 | 145 | /// 146 | /// Internal compression engine constant 147 | /// 148 | public const int DEFLATE_STORED = 0; 149 | 150 | /// 151 | /// Internal compression engine constant 152 | /// 153 | public const int DEFLATE_FAST = 1; 154 | 155 | /// 156 | /// Internal compression engine constant 157 | /// 158 | public const int DEFLATE_SLOW = 2; 159 | 160 | /// 161 | /// Internal compression engine constant 162 | /// 163 | public static int[] GOOD_LENGTH = { 0, 4, 4, 4, 4, 8, 8, 8, 32, 32 }; 164 | 165 | /// 166 | /// Internal compression engine constant 167 | /// 168 | public static int[] MAX_LAZY = { 0, 4, 5, 6, 4, 16, 16, 32, 128, 258 }; 169 | 170 | /// 171 | /// Internal compression engine constant 172 | /// 173 | public static int[] NICE_LENGTH = { 0, 8, 16, 32, 16, 32, 128, 128, 258, 258 }; 174 | 175 | /// 176 | /// Internal compression engine constant 177 | /// 178 | public static int[] MAX_CHAIN = { 0, 4, 8, 32, 16, 32, 128, 256, 1024, 4096 }; 179 | 180 | /// 181 | /// Internal compression engine constant 182 | /// 183 | public static int[] COMPR_FUNC = { 0, 1, 1, 1, 1, 2, 2, 2, 2, 2 }; 184 | 185 | } 186 | } 187 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Comp/DeflaterPending.cs: -------------------------------------------------------------------------------- 1 | // DeflaterPending.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // Copyright (C) 2004 John Reilly 5 | // 6 | // This file was translated from java, it was part of the GNU Classpath 7 | // Copyright (C) 2001 Free Software Foundation, Inc. 8 | // 9 | // This program is free software; you can redistribute it and/or 10 | // modify it under the terms of the GNU General Public License 11 | // as published by the Free Software Foundation; either version 2 12 | // of the License, or (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program; if not, write to the Free Software 21 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 | // 23 | // Linking this library statically or dynamically with other modules is 24 | // making a combined work based on this library. Thus, the terms and 25 | // conditions of the GNU General Public License cover the whole 26 | // combination. 27 | // 28 | // As a special exception, the copyright holders of this library give you 29 | // permission to link this library with independent modules to produce an 30 | // executable, regardless of the license terms of these independent 31 | // modules, and to copy and distribute the resulting executable under 32 | // terms of your choice, provided that you also meet, for each linked 33 | // independent module, the terms and conditions of the license of that 34 | // module. An independent module is a module which is not derived from 35 | // or based on this library. If you modify this library, you may extend 36 | // this exception to your version of the library, but you are not 37 | // obligated to do so. If you do not wish to do so, delete this 38 | // exception statement from your version. 39 | 40 | namespace ICSharpCode.SharpZipLib.Zip.Compression 41 | { 42 | 43 | /// 44 | /// This class stores the pending output of the Deflater. 45 | /// 46 | /// author of the original java version : Jochen Hoenicke 47 | /// 48 | public class DeflaterPending : PendingBuffer 49 | { 50 | /// 51 | /// Construct instance with default buffer size 52 | /// 53 | public DeflaterPending() : base(DeflaterConstants.PENDING_BUF_SIZE) 54 | { 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Comp/InflaterDynHeader.cs: -------------------------------------------------------------------------------- 1 | // InflaterDynHeader.cs 2 | // Copyright (C) 2001 Mike Krueger 3 | // 4 | // This file was translated from java, it was part of the GNU Classpath 5 | // Copyright (C) 2001 Free Software Foundation, Inc. 6 | // 7 | // This program is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU General Public License 9 | // as published by the Free Software Foundation; either version 2 10 | // of the License, or (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program; if not, write to the Free Software 19 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | // 21 | // Linking this library statically or dynamically with other modules is 22 | // making a combined work based on this library. Thus, the terms and 23 | // conditions of the GNU General Public License cover the whole 24 | // combination. 25 | // 26 | // As a special exception, the copyright holders of this library give you 27 | // permission to link this library with independent modules to produce an 28 | // executable, regardless of the license terms of these independent 29 | // modules, and to copy and distribute the resulting executable under 30 | // terms of your choice, provided that you also meet, for each linked 31 | // independent module, the terms and conditions of the license of that 32 | // module. An independent module is a module which is not derived from 33 | // or based on this library. If you modify this library, you may extend 34 | // this exception to your version of the library, but you are not 35 | // obligated to do so. If you do not wish to do so, delete this 36 | // exception statement from your version. 37 | 38 | using System; 39 | 40 | using ICSharpCode.SharpZipLib.Zip.Compression.Streams; 41 | 42 | namespace ICSharpCode.SharpZipLib.Zip.Compression 43 | { 44 | 45 | class InflaterDynHeader 46 | { 47 | #region Constants 48 | const int LNUM = 0; 49 | const int DNUM = 1; 50 | const int BLNUM = 2; 51 | const int BLLENS = 3; 52 | const int LENS = 4; 53 | const int REPS = 5; 54 | 55 | static readonly int[] repMin = { 3, 3, 11 }; 56 | static readonly int[] repBits = { 2, 3, 7 }; 57 | 58 | static readonly int[] BL_ORDER = 59 | { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; 60 | 61 | #endregion 62 | 63 | #region Constructors 64 | public InflaterDynHeader() 65 | { 66 | } 67 | #endregion 68 | 69 | public bool Decode(StreamManipulator input) 70 | { 71 | decode_loop: 72 | for (;;) { 73 | switch (mode) { 74 | case LNUM: 75 | lnum = input.PeekBits(5); 76 | if (lnum < 0) { 77 | return false; 78 | } 79 | lnum += 257; 80 | input.DropBits(5); 81 | // System.err.println("LNUM: "+lnum); 82 | mode = DNUM; 83 | goto case DNUM; // fall through 84 | case DNUM: 85 | dnum = input.PeekBits(5); 86 | if (dnum < 0) { 87 | return false; 88 | } 89 | dnum++; 90 | input.DropBits(5); 91 | // System.err.println("DNUM: "+dnum); 92 | num = lnum+dnum; 93 | litdistLens = new byte[num]; 94 | mode = BLNUM; 95 | goto case BLNUM; // fall through 96 | case BLNUM: 97 | blnum = input.PeekBits(4); 98 | if (blnum < 0) { 99 | return false; 100 | } 101 | blnum += 4; 102 | input.DropBits(4); 103 | blLens = new byte[19]; 104 | ptr = 0; 105 | // System.err.println("BLNUM: "+blnum); 106 | mode = BLLENS; 107 | goto case BLLENS; // fall through 108 | case BLLENS: 109 | while (ptr < blnum) { 110 | int len = input.PeekBits(3); 111 | if (len < 0) { 112 | return false; 113 | } 114 | input.DropBits(3); 115 | // System.err.println("blLens["+BL_ORDER[ptr]+"]: "+len); 116 | blLens[BL_ORDER[ptr]] = (byte) len; 117 | ptr++; 118 | } 119 | blTree = new InflaterHuffmanTree(blLens); 120 | blLens = null; 121 | ptr = 0; 122 | mode = LENS; 123 | goto case LENS; // fall through 124 | case LENS: 125 | { 126 | int symbol; 127 | while (((symbol = blTree.GetSymbol(input)) & ~15) == 0) { 128 | /* Normal case: symbol in [0..15] */ 129 | 130 | // System.err.println("litdistLens["+ptr+"]: "+symbol); 131 | litdistLens[ptr++] = lastLen = (byte)symbol; 132 | 133 | if (ptr == num) { 134 | /* Finished */ 135 | return true; 136 | } 137 | } 138 | 139 | /* need more input ? */ 140 | if (symbol < 0) { 141 | return false; 142 | } 143 | 144 | /* otherwise repeat code */ 145 | if (symbol >= 17) { 146 | /* repeat zero */ 147 | // System.err.println("repeating zero"); 148 | lastLen = 0; 149 | } else { 150 | if (ptr == 0) { 151 | throw new SharpZipBaseException(); 152 | } 153 | } 154 | repSymbol = symbol-16; 155 | } 156 | mode = REPS; 157 | goto case REPS; // fall through 158 | case REPS: 159 | { 160 | int bits = repBits[repSymbol]; 161 | int count = input.PeekBits(bits); 162 | if (count < 0) { 163 | return false; 164 | } 165 | input.DropBits(bits); 166 | count += repMin[repSymbol]; 167 | // System.err.println("litdistLens repeated: "+count); 168 | 169 | if (ptr + count > num) { 170 | throw new SharpZipBaseException(); 171 | } 172 | while (count-- > 0) { 173 | litdistLens[ptr++] = lastLen; 174 | } 175 | 176 | if (ptr == num) { 177 | /* Finished */ 178 | return true; 179 | } 180 | } 181 | mode = LENS; 182 | goto decode_loop; 183 | } 184 | } 185 | } 186 | 187 | public InflaterHuffmanTree BuildLitLenTree() 188 | { 189 | byte[] litlenLens = new byte[lnum]; 190 | Array.Copy(litdistLens, 0, litlenLens, 0, lnum); 191 | return new InflaterHuffmanTree(litlenLens); 192 | } 193 | 194 | public InflaterHuffmanTree BuildDistTree() 195 | { 196 | byte[] distLens = new byte[dnum]; 197 | Array.Copy(litdistLens, lnum, distLens, 0, dnum); 198 | return new InflaterHuffmanTree(distLens); 199 | } 200 | 201 | #region Instance Fields 202 | byte[] blLens; 203 | byte[] litdistLens; 204 | 205 | InflaterHuffmanTree blTree; 206 | 207 | /// 208 | /// The current decode mode 209 | /// 210 | int mode; 211 | int lnum, dnum, blnum, num; 212 | int repSymbol; 213 | byte lastLen; 214 | int ptr; 215 | #endregion 216 | 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Compression/DeflaterConstants.cs: -------------------------------------------------------------------------------- 1 | // DeflaterConstants.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // Copyright (C) 2004 John Reilly 5 | // 6 | // This file was translated from java, it was part of the GNU Classpath 7 | // Copyright (C) 2001 Free Software Foundation, Inc. 8 | // 9 | // This program is free software; you can redistribute it and/or 10 | // modify it under the terms of the GNU General Public License 11 | // as published by the Free Software Foundation; either version 2 12 | // of the License, or (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program; if not, write to the Free Software 21 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 | // 23 | // Linking this library statically or dynamically with other modules is 24 | // making a combined work based on this library. Thus, the terms and 25 | // conditions of the GNU General Public License cover the whole 26 | // combination. 27 | // 28 | // As a special exception, the copyright holders of this library give you 29 | // permission to link this library with independent modules to produce an 30 | // executable, regardless of the license terms of these independent 31 | // modules, and to copy and distribute the resulting executable under 32 | // terms of your choice, provided that you also meet, for each linked 33 | // independent module, the terms and conditions of the license of that 34 | // module. An independent module is a module which is not derived from 35 | // or based on this library. If you modify this library, you may extend 36 | // this exception to your version of the library, but you are not 37 | // obligated to do so. If you do not wish to do so, delete this 38 | // exception statement from your version. 39 | 40 | using System; 41 | 42 | namespace ICSharpCode.SharpZipLib.Zip.Compression 43 | { 44 | 45 | /// 46 | /// This class contains constants used for deflation. 47 | /// 48 | public class DeflaterConstants 49 | { 50 | /// 51 | /// Set to true to enable debugging 52 | /// 53 | public const bool DEBUGGING = false; 54 | 55 | /// 56 | /// Written to Zip file to identify a stored block 57 | /// 58 | public const int STORED_BLOCK = 0; 59 | 60 | /// 61 | /// Identifies static tree in Zip file 62 | /// 63 | public const int STATIC_TREES = 1; 64 | 65 | /// 66 | /// Identifies dynamic tree in Zip file 67 | /// 68 | public const int DYN_TREES = 2; 69 | 70 | /// 71 | /// Header flag indicating a preset dictionary for deflation 72 | /// 73 | public const int PRESET_DICT = 0x20; 74 | 75 | /// 76 | /// Sets internal buffer sizes for Huffman encoding 77 | /// 78 | public const int DEFAULT_MEM_LEVEL = 8; 79 | 80 | /// 81 | /// Internal compression engine constant 82 | /// 83 | public const int MAX_MATCH = 258; 84 | 85 | /// 86 | /// Internal compression engine constant 87 | /// 88 | public const int MIN_MATCH = 3; 89 | 90 | /// 91 | /// Internal compression engine constant 92 | /// 93 | public const int MAX_WBITS = 15; 94 | 95 | /// 96 | /// Internal compression engine constant 97 | /// 98 | public const int WSIZE = 1 << MAX_WBITS; 99 | 100 | /// 101 | /// Internal compression engine constant 102 | /// 103 | public const int WMASK = WSIZE - 1; 104 | 105 | /// 106 | /// Internal compression engine constant 107 | /// 108 | public const int HASH_BITS = DEFAULT_MEM_LEVEL + 7; 109 | 110 | /// 111 | /// Internal compression engine constant 112 | /// 113 | public const int HASH_SIZE = 1 << HASH_BITS; 114 | 115 | /// 116 | /// Internal compression engine constant 117 | /// 118 | public const int HASH_MASK = HASH_SIZE - 1; 119 | 120 | /// 121 | /// Internal compression engine constant 122 | /// 123 | public const int HASH_SHIFT = (HASH_BITS + MIN_MATCH - 1) / MIN_MATCH; 124 | 125 | /// 126 | /// Internal compression engine constant 127 | /// 128 | public const int MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; 129 | 130 | /// 131 | /// Internal compression engine constant 132 | /// 133 | public const int MAX_DIST = WSIZE - MIN_LOOKAHEAD; 134 | 135 | /// 136 | /// Internal compression engine constant 137 | /// 138 | public const int PENDING_BUF_SIZE = 1 << (DEFAULT_MEM_LEVEL + 8); 139 | 140 | /// 141 | /// Internal compression engine constant 142 | /// 143 | public static int MAX_BLOCK_SIZE = Math.Min(65535, PENDING_BUF_SIZE - 5); 144 | 145 | /// 146 | /// Internal compression engine constant 147 | /// 148 | public const int DEFLATE_STORED = 0; 149 | 150 | /// 151 | /// Internal compression engine constant 152 | /// 153 | public const int DEFLATE_FAST = 1; 154 | 155 | /// 156 | /// Internal compression engine constant 157 | /// 158 | public const int DEFLATE_SLOW = 2; 159 | 160 | /// 161 | /// Internal compression engine constant 162 | /// 163 | public static int[] GOOD_LENGTH = { 0, 4, 4, 4, 4, 8, 8, 8, 32, 32 }; 164 | 165 | /// 166 | /// Internal compression engine constant 167 | /// 168 | public static int[] MAX_LAZY = { 0, 4, 5, 6, 4, 16, 16, 32, 128, 258 }; 169 | 170 | /// 171 | /// Internal compression engine constant 172 | /// 173 | public static int[] NICE_LENGTH = { 0, 8, 16, 32, 16, 32, 128, 128, 258, 258 }; 174 | 175 | /// 176 | /// Internal compression engine constant 177 | /// 178 | public static int[] MAX_CHAIN = { 0, 4, 8, 32, 16, 32, 128, 256, 1024, 4096 }; 179 | 180 | /// 181 | /// Internal compression engine constant 182 | /// 183 | public static int[] COMPR_FUNC = { 0, 1, 1, 1, 1, 2, 2, 2, 2, 2 }; 184 | 185 | } 186 | } 187 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Compression/DeflaterPending.cs: -------------------------------------------------------------------------------- 1 | // DeflaterPending.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // Copyright (C) 2004 John Reilly 5 | // 6 | // This file was translated from java, it was part of the GNU Classpath 7 | // Copyright (C) 2001 Free Software Foundation, Inc. 8 | // 9 | // This program is free software; you can redistribute it and/or 10 | // modify it under the terms of the GNU General Public License 11 | // as published by the Free Software Foundation; either version 2 12 | // of the License, or (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program; if not, write to the Free Software 21 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 | // 23 | // Linking this library statically or dynamically with other modules is 24 | // making a combined work based on this library. Thus, the terms and 25 | // conditions of the GNU General Public License cover the whole 26 | // combination. 27 | // 28 | // As a special exception, the copyright holders of this library give you 29 | // permission to link this library with independent modules to produce an 30 | // executable, regardless of the license terms of these independent 31 | // modules, and to copy and distribute the resulting executable under 32 | // terms of your choice, provided that you also meet, for each linked 33 | // independent module, the terms and conditions of the license of that 34 | // module. An independent module is a module which is not derived from 35 | // or based on this library. If you modify this library, you may extend 36 | // this exception to your version of the library, but you are not 37 | // obligated to do so. If you do not wish to do so, delete this 38 | // exception statement from your version. 39 | 40 | namespace ICSharpCode.SharpZipLib.Zip.Compression 41 | { 42 | 43 | /// 44 | /// This class stores the pending output of the Deflater. 45 | /// 46 | /// author of the original java version : Jochen Hoenicke 47 | /// 48 | public class DeflaterPending : PendingBuffer 49 | { 50 | /// 51 | /// Construct instance with default buffer size 52 | /// 53 | public DeflaterPending() : base(DeflaterConstants.PENDING_BUF_SIZE) 54 | { 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/Compression/InflaterDynHeader.cs: -------------------------------------------------------------------------------- 1 | // InflaterDynHeader.cs 2 | // Copyright (C) 2001 Mike Krueger 3 | // 4 | // This file was translated from java, it was part of the GNU Classpath 5 | // Copyright (C) 2001 Free Software Foundation, Inc. 6 | // 7 | // This program is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU General Public License 9 | // as published by the Free Software Foundation; either version 2 10 | // of the License, or (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program; if not, write to the Free Software 19 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | // 21 | // Linking this library statically or dynamically with other modules is 22 | // making a combined work based on this library. Thus, the terms and 23 | // conditions of the GNU General Public License cover the whole 24 | // combination. 25 | // 26 | // As a special exception, the copyright holders of this library give you 27 | // permission to link this library with independent modules to produce an 28 | // executable, regardless of the license terms of these independent 29 | // modules, and to copy and distribute the resulting executable under 30 | // terms of your choice, provided that you also meet, for each linked 31 | // independent module, the terms and conditions of the license of that 32 | // module. An independent module is a module which is not derived from 33 | // or based on this library. If you modify this library, you may extend 34 | // this exception to your version of the library, but you are not 35 | // obligated to do so. If you do not wish to do so, delete this 36 | // exception statement from your version. 37 | 38 | using System; 39 | 40 | using ICSharpCode.SharpZipLib.Zip.Compression.Streams; 41 | 42 | namespace ICSharpCode.SharpZipLib.Zip.Compression 43 | { 44 | 45 | class InflaterDynHeader 46 | { 47 | #region Constants 48 | const int LNUM = 0; 49 | const int DNUM = 1; 50 | const int BLNUM = 2; 51 | const int BLLENS = 3; 52 | const int LENS = 4; 53 | const int REPS = 5; 54 | 55 | static readonly int[] repMin = { 3, 3, 11 }; 56 | static readonly int[] repBits = { 2, 3, 7 }; 57 | 58 | static readonly int[] BL_ORDER = 59 | { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; 60 | 61 | #endregion 62 | 63 | #region Constructors 64 | public InflaterDynHeader() 65 | { 66 | } 67 | #endregion 68 | 69 | public bool Decode(StreamManipulator input) 70 | { 71 | decode_loop: 72 | for (;;) { 73 | switch (mode) { 74 | case LNUM: 75 | lnum = input.PeekBits(5); 76 | if (lnum < 0) { 77 | return false; 78 | } 79 | lnum += 257; 80 | input.DropBits(5); 81 | // System.err.println("LNUM: "+lnum); 82 | mode = DNUM; 83 | goto case DNUM; // fall through 84 | case DNUM: 85 | dnum = input.PeekBits(5); 86 | if (dnum < 0) { 87 | return false; 88 | } 89 | dnum++; 90 | input.DropBits(5); 91 | // System.err.println("DNUM: "+dnum); 92 | num = lnum+dnum; 93 | litdistLens = new byte[num]; 94 | mode = BLNUM; 95 | goto case BLNUM; // fall through 96 | case BLNUM: 97 | blnum = input.PeekBits(4); 98 | if (blnum < 0) { 99 | return false; 100 | } 101 | blnum += 4; 102 | input.DropBits(4); 103 | blLens = new byte[19]; 104 | ptr = 0; 105 | // System.err.println("BLNUM: "+blnum); 106 | mode = BLLENS; 107 | goto case BLLENS; // fall through 108 | case BLLENS: 109 | while (ptr < blnum) { 110 | int len = input.PeekBits(3); 111 | if (len < 0) { 112 | return false; 113 | } 114 | input.DropBits(3); 115 | // System.err.println("blLens["+BL_ORDER[ptr]+"]: "+len); 116 | blLens[BL_ORDER[ptr]] = (byte) len; 117 | ptr++; 118 | } 119 | blTree = new InflaterHuffmanTree(blLens); 120 | blLens = null; 121 | ptr = 0; 122 | mode = LENS; 123 | goto case LENS; // fall through 124 | case LENS: 125 | { 126 | int symbol; 127 | while (((symbol = blTree.GetSymbol(input)) & ~15) == 0) { 128 | /* Normal case: symbol in [0..15] */ 129 | 130 | // System.err.println("litdistLens["+ptr+"]: "+symbol); 131 | litdistLens[ptr++] = lastLen = (byte)symbol; 132 | 133 | if (ptr == num) { 134 | /* Finished */ 135 | return true; 136 | } 137 | } 138 | 139 | /* need more input ? */ 140 | if (symbol < 0) { 141 | return false; 142 | } 143 | 144 | /* otherwise repeat code */ 145 | if (symbol >= 17) { 146 | /* repeat zero */ 147 | // System.err.println("repeating zero"); 148 | lastLen = 0; 149 | } else { 150 | if (ptr == 0) { 151 | throw new SharpZipBaseException(); 152 | } 153 | } 154 | repSymbol = symbol-16; 155 | } 156 | mode = REPS; 157 | goto case REPS; // fall through 158 | case REPS: 159 | { 160 | int bits = repBits[repSymbol]; 161 | int count = input.PeekBits(bits); 162 | if (count < 0) { 163 | return false; 164 | } 165 | input.DropBits(bits); 166 | count += repMin[repSymbol]; 167 | // System.err.println("litdistLens repeated: "+count); 168 | 169 | if (ptr + count > num) { 170 | throw new SharpZipBaseException(); 171 | } 172 | while (count-- > 0) { 173 | litdistLens[ptr++] = lastLen; 174 | } 175 | 176 | if (ptr == num) { 177 | /* Finished */ 178 | return true; 179 | } 180 | } 181 | mode = LENS; 182 | goto decode_loop; 183 | } 184 | } 185 | } 186 | 187 | public InflaterHuffmanTree BuildLitLenTree() 188 | { 189 | byte[] litlenLens = new byte[lnum]; 190 | Array.Copy(litdistLens, 0, litlenLens, 0, lnum); 191 | return new InflaterHuffmanTree(litlenLens); 192 | } 193 | 194 | public InflaterHuffmanTree BuildDistTree() 195 | { 196 | byte[] distLens = new byte[dnum]; 197 | Array.Copy(litdistLens, lnum, distLens, 0, dnum); 198 | return new InflaterHuffmanTree(distLens); 199 | } 200 | 201 | #region Instance Fields 202 | byte[] blLens; 203 | byte[] litdistLens; 204 | 205 | InflaterHuffmanTree blTree; 206 | 207 | /// 208 | /// The current decode mode 209 | /// 210 | int mode; 211 | int lnum, dnum, blnum, num; 212 | int repSymbol; 213 | byte lastLen; 214 | int ptr; 215 | #endregion 216 | 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/IEntryFactory.cs: -------------------------------------------------------------------------------- 1 | // IEntryFactory.cs 2 | // 3 | // Copyright 2006 John Reilly 4 | // 5 | // Copyright (C) 2001 Free Software Foundation, Inc. 6 | // 7 | // This program is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU General Public License 9 | // as published by the Free Software Foundation; either version 2 10 | // of the License, or (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program; if not, write to the Free Software 19 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | // 21 | // Linking this library statically or dynamically with other modules is 22 | // making a combined work based on this library. Thus, the terms and 23 | // conditions of the GNU General Public License cover the whole 24 | // combination. 25 | // 26 | // As a special exception, the copyright holders of this library give you 27 | // permission to link this library with independent modules to produce an 28 | // executable, regardless of the license terms of these independent 29 | // modules, and to copy and distribute the resulting executable under 30 | // terms of your choice, provided that you also meet, for each linked 31 | // independent module, the terms and conditions of the license of that 32 | // module. An independent module is a module which is not derived from 33 | // or based on this library. If you modify this library, you may extend 34 | // this exception to your version of the library, but you are not 35 | // obligated to do so. If you do not wish to do so, delete this 36 | // exception statement from your version. 37 | 38 | using ICSharpCode.SharpZipLib.Core; 39 | 40 | namespace ICSharpCode.SharpZipLib.Zip 41 | { 42 | /// 43 | /// Defines factory methods for creating new values. 44 | /// 45 | public interface IEntryFactory 46 | { 47 | /// 48 | /// Create a for a file given its name 49 | /// 50 | /// The name of the file to create an entry for. 51 | /// Returns a file entry based on the passed. 52 | ZipEntry MakeFileEntry(string fileName); 53 | 54 | /// 55 | /// Create a for a file given its name 56 | /// 57 | /// The name of the file to create an entry for. 58 | /// If true get details from the file system if the file exists. 59 | /// Returns a file entry based on the passed. 60 | ZipEntry MakeFileEntry(string fileName, bool useFileSystem); 61 | 62 | /// 63 | /// Create a for a directory given its name 64 | /// 65 | /// The name of the directory to create an entry for. 66 | /// Returns a directory entry based on the passed. 67 | ZipEntry MakeDirectoryEntry(string directoryName); 68 | 69 | /// 70 | /// Create a for a directory given its name 71 | /// 72 | /// The name of the directory to create an entry for. 73 | /// If true get details from the file system for this directory if it exists. 74 | /// Returns a directory entry based on the passed. 75 | ZipEntry MakeDirectoryEntry(string directoryName, bool useFileSystem); 76 | 77 | /// 78 | /// Get/set the applicable. 79 | /// 80 | INameTransform NameTransform { get; set; } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/Zip/ZipException.cs: -------------------------------------------------------------------------------- 1 | // ZipException.cs 2 | // 3 | // Copyright (C) 2001 Mike Krueger 4 | // 5 | // This file was translated from java, it was part of the GNU Classpath 6 | // Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. 7 | // 8 | // This program is free software; you can redistribute it and/or 9 | // modify it under the terms of the GNU General Public License 10 | // as published by the Free Software Foundation; either version 2 11 | // of the License, or (at your option) any later version. 12 | // 13 | // This program is distributed in the hope that it will be useful, 14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | // GNU General Public License for more details. 17 | // 18 | // You should have received a copy of the GNU General Public License 19 | // along with this program; if not, write to the Free Software 20 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 | // 22 | // Linking this library statically or dynamically with other modules is 23 | // making a combined work based on this library. Thus, the terms and 24 | // conditions of the GNU General Public License cover the whole 25 | // combination. 26 | // 27 | // As a special exception, the copyright holders of this library give you 28 | // permission to link this library with independent modules to produce an 29 | // executable, regardless of the license terms of these independent 30 | // modules, and to copy and distribute the resulting executable under 31 | // terms of your choice, provided that you also meet, for each linked 32 | // independent module, the terms and conditions of the license of that 33 | // module. An independent module is a module which is not derived from 34 | // or based on this library. If you modify this library, you may extend 35 | // this exception to your version of the library, but you are not 36 | // obligated to do so. If you do not wish to do so, delete this 37 | // exception statement from your version. 38 | 39 | using System; 40 | 41 | #if !NETCF_1_0 && !NETCF_2_0 42 | using System.Runtime.Serialization; 43 | #endif 44 | 45 | namespace ICSharpCode.SharpZipLib.Zip 46 | { 47 | 48 | /// 49 | /// Represents exception conditions specific to Zip archive handling 50 | /// 51 | #if !NETCF_1_0 && !NETCF_2_0 52 | [Serializable] 53 | #endif 54 | public class ZipException : SharpZipBaseException 55 | { 56 | #if !NETCF_1_0 && !NETCF_2_0 57 | /// 58 | /// Deserialization constructor 59 | /// 60 | /// for this constructor 61 | /// for this constructor 62 | protected ZipException(SerializationInfo info, StreamingContext context ) 63 | : base( info, context ) 64 | { 65 | } 66 | #endif 67 | 68 | /// 69 | /// Initializes a new instance of the ZipException class. 70 | /// 71 | public ZipException() 72 | { 73 | } 74 | 75 | /// 76 | /// Initializes a new instance of the ZipException class with a specified error message. 77 | /// 78 | /// The error message that explains the reason for the exception. 79 | public ZipException(string message) 80 | : base(message) 81 | { 82 | } 83 | 84 | /// 85 | /// Initialise a new instance of ZipException. 86 | /// 87 | /// A message describing the error. 88 | /// The exception that is the cause of the current exception. 89 | public ZipException(string message, Exception exception) 90 | : base(message, exception) 91 | { 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/zlib/Adler32.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006, ComponentAce 2 | // http://www.componentace.com 3 | // All rights reserved. 4 | 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | // Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | // Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | // Neither the name of ComponentAce nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 10 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | 12 | 13 | 14 | /* 15 | Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved. 16 | 17 | Redistribution and use in source and binary forms, with or without 18 | modification, are permitted provided that the following conditions are met: 19 | 20 | 1. Redistributions of source code must retain the above copyright notice, 21 | this list of conditions and the following disclaimer. 22 | 23 | 2. Redistributions in binary form must reproduce the above copyright 24 | notice, this list of conditions and the following disclaimer in 25 | the documentation and/or other materials provided with the distribution. 26 | 27 | 3. The names of the authors may not be used to endorse or promote products 28 | derived from this software without specific prior written permission. 29 | 30 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 31 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 32 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, 33 | INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, 34 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 35 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 36 | OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 37 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 38 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 39 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 40 | */ 41 | /* 42 | * This program is based on zlib-1.1.3, so all credit should go authors 43 | * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) 44 | * and contributors of zlib. 45 | */ 46 | using System; 47 | namespace ComponentAce.Compression.Libs.zlib 48 | { 49 | 50 | sealed class Adler32 51 | { 52 | 53 | // largest prime smaller than 65536 54 | private const int BASE = 65521; 55 | // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 56 | private const int NMAX = 5552; 57 | 58 | internal long adler32(long adler, byte[] buf, int index, int len) 59 | { 60 | if (buf == null) 61 | { 62 | return 1L; 63 | } 64 | 65 | long s1 = adler & 0xffff; 66 | long s2 = (adler >> 16) & 0xffff; 67 | int k; 68 | 69 | while (len > 0) 70 | { 71 | k = len < NMAX?len:NMAX; 72 | len -= k; 73 | while (k >= 16) 74 | { 75 | s1 += (buf[index++] & 0xff); s2 += s1; 76 | s1 += (buf[index++] & 0xff); s2 += s1; 77 | s1 += (buf[index++] & 0xff); s2 += s1; 78 | s1 += (buf[index++] & 0xff); s2 += s1; 79 | s1 += (buf[index++] & 0xff); s2 += s1; 80 | s1 += (buf[index++] & 0xff); s2 += s1; 81 | s1 += (buf[index++] & 0xff); s2 += s1; 82 | s1 += (buf[index++] & 0xff); s2 += s1; 83 | s1 += (buf[index++] & 0xff); s2 += s1; 84 | s1 += (buf[index++] & 0xff); s2 += s1; 85 | s1 += (buf[index++] & 0xff); s2 += s1; 86 | s1 += (buf[index++] & 0xff); s2 += s1; 87 | s1 += (buf[index++] & 0xff); s2 += s1; 88 | s1 += (buf[index++] & 0xff); s2 += s1; 89 | s1 += (buf[index++] & 0xff); s2 += s1; 90 | s1 += (buf[index++] & 0xff); s2 += s1; 91 | k -= 16; 92 | } 93 | if (k != 0) 94 | { 95 | do 96 | { 97 | s1 += (buf[index++] & 0xff); s2 += s1; 98 | } 99 | while (--k != 0); 100 | } 101 | s1 %= BASE; 102 | s2 %= BASE; 103 | } 104 | return (s2 << 16) | s1; 105 | } 106 | 107 | } 108 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/zlib/StaticTree.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006, ComponentAce 2 | // http://www.componentace.com 3 | // All rights reserved. 4 | 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | // Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | // Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | // Neither the name of ComponentAce nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 10 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | 12 | /* 13 | Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved. 14 | 15 | Redistribution and use in source and binary forms, with or without 16 | modification, are permitted provided that the following conditions are met: 17 | 18 | 1. Redistributions of source code must retain the above copyright notice, 19 | this list of conditions and the following disclaimer. 20 | 21 | 2. Redistributions in binary form must reproduce the above copyright 22 | notice, this list of conditions and the following disclaimer in 23 | the documentation and/or other materials provided with the distribution. 24 | 25 | 3. The names of the authors may not be used to endorse or promote products 26 | derived from this software without specific prior written permission. 27 | 28 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 29 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 30 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, 31 | INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, 32 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 33 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 34 | OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 35 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 36 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 37 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38 | */ 39 | /* 40 | * This program is based on zlib-1.1.3, so all credit should go authors 41 | * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) 42 | * and contributors of zlib. 43 | */ 44 | using System; 45 | namespace ComponentAce.Compression.Libs.zlib 46 | { 47 | 48 | sealed class StaticTree 49 | { 50 | private const int MAX_BITS = 15; 51 | 52 | private const int BL_CODES = 19; 53 | private const int D_CODES = 30; 54 | private const int LITERALS = 256; 55 | private const int LENGTH_CODES = 29; 56 | private static readonly int L_CODES = (LITERALS + 1 + LENGTH_CODES); 57 | 58 | // Bit length codes must not exceed MAX_BL_BITS bits 59 | internal const int MAX_BL_BITS = 7; 60 | 61 | internal static readonly short[] static_ltree = new short[]{12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7 62 | , 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8}; 63 | 64 | internal static readonly short[] static_dtree = new short[]{0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5}; 65 | 66 | internal static StaticTree static_l_desc; 67 | 68 | internal static StaticTree static_d_desc; 69 | 70 | internal static StaticTree static_bl_desc; 71 | 72 | internal short[] static_tree; // static tree or null 73 | internal int[] extra_bits; // extra bits for each code or null 74 | internal int extra_base; // base index for extra_bits 75 | internal int elems; // max number of elements in the tree 76 | internal int max_length; // max bit length for the codes 77 | 78 | internal StaticTree(short[] static_tree, int[] extra_bits, int extra_base, int elems, int max_length) 79 | { 80 | this.static_tree = static_tree; 81 | this.extra_bits = extra_bits; 82 | this.extra_base = extra_base; 83 | this.elems = elems; 84 | this.max_length = max_length; 85 | } 86 | static StaticTree() 87 | { 88 | static_l_desc = new StaticTree(static_ltree, Tree.extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); 89 | static_d_desc = new StaticTree(static_dtree, Tree.extra_dbits, 0, D_CODES, MAX_BITS); 90 | static_bl_desc = new StaticTree(null, Tree.extra_blbits, 0, BL_CODES, MAX_BL_BITS); 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/zlib/SupportClass.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | 4 | 5 | namespace ComponentAce.Compression.Libs.zlib 6 | { 7 | public class SupportClass 8 | { 9 | /// 10 | /// This method returns the literal value received 11 | /// 12 | /// The literal to return 13 | /// The received value 14 | public static long Identity(long literal) 15 | { 16 | return literal; 17 | } 18 | 19 | /// 20 | /// This method returns the literal value received 21 | /// 22 | /// The literal to return 23 | /// The received value 24 | public static ulong Identity(ulong literal) 25 | { 26 | return literal; 27 | } 28 | 29 | /// 30 | /// This method returns the literal value received 31 | /// 32 | /// The literal to return 33 | /// The received value 34 | public static float Identity(float literal) 35 | { 36 | return literal; 37 | } 38 | 39 | /// 40 | /// This method returns the literal value received 41 | /// 42 | /// The literal to return 43 | /// The received value 44 | public static double Identity(double literal) 45 | { 46 | return literal; 47 | } 48 | 49 | /*******************************/ 50 | /// 51 | /// Performs an unsigned bitwise right shift with the specified number 52 | /// 53 | /// Number to operate on 54 | /// Ammount of bits to shift 55 | /// The resulting number from the shift operation 56 | public static int URShift(int number, int bits) 57 | { 58 | if ( number >= 0) 59 | return number >> bits; 60 | else 61 | return (number >> bits) + (2 << ~bits); 62 | } 63 | 64 | /// 65 | /// Performs an unsigned bitwise right shift with the specified number 66 | /// 67 | /// Number to operate on 68 | /// Ammount of bits to shift 69 | /// The resulting number from the shift operation 70 | public static int URShift(int number, long bits) 71 | { 72 | return URShift(number, (int)bits); 73 | } 74 | 75 | /// 76 | /// Performs an unsigned bitwise right shift with the specified number 77 | /// 78 | /// Number to operate on 79 | /// Ammount of bits to shift 80 | /// The resulting number from the shift operation 81 | public static long URShift(long number, int bits) 82 | { 83 | if ( number >= 0) 84 | return number >> bits; 85 | else 86 | return (number >> bits) + (2L << ~bits); 87 | } 88 | 89 | /// 90 | /// Performs an unsigned bitwise right shift with the specified number 91 | /// 92 | /// Number to operate on 93 | /// Ammount of bits to shift 94 | /// The resulting number from the shift operation 95 | public static long URShift(long number, long bits) 96 | { 97 | return URShift(number, (int)bits); 98 | } 99 | 100 | /*******************************/ 101 | /// Reads a number of characters from the current source Stream and writes the data to the target array at the specified index. 102 | /// The source Stream to read from. 103 | /// Contains the array of characteres read from the source Stream. 104 | /// The starting index of the target array. 105 | /// The maximum number of characters to read from the source Stream. 106 | /// The number of characters read. The number will be less than or equal to count depending on the data available in the source Stream. Returns -1 if the end of the stream is reached. 107 | public static System.Int32 ReadInput(System.IO.Stream sourceStream, byte[] target, int start, int count) 108 | { 109 | // Returns 0 bytes if not enough space in target 110 | if (target.Length == 0) 111 | return 0; 112 | 113 | byte[] receiver = new byte[target.Length]; 114 | int bytesRead = sourceStream.Read(receiver, start, count); 115 | 116 | // Returns -1 if EOF 117 | if (bytesRead == 0) 118 | return -1; 119 | 120 | for(int i = start; i < start + bytesRead; i++) 121 | target[i] = (byte)receiver[i]; 122 | 123 | return bytesRead; 124 | } 125 | 126 | /// Reads a number of characters from the current source TextReader and writes the data to the target array at the specified index. 127 | /// The source TextReader to read from 128 | /// Contains the array of characteres read from the source TextReader. 129 | /// The starting index of the target array. 130 | /// The maximum number of characters to read from the source TextReader. 131 | /// The number of characters read. The number will be less than or equal to count depending on the data available in the source TextReader. Returns -1 if the end of the stream is reached. 132 | public static System.Int32 ReadInput(System.IO.TextReader sourceTextReader, byte[] target, int start, int count) 133 | { 134 | // Returns 0 bytes if not enough space in target 135 | if (target.Length == 0) return 0; 136 | 137 | char[] charArray = new char[target.Length]; 138 | int bytesRead = sourceTextReader.Read(charArray, start, count); 139 | 140 | // Returns -1 if EOF 141 | if (bytesRead == 0) return -1; 142 | 143 | for(int index=start; index 150 | /// Converts a string to an array of bytes 151 | /// 152 | /// The string to be converted 153 | /// The new array of bytes 154 | public static byte[] ToByteArray(System.String sourceString) 155 | { 156 | return System.Text.UTF8Encoding.UTF8.GetBytes(sourceString); 157 | } 158 | 159 | /// 160 | /// Converts an array of bytes to an array of chars 161 | /// 162 | /// The array of bytes to convert 163 | /// The new array of chars 164 | public static char[] ToCharArray(byte[] byteArray) 165 | { 166 | return System.Text.UTF8Encoding.UTF8.GetChars(byteArray); 167 | } 168 | 169 | 170 | } 171 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/Compression/zlib/ZInputStream.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006, ComponentAce 2 | // http://www.componentace.com 3 | // All rights reserved. 4 | 5 | // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | // Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | // Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | // Neither the name of ComponentAce nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 10 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | 12 | /* 13 | Copyright (c) 2001 Lapo Luchini. 14 | 15 | Redistribution and use in source and binary forms, with or without 16 | modification, are permitted provided that the following conditions are met: 17 | 18 | 1. Redistributions of source code must retain the above copyright notice, 19 | this list of conditions and the following disclaimer. 20 | 21 | 2. Redistributions in binary form must reproduce the above copyright 22 | notice, this list of conditions and the following disclaimer in 23 | the documentation and/or other materials provided with the distribution. 24 | 25 | 3. The names of the authors may not be used to endorse or promote products 26 | derived from this software without specific prior written permission. 27 | 28 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 29 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 30 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS 31 | OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, 32 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 33 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 34 | OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 35 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 36 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 37 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38 | */ 39 | /* 40 | * This program is based on zlib-1.1.3, so all credit should go authors 41 | * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) 42 | * and contributors of zlib. 43 | */ 44 | using System; 45 | namespace ComponentAce.Compression.Libs.zlib 46 | { 47 | 48 | public class ZInputStream:System.IO.BinaryReader 49 | { 50 | internal void InitBlock() 51 | { 52 | flush = zlibConst.Z_NO_FLUSH; 53 | buf = new byte[bufsize]; 54 | } 55 | virtual public int FlushMode 56 | { 57 | get 58 | { 59 | return (flush); 60 | } 61 | 62 | set 63 | { 64 | this.flush = value; 65 | } 66 | 67 | } 68 | /// Returns the total number of bytes input so far. 69 | virtual public long TotalIn 70 | { 71 | get 72 | { 73 | return z.total_in; 74 | } 75 | 76 | } 77 | /// Returns the total number of bytes output so far. 78 | virtual public long TotalOut 79 | { 80 | get 81 | { 82 | return z.total_out; 83 | } 84 | 85 | } 86 | 87 | protected ZStream z = new ZStream(); 88 | protected int bufsize = 512; 89 | protected int flush; 90 | protected byte[] buf, buf1 = new byte[1]; 91 | protected bool compress; 92 | 93 | internal System.IO.Stream in_Renamed = null; 94 | 95 | public ZInputStream(System.IO.Stream in_Renamed):base(in_Renamed) 96 | { 97 | InitBlock(); 98 | this.in_Renamed = in_Renamed; 99 | z.inflateInit(); 100 | compress = false; 101 | z.next_in = buf; 102 | z.next_in_index = 0; 103 | z.avail_in = 0; 104 | } 105 | 106 | public ZInputStream(System.IO.Stream in_Renamed, int level):base(in_Renamed) 107 | { 108 | InitBlock(); 109 | this.in_Renamed = in_Renamed; 110 | z.deflateInit(level); 111 | compress = true; 112 | z.next_in = buf; 113 | z.next_in_index = 0; 114 | z.avail_in = 0; 115 | } 116 | 117 | /*public int available() throws IOException { 118 | return inf.finished() ? 0 : 1; 119 | }*/ 120 | 121 | public override int Read() 122 | { 123 | if (read(buf1, 0, 1) == - 1) 124 | return (- 1); 125 | return (buf1[0] & 0xFF); 126 | } 127 | 128 | internal bool nomoreinput = false; 129 | 130 | public int read(byte[] b, int off, int len) 131 | { 132 | if (len == 0) 133 | return (0); 134 | int err; 135 | z.next_out = b; 136 | z.next_out_index = off; 137 | z.avail_out = len; 138 | do 139 | { 140 | if ((z.avail_in == 0) && (!nomoreinput)) 141 | { 142 | // if buffer is empty and more input is avaiable, refill it 143 | z.next_in_index = 0; 144 | z.avail_in = SupportClass.ReadInput(in_Renamed, buf, 0, bufsize); //(bufsize 0; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/KeyStore.cs: -------------------------------------------------------------------------------- 1 | /**********************************************************************\ 2 | 3 | RageLib 4 | Copyright (C) 2008 Arushan/Aru 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program. If not, see . 18 | 19 | \**********************************************************************/ 20 | 21 | namespace RageLib.Common 22 | { 23 | public static class KeyStore 24 | { 25 | public delegate byte[] KeyLoader(); 26 | 27 | private static byte[] _aesKey; 28 | private static KeyLoader _keyLoader; 29 | public static string gameEXE; 30 | static KeyStore() 31 | { 32 | // Default Key Loader 33 | SetKeyLoader( () => 34 | { 35 | var util = new KeyUtilRDR(); 36 | return util.FindKey(gameEXE,"RDR"); 37 | } ); 38 | } 39 | 40 | public static void SetKeyLoader(KeyLoader loader) 41 | { 42 | _keyLoader = loader; 43 | } 44 | 45 | public static byte[] AESKey 46 | { 47 | get 48 | { 49 | if (_aesKey == null) 50 | { 51 | _aesKey = _keyLoader(); 52 | } 53 | return _aesKey; 54 | } 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/KeyUtil.cs: -------------------------------------------------------------------------------- 1 | /**********************************************************************\ 2 | 3 | RageLib 4 | Copyright (C) 2008 Arushan/Aru 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program. If not, see . 18 | 19 | \**********************************************************************/ 20 | 21 | using System; 22 | using System.IO; 23 | using System.Security.Cryptography; 24 | using Microsoft.Win32; 25 | using System.Diagnostics; 26 | 27 | namespace RageLib.Common 28 | { 29 | 30 | public abstract class KeyUtil 31 | { 32 | public static string MYgameExe; 33 | public abstract string ExecutableName { get; } 34 | protected abstract uint[] SearchOffsets { get; } 35 | public byte[] FindKey( string gamePath, string gameName ) 36 | { 37 | 38 | byte[] key = null; 39 | ProcessStartInfo startInfo = new ProcessStartInfo("xextool.exe"); 40 | startInfo.Arguments = "-b " + Path.GetTempPath() + "base.bin " + "\"" + MYgameExe + "\""; 41 | startInfo.UseShellExecute = false; 42 | startInfo.CreateNoWindow = true; 43 | Process BINextractor = Process.Start(startInfo); 44 | BINextractor.WaitForExit(); 45 | if(File.Exists(Path.GetTempPath() + "\\base.bin ")) 46 | { 47 | var fs = new FileStream(Path.GetTempPath() + "\\base.bin ", FileMode.Open, FileAccess.Read); 48 | foreach (var u in SearchOffsets) 49 | { 50 | if (u <= fs.Length - 32) 51 | { 52 | var tempKey = new byte[32]; 53 | fs.Seek(u, SeekOrigin.Begin); 54 | fs.Read(tempKey, 0, 32); 55 | var hash = BitConverter.ToString(SHA1.Create().ComputeHash(tempKey)).Replace("-", ""); 56 | if (hash == "87862497EE46855372B51C7A324A2BB5CD66F4AF") 57 | { 58 | key = tempKey; 59 | break; 60 | } 61 | } 62 | } 63 | fs.Close(); 64 | } 65 | File.Delete(Path.GetTempPath() + "\\base.bin "); 66 | return key; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/KeyUtilRDR.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace RageLib.Common 6 | { 7 | public class KeyUtilRDR : KeyUtil 8 | { 9 | public override string ExecutableName 10 | { 11 | get { return "default.xex"; } 12 | } 13 | 14 | protected override uint[] SearchOffsets 15 | { 16 | get 17 | { 18 | return new uint[] 19 | { 20 | //Offsets of the XEX files 21 | 0xF87278, //Red Dead Redemption 1-Disk: Title Update #9 22 | 0xFBA018, //Red Dead Redemption 1-Disk: Title Update #8 23 | 0xFBA078, // GOTY Edition - Retail Version & Red Dead Redemption 1-Disk: Title Update #7 24 | 0xFB89F8, //Red Dead Redemption 1-Disk: Title Update #6 25 | 0xF98088, //Red Dead Redemption 1-Disk: Title Update #5 26 | 0xF846D8, //Red Dead Redemption 1-Disk: Title Update #2 & #4 27 | 0xF846E8, //Red Dead Redemption 1-Disk: Title Update #3 28 | 0xF872A8, // GOTY Edition - Title Update #1 29 | 0xF87268, //Zombie DLC: Title Update #7 30 | 0xFBA038, //Zombie DLC: Title Update #6 31 | 0xFBA098, //Zombie DLC: Title Update #5 32 | 0xF844D8, //Red Dead Redemption 1-Disk: Retail 33 | }; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Archive.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using RPFLib.Common; 7 | 8 | namespace RPFLib 9 | { 10 | internal abstract class Archive 11 | { 12 | public abstract void Close(); 13 | public abstract void Save(); 14 | public abstract RPFLib.Common.Directory RootDirectory { get; set; } 15 | public abstract List search(RPFLib.Common.Directory dir, string searchText); 16 | public abstract void Open(string filename); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/BigEndianBinaryReader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace RPFLib.Common 5 | { 6 | public class BigEndianBinaryReader : BinaryReader 7 | { 8 | public BigEndianBinaryReader(Stream input) : base(input) { } 9 | 10 | public override short ReadInt16() 11 | { 12 | byte[] byteBuffer = base.ReadBytes(2); 13 | return (short)((byteBuffer[0] << 8) | byteBuffer[1]); 14 | } 15 | 16 | public override int ReadInt32() 17 | { 18 | byte[] byteBuffer = base.ReadBytes(4); 19 | return (int)((byteBuffer[0] << 24) | (byteBuffer[1] << 16) | (byteBuffer[2] << 8) | byteBuffer[3]); 20 | } 21 | 22 | public override ushort ReadUInt16() 23 | { 24 | byte[] byteBuffer = base.ReadBytes(2); 25 | return (ushort)((byteBuffer[0] << 8) | byteBuffer[1]); 26 | } 27 | 28 | public override uint ReadUInt32() 29 | { 30 | byte[] byteBuffer = base.ReadBytes(4); 31 | return (uint)((byteBuffer[0] << 24) | (byteBuffer[1] << 16) | (byteBuffer[2] << 8) | byteBuffer[3]); 32 | } 33 | 34 | public override float ReadSingle() 35 | { 36 | byte[] byteBuffer = BitConverter.GetBytes(ReadUInt32()); 37 | return BitConverter.ToSingle(byteBuffer, 0); 38 | } 39 | 40 | public string ReadNullTerminatedString() 41 | { 42 | string newString = ""; 43 | char temp; 44 | while ((temp = ReadChar()) != '\0') 45 | { 46 | if (temp != '\0') newString += temp; 47 | else break; 48 | } 49 | return newString; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/BigEndianBinaryWriter.cs: -------------------------------------------------------------------------------- 1 | #region Usings 2 | 3 | using System; 4 | using System.IO; 5 | using System.Text; 6 | 7 | #endregion 8 | 9 | namespace RPFLib.Common 10 | { 11 | /// 12 | /// Writes primitive types to a stream, in Big Endian binary representation. Supports writing strings in a specific encoding (default encoding is UTF-8). 13 | /// 14 | public class BigEndianBinaryWriter : BinaryWriter 15 | { 16 | #region Constructors 17 | public BigEndianBinaryWriter(Stream output) 18 | : base(output) 19 | { 20 | } 21 | 22 | public BigEndianBinaryWriter(Stream output, Encoding encoding) 23 | : base(output, encoding) 24 | { 25 | } 26 | #endregion 27 | 28 | #region Implementation of abstract methods 29 | 30 | public override void Write(byte data) 31 | { 32 | byte[] buffer = new[] { data }; 33 | Write(buffer); 34 | } 35 | 36 | public override void Write(short data) 37 | { 38 | byte[] bytes = BitConverter.GetBytes(data); 39 | if (BitConverter.IsLittleEndian) 40 | Array.Reverse(bytes); 41 | Write(bytes); 42 | } 43 | 44 | public override void Write(int data) 45 | { 46 | byte[] bytes = BitConverter.GetBytes(data); 47 | if (BitConverter.IsLittleEndian) 48 | Array.Reverse(bytes); 49 | Write(bytes); 50 | } 51 | 52 | public void writebigint(int data) 53 | { 54 | byte[] bytes = BitConverter.GetBytes(data); 55 | Array.Reverse(bytes); 56 | Write(bytes); 57 | } 58 | 59 | public override void Write(long data) 60 | { 61 | byte[] bytes = BitConverter.GetBytes(data); 62 | if (BitConverter.IsLittleEndian) 63 | Array.Reverse(bytes); 64 | Write(bytes); 65 | } 66 | 67 | public override void Write(float data) 68 | { 69 | byte[] bytes = BitConverter.GetBytes(data); 70 | if (BitConverter.IsLittleEndian) 71 | Array.Reverse(bytes); 72 | Write(bytes); 73 | } 74 | 75 | public override void Write(double data) 76 | { 77 | byte[] bytes = BitConverter.GetBytes(data); 78 | if (BitConverter.IsLittleEndian) 79 | Array.Reverse(bytes); 80 | Write(bytes); 81 | } 82 | 83 | #endregion 84 | 85 | } 86 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/BitsStream.cs: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | RPF7Viewer - Viewer for RAGE Package File version 7 4 | Copyright (C) 2013 koolk 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program. If not, see . 18 | 19 | */ 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | using System.IO; 26 | 27 | namespace RPFLib.Common 28 | { 29 | public class BitsStream 30 | { 31 | private Stream Stream; 32 | 33 | public long Position = 0; 34 | public int BitPosition = 0; 35 | 36 | public long Length; 37 | 38 | private long RoundUp(long x, long m) 39 | { 40 | long result = x + (m - (x % m)); 41 | if ((x % m) == 0) 42 | { 43 | result -= m; 44 | } 45 | return result; 46 | } 47 | 48 | public BitsStream(Stream inputStream) 49 | { 50 | this.Stream = inputStream; 51 | this.Length = this.Stream.Length; 52 | } 53 | 54 | public long ReadBits(int bits) 55 | { 56 | if (bits > 64) { 57 | throw new Exception("Error: Can't read big number"); 58 | } 59 | 60 | long StartBit = Position * 8 + BitPosition; 61 | long EndBit = StartBit + bits; 62 | long StartByte = StartBit / 8; 63 | long EndByte = RoundUp(EndBit, 8) / 8; 64 | 65 | if (EndByte > Length) 66 | { 67 | throw new Exception("Error: Out of bounds"); 68 | } 69 | 70 | Byte [] bytes = new Byte[EndByte - StartByte]; 71 | this.Stream.Position = StartByte; 72 | this.Stream.Read(bytes, 0, (int)(EndByte - StartByte)); 73 | 74 | long result = 0; 75 | int shift_by = 0; 76 | for (long i = EndByte - 1; i >= StartByte; --i) 77 | { 78 | if (i == EndByte - 1) 79 | { 80 | if (i == StartByte) 81 | { 82 | result = ((long)bytes[i - StartByte] & ((1 << (8 - BitPosition)) - 1)) >> (int)(RoundUp(EndBit, 8) - EndBit); 83 | } 84 | else 85 | { 86 | result = (long)bytes[i - StartByte] >> (int)(RoundUp(EndBit, 8) - EndBit); 87 | shift_by = 8 - (int)(RoundUp(EndBit, 8) - EndBit); 88 | } 89 | } 90 | else if (i == StartByte) 91 | { 92 | result += ((long)bytes[i - StartByte] & ((1 << (8 - BitPosition)) - 1)) << shift_by; 93 | } 94 | else 95 | { 96 | result += (long)bytes[i - StartByte] << shift_by; 97 | shift_by += 8; 98 | } 99 | } 100 | 101 | Position = EndBit / 8; 102 | BitPosition = (int)(EndBit % 8); 103 | return result; 104 | } 105 | 106 | public int ReadInt() 107 | { 108 | return (int)ReadBits(32); 109 | } 110 | 111 | public bool ReadBool() 112 | { 113 | return ReadBits(1) == 1; 114 | } 115 | 116 | public String ReadString(int length) 117 | { 118 | return Encoding.Default.GetString(this.ReadBytes(length)); 119 | } 120 | 121 | 122 | public byte[] ReadBytes(int length) 123 | { 124 | if (BitPosition != 0) 125 | { 126 | throw new Exception("Error: Must be in start of a byte for reading bytee"); 127 | } 128 | if (Position + length > Length) 129 | { 130 | throw new Exception("Error: Out of bounds"); 131 | } 132 | Byte[] buffer = new Byte[length]; 133 | this.Stream.Position = Position; 134 | this.Stream.Read(buffer, 0, length); 135 | Position += length; 136 | return buffer; 137 | } 138 | 139 | public void Seek(long offset) 140 | { 141 | if (offset > Length) 142 | { 143 | throw new Exception("Error: Out of bounds"); 144 | } 145 | Position = offset; 146 | } 147 | 148 | public String ReadCString() 149 | { 150 | this.Stream.Position = Position; 151 | String result = ""; 152 | int lastChar = this.Stream.ReadByte(); 153 | while (lastChar != 0) { 154 | Position += 1; 155 | result += (char)lastChar; 156 | lastChar = this.Stream.ReadByte(); 157 | } 158 | return result; 159 | } 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/Directory.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace RPFLib.Common 6 | { 7 | public class Directory : fileSystemObject, IEnumerable 8 | { 9 | public delegate void setContentCount(int nContentcount); 10 | public setContentCount _Contentcount; 11 | public delegate void setContentIndex(int nIndex); 12 | public setContentIndex _ContentIndex; 13 | public delegate void setIndex(int nIndex); 14 | public setIndex _Index; 15 | 16 | private List _fsObjects = new List(); 17 | public readonly Dictionary _fsObjectsByName = new Dictionary(); 18 | public string _Attributes = ""; 19 | 20 | public Directory() 21 | { 22 | } 23 | 24 | public override bool IsDirectory 25 | { 26 | get { return true; } 27 | } 28 | 29 | public override bool ContainsSubfolder 30 | { 31 | get 32 | { 33 | int ctr = 0; 34 | foreach (fileSystemObject x in this) 35 | { 36 | if (x.IsDirectory) 37 | { 38 | ctr++; 39 | } 40 | } 41 | if (ctr > 0) 42 | return true; 43 | else 44 | return false; 45 | } 46 | } 47 | 48 | public override string[] ReturnSubfolderNames 49 | { 50 | get 51 | { 52 | int ctr = 0; 53 | foreach (fileSystemObject x in this) 54 | { 55 | if (x.IsDirectory) 56 | { 57 | ctr++; 58 | } 59 | } 60 | string[] myArray = new string[ctr]; 61 | ctr = 0; 62 | foreach (fileSystemObject x in this) 63 | { 64 | if (x.IsDirectory) 65 | { 66 | myArray[ctr] = x.Name; 67 | ctr++; 68 | } 69 | } 70 | return myArray; 71 | } 72 | } 73 | 74 | public override bool IsReturnDirectory 75 | { 76 | get { return false; } 77 | } 78 | 79 | public fileSystemObject this[int index] 80 | { 81 | get { return _fsObjects[index]; } 82 | } 83 | 84 | public fileSystemObject FindByName(string name) 85 | { 86 | fileSystemObject obj; 87 | _fsObjectsByName.TryGetValue(name.ToLower(), out obj); 88 | return obj; 89 | } 90 | 91 | #region IEnumerable Members 92 | 93 | public IEnumerator GetEnumerator() 94 | { 95 | return _fsObjects.GetEnumerator(); 96 | } 97 | 98 | IEnumerator IEnumerable.GetEnumerator() 99 | { 100 | return _fsObjects.GetEnumerator(); 101 | } 102 | 103 | #endregion 104 | 105 | private string empty; 106 | 107 | public override uint nameHash { get; set; } 108 | public override string Size { get { return ""; } set { empty = value; } } 109 | public override string SizeS { get { return ""; } set { empty = value; } } 110 | public string IsResource { get { return ""; } set { empty = value; } } 111 | public string resourcetype { get { return ""; } set { empty = value; } } 112 | public string IsCompressed { get { return ""; } set { empty = value; } } 113 | 114 | public string DF 115 | { 116 | get { return "Directory"; } 117 | } 118 | 119 | public override string Attributes 120 | { 121 | get { return _Attributes; } 122 | set { _Attributes = value; } 123 | } 124 | 125 | public void AddObject(fileSystemObject obj) 126 | { 127 | _fsObjects.Add(obj); 128 | _fsObjectsByName.Add(obj.Name.ToLower(), obj); 129 | } 130 | 131 | public void Reorder() 132 | { 133 | _fsObjects = _fsObjects.OrderBy(o => o.nameHash).ToList(); 134 | } 135 | 136 | public void DeleteObject(fileSystemObject obj) 137 | { 138 | _fsObjectsByName.Remove(obj.Name.ToLower()); 139 | _fsObjects.Remove(obj); 140 | } 141 | 142 | public void SetContentCount() 143 | { 144 | _Contentcount(_fsObjects.Count); 145 | } 146 | 147 | public void SetContentIndex(int newContentIndex) 148 | { 149 | _ContentIndex(newContentIndex); 150 | } 151 | 152 | public void SetNewContentIndex(int newEntryContentIndex) 153 | { 154 | _Index(newEntryContentIndex); 155 | } 156 | } 157 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/Entry.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace RPFLib.Common 4 | { 5 | internal abstract class Entry 6 | { 7 | public abstract void Delete(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/File.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System; 3 | namespace RPFLib.Common 4 | { 5 | public class File : fileSystemObject 6 | { 7 | #region Delegates 8 | 9 | public delegate byte[] DataLoadDelegate(bool getCustom); 10 | public delegate void DataStoreDelegate(byte[] data); 11 | public delegate bool DataIsCustomDelegate(); 12 | public delegate int getSize(); 13 | public delegate void setIndex(int nIndex); 14 | public delegate void Delete(); 15 | 16 | #endregion 17 | 18 | public DataLoadDelegate _dataLoad; 19 | public DataStoreDelegate _dataStore; 20 | public DataIsCustomDelegate _dataCustom; 21 | public getSize d1; 22 | public setIndex _Index; 23 | public Delete _delete; 24 | private string _Attributes = ""; 25 | 26 | public File() 27 | { 28 | } 29 | 30 | public File(setIndex newIndex) 31 | { 32 | _Index = newIndex; 33 | } 34 | 35 | public override bool ContainsSubfolder 36 | { 37 | get 38 | { 39 | throw new NotImplementedException(); 40 | } 41 | } 42 | 43 | public override string[] ReturnSubfolderNames 44 | { 45 | get 46 | { 47 | throw new NotImplementedException(); 48 | } 49 | } 50 | 51 | public override bool IsDirectory 52 | { 53 | get { return false; } 54 | } 55 | 56 | public override bool IsReturnDirectory 57 | { 58 | get { return false; } 59 | } 60 | 61 | public string DF 62 | { 63 | get { return "File"; } 64 | } 65 | 66 | public override uint nameHash { get; set; } 67 | public bool IsCompressed { get; set; } 68 | public int CompressedSize { get; set; } 69 | 70 | public override string Size { get { return d1().ToString(); } set {} } 71 | 72 | public override string SizeS 73 | { 74 | get 75 | { 76 | if (Convert.ToInt32(Size) < 1024) 77 | { 78 | return Size + " B"; 79 | } 80 | else if (Convert.ToInt32(Size) < 1024 * 1024) 81 | { 82 | return Convert.ToInt32(Size) / (1024) + " KB"; 83 | } 84 | else 85 | { 86 | return Convert.ToInt32(Size) / (1024 * 1024) + " MB"; 87 | } 88 | } 89 | set 90 | { 91 | 92 | } 93 | } 94 | 95 | public bool IsResource { get; set; } 96 | private int _resourcetype; 97 | public int resourcetype 98 | { 99 | get 100 | { 101 | if (_resourcetype != null) 102 | return _resourcetype; 103 | else 104 | return 0; 105 | } 106 | set { _resourcetype = value; } 107 | } 108 | 109 | public override string Attributes 110 | { 111 | get { return _Attributes;} set { _Attributes = value; } 112 | } 113 | 114 | public bool IsCustomData 115 | { 116 | get { return _dataCustom(); } 117 | } 118 | 119 | public byte[] GetData(bool getcustom) 120 | { 121 | return _dataLoad(getcustom); 122 | } 123 | 124 | public void SetData(byte[] data) 125 | { 126 | _dataStore(data); 127 | } 128 | 129 | public void SetIndex(int newIndex) 130 | { 131 | _Index(newIndex); 132 | } 133 | 134 | public void DeleteEntry() 135 | { 136 | _delete(); 137 | } 138 | } 139 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/Hasher.cs: -------------------------------------------------------------------------------- 1 | namespace RPFLib.Common 2 | { 3 | public static class Hasher 4 | { 5 | public static uint Hash(string str) 6 | { 7 | uint value = 0, temp; 8 | var index = 0; 9 | var quoted = false; 10 | 11 | if (str[index] == '"') 12 | { 13 | quoted = true; 14 | index++; 15 | } 16 | 17 | str = str.ToLower(); 18 | 19 | for (; index < str.Length; index++) 20 | { 21 | var v = str[index]; 22 | 23 | if (quoted && (v == '"')) break; 24 | 25 | if (v == '\\') 26 | v = '/'; 27 | 28 | temp = v; 29 | temp = temp + value; 30 | value = temp << 10; 31 | temp += value; 32 | value = temp >> 6; 33 | value = value ^ temp; 34 | } 35 | 36 | temp = value << 3; 37 | temp = value + temp; 38 | var temp2 = temp >> 11; 39 | temp = temp2 ^ temp; 40 | temp2 = temp << 15; 41 | 42 | value = temp2 + temp; 43 | 44 | if (value < 2) value += 2; 45 | 46 | return value; 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/Common/fileSystemObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace RPFLib.Common 8 | { 9 | public abstract class fileSystemObject 10 | { 11 | public string Name { get; set; } 12 | public Directory ParentDirectory { get; set; } 13 | 14 | public string FullName 15 | { 16 | get 17 | { 18 | if (ParentDirectory == null) 19 | { 20 | return Name; 21 | } 22 | else 23 | { 24 | return ParentDirectory.FullName + @"\" + Name; 25 | } 26 | } 27 | } 28 | public abstract string Attributes { get; set; } 29 | public abstract string Size { get; set; } 30 | public abstract string SizeS { get; set; } 31 | public abstract uint nameHash { get; set; } 32 | public abstract bool IsDirectory { get; } 33 | public abstract bool IsReturnDirectory { get; } 34 | public abstract bool ContainsSubfolder { get; } 35 | public abstract string[] ReturnSubfolderNames { get; } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RPF6/DirectoryEntry.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using RPFLib.Common; 3 | using System; 4 | 5 | namespace RPFLib.RPF6 6 | { 7 | internal class DirectoryEntry : TOCEntry 8 | { 9 | public DirectoryEntry(TOC toc) 10 | { 11 | TOC = toc; 12 | } 13 | 14 | public int Flags { get; set; } 15 | public int UNKNOWN { get; set; } 16 | public int ContentEntryIndex { get; set; } 17 | public int ContentEntryCount { get; set; } 18 | public override int newEntryIndex { get; set; } 19 | public override Int64 _Offset { get { return 0; } } 20 | 21 | public override bool IsDirectory 22 | { 23 | get { return true; } 24 | } 25 | 26 | public void setContentcount(int ContentCount) 27 | { 28 | ContentEntryCount = ContentCount; ; 29 | } 30 | 31 | public void setContentIndex(int newcontentindex) 32 | { 33 | ContentEntryIndex = newcontentindex; 34 | } 35 | 36 | public void setNewContentIndex(int neEntrywcontentindex) 37 | { 38 | newEntryIndex = neEntrywcontentindex; 39 | } 40 | 41 | public override void Read(BigEndianBinaryReader br, int extra = 0) 42 | { 43 | NameOffset = br.ReadInt32(); 44 | Flags = br.ReadInt32(); 45 | ContentEntryIndex = (int)(br.ReadUInt32() & 0x7fffffff); 46 | ContentEntryCount = br.ReadInt32() & 0x0fffffff; 47 | UNKNOWN = br.ReadInt32(); 48 | } 49 | 50 | public override void Write(BigEndianBinaryWriter bw) 51 | { 52 | bw.Write(NameOffset); 53 | bw.Write(Flags); 54 | bw.Write((int)((uint)ContentEntryIndex | 0x80000000)); 55 | /* 56 | if (newEntryIndex > 0) 57 | bw.Write((int)((uint)newEntryIndex | 0x80000000)); 58 | else 59 | bw.Write((int)((uint)ContentEntryIndex | 0x80000000)); 60 | */ 61 | bw.Write(ContentEntryCount); 62 | bw.Write(UNKNOWN); 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RPF6/Header.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using RPFLib.Common; 3 | 4 | namespace RPFLib.RPF6 5 | { 6 | internal class Header 7 | { 8 | public Header(File file) 9 | { 10 | File = file; 11 | } 12 | 13 | public HeaderIDs Identifier { get; set; } 14 | public int TOCSize { get; set; } 15 | public int EntryCount { get; set; } 16 | 17 | private int Unknown1 { get; set; } 18 | private int EncryptedFlag { get; set; } 19 | 20 | public File File { get; private set; } 21 | 22 | public bool Encrypted 23 | { 24 | get { return EncryptedFlag != 0; } 25 | set { EncryptedFlag = value ? -1 : 0; } 26 | } 27 | 28 | public void Read(BigEndianBinaryReader br) 29 | { 30 | Identifier = (HeaderIDs)br.ReadInt32(); 31 | EntryCount = br.ReadInt32(); 32 | TOCSize = EntryCount * 20; 33 | Unknown1 = br.ReadInt32(); 34 | EncryptedFlag = br.ReadInt32(); 35 | } 36 | 37 | public void Write(BigEndianBinaryWriter bw) 38 | { 39 | bw.Write((int)Identifier); 40 | bw.Write(EntryCount); 41 | bw.Write(Unknown1); 42 | bw.Write((int)-3); // not encrypted, we won't write encrypted archives :) 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RPF6/MagicId.cs: -------------------------------------------------------------------------------- 1 | namespace RPFLib.RPF6 2 | { 3 | public enum HeaderIDs 4 | { 5 | Version3 = 0x33465052, 6 | Version4 = 0x34465052, 7 | Version6 = 0x52504636, 8 | } 9 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RPF6/TOC.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Text; 6 | using System.Linq; 7 | using RPFLib.Common; 8 | 9 | namespace RPFLib.RPF6 10 | { 11 | internal class TOC : IEnumerable 12 | { 13 | private List _entries = new List(); 14 | private string _nameStringTable; 15 | public int count { get { return _entries.Count; } } 16 | public long fileStart; 17 | 18 | public TOC(File file) 19 | { 20 | File = file; 21 | } 22 | 23 | 24 | public File File { get; private set; } 25 | 26 | public TOCEntry this[int index] 27 | { 28 | get 29 | { 30 | try 31 | { 32 | return _entries[index]; 33 | } 34 | catch (Exception) 35 | { 36 | return _entries[0]; 37 | } 38 | } 39 | } 40 | 41 | public bool Add(TOCEntry entry) 42 | { 43 | try 44 | { 45 | _entries.Add(entry); 46 | return true; 47 | } 48 | catch 49 | { 50 | return false; 51 | } 52 | } 53 | 54 | public bool Delete(TOCEntry entry) 55 | { 56 | try 57 | { 58 | int Index = _entries.IndexOf(entry); 59 | if (Index == -1) 60 | return false; 61 | //_entries.Remove(entry); 62 | _entries.RemoveAt(Index); 63 | return true; 64 | } 65 | catch 66 | { 67 | return false; 68 | } 69 | } 70 | 71 | public void ReorderEntryIndex() 72 | { 73 | try 74 | { 75 | _entries = _entries.OrderBy(o => o.newEntryIndex).ToList(); 76 | } 77 | catch (System.Exception ex) 78 | { 79 | throw new Exception(ex.Message, ex); 80 | } 81 | } 82 | 83 | public void ReorderOffset() 84 | { 85 | try 86 | { 87 | _entries = _entries.OrderBy(o => o._Offset).ToList(); 88 | } 89 | catch (System.Exception ex) 90 | { 91 | throw new Exception(ex.Message, ex); 92 | } 93 | } 94 | 95 | public void ReorderCount() 96 | { 97 | try 98 | { 99 | _entries = _entries.OrderBy(o => o.count).ToList(); 100 | } 101 | catch (System.Exception ex) 102 | { 103 | throw new Exception(ex.Message, ex); 104 | } 105 | } 106 | 107 | public string GetName(int offset) 108 | { 109 | if (offset > _nameStringTable.Length) 110 | { 111 | throw new Exception("Invalid offset for name"); 112 | } 113 | 114 | int endOffset = offset; 115 | while (_nameStringTable[endOffset] != 0) 116 | { 117 | endOffset++; 118 | } 119 | return _nameStringTable.Substring(offset, endOffset - offset); 120 | } 121 | 122 | #region IFileAccess Members 123 | 124 | public static void AppendAllBytes(string path, byte[] bytes) 125 | { 126 | //argument-checking here. 127 | 128 | using (var stream = new FileStream(path, FileMode.Append)) 129 | { 130 | stream.Write(bytes, 0, bytes.Length); 131 | } 132 | } 133 | 134 | public void Read(BigEndianBinaryReader br) 135 | { 136 | fileStart = 0x7FFFFFFF; 137 | if (File.Header.Encrypted) 138 | { 139 | int tocSize = DataUtil.RoundUp(File.Header.TOCSize, 16); 140 | byte[] tocData = br.ReadBytes(tocSize); 141 | 142 | tocData = DataUtil.Decrypt(tocData); 143 | 144 | // Create a memory stream and override our active binary reader 145 | var ms = new MemoryStream(tocData); 146 | br = new BigEndianBinaryReader(ms); 147 | // System.IO.File.WriteAllBytes(@"C:\Users\Dageron\Desktop\toc_test.bin", tocData); 148 | } 149 | 150 | int entryCount = File.Header.EntryCount; 151 | 152 | for (int i = 0; i < entryCount; i++) 153 | { 154 | TOCEntry entry; 155 | if (TOCEntry.ReadAsDirectory(br)) 156 | { 157 | entry = new DirectoryEntry(this); 158 | entry.Read(br); 159 | } 160 | else 161 | { 162 | entry = new FileEntry(this); 163 | entry.Read(br); 164 | fileStart = fileStart > entry._Offset ? entry._Offset : fileStart; 165 | } 166 | entry.count = i; 167 | _entries.Add(entry); 168 | } 169 | 170 | int stringDataSize = File.Header.TOCSize - File.Header.EntryCount * 20; 171 | byte[] stringData = br.ReadBytes(stringDataSize); 172 | _nameStringTable = Encoding.ASCII.GetString(stringData); 173 | } 174 | 175 | public void Write(BigEndianBinaryWriter bw) 176 | { 177 | MemoryStream ms = new MemoryStream(); 178 | BigEndianBinaryWriter tempbw = new BigEndianBinaryWriter(ms); 179 | foreach (var entry in _entries) 180 | { 181 | entry.Write(tempbw); 182 | } 183 | 184 | int padding = DataUtil.RoundUp((int)tempbw.BaseStream.Length, 16) - (int)tempbw.BaseStream.Length; 185 | if (padding > 0) 186 | tempbw.Write(new byte[padding]); 187 | 188 | BigEndianBinaryReader tempbr = new BigEndianBinaryReader(ms); 189 | ms.Position = 0; 190 | bw.Write(DataUtil.Encrypt(tempbr.ReadBytes((int)tempbr.BaseStream.Length))); 191 | } 192 | 193 | #endregion 194 | 195 | #region Implementation of IEnumerable 196 | 197 | public IEnumerator GetEnumerator() 198 | { 199 | return _entries.GetEnumerator(); 200 | } 201 | 202 | IEnumerator System.Collections.IEnumerable.GetEnumerator() 203 | { 204 | return GetEnumerator(); 205 | } 206 | 207 | #endregion 208 | } 209 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RPF6/TOCEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using RPFLib.Common; 4 | 5 | namespace RPFLib.RPF6 6 | { 7 | internal abstract class TOCEntry : Entry 8 | { 9 | public int NameOffset { get; set; } 10 | public TOC TOC { get; set; } 11 | 12 | public abstract bool IsDirectory { get; } 13 | 14 | public abstract void Read(BigEndianBinaryReader br, int extra = 0); 15 | public abstract void Write(BigEndianBinaryWriter bw); 16 | public abstract int newEntryIndex { get; set; } 17 | public abstract Int64 _Offset { get; } 18 | 19 | public int count; 20 | 21 | public override void Delete() 22 | { 23 | TOC.Delete(this); 24 | } 25 | 26 | internal static bool ReadAsDirectory(BigEndianBinaryReader br) 27 | { 28 | bool dir; 29 | 30 | br.BaseStream.Seek(8, SeekOrigin.Current); 31 | byte tocData = br.ReadByte(); 32 | dir = tocData == 128; 33 | 34 | br.BaseStream.Seek(-9, SeekOrigin.Current); 35 | 36 | return dir; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /RDR Explorer/Inc/RageLIB/RPF/RSCTypes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using System.Windows.Forms; 8 | 9 | namespace RDR_Explorer.Inc.RageLIB 10 | { 11 | public class RSCTypes 12 | { 13 | protected Dictionary dicType = new Dictionary(); 14 | 15 | public RSCTypes() 16 | { 17 | //init the different types , only known ones for now 18 | dicType.Add(133, "85"); //models 19 | dicType.Add(31, "1F"); 20 | dicType.Add(26, "05"); 21 | dicType.Add(36, "05"); 22 | dicType.Add(116, "05"); 23 | dicType.Add(33, "05"); 24 | dicType.Add(8, "05"); 25 | dicType.Add(1, "01"); 26 | dicType.Add(138, "8A"); //fragments 27 | dicType.Add(30, "05"); 28 | dicType.Add(134, "86 (xsi)"); 29 | dicType.Add(18, "12"); 30 | dicType.Add(10, "0A"); 31 | dicType.Add(39, "27"); 32 | } 33 | 34 | public string getType(string attributeString) 35 | { 36 | string rscType = ""; 37 | string finalString = ""; 38 | 39 | if (attributeString != "Compressed" && attributeString != "None") 40 | { 41 | string[] attributeSplit = attributeString.Split(' '); 42 | //index = 2 43 | 44 | finalString = attributeSplit[2].Remove(attributeSplit[2].Length - 1); 45 | 46 | int version = Convert.ToInt32(finalString); 47 | 48 | string type; 49 | 50 | dicType.TryGetValue(version, out type); 51 | rscType = "RSC" + type + " (Version: " + finalString + ")"; 52 | } 53 | else 54 | { 55 | rscType = "Resource, " + attributeString; 56 | } 57 | 58 | return rscType; 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /RDR Explorer/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace RDR_Explorer 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Main()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RDR Explorer/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die einer Assembly zugeordnet sind. 8 | [assembly: AssemblyTitle("RDR Explorer")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("RDR Explorer")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("719c60a7-787e-4ed2-baba-1c1f25fe7294")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /RDR Explorer/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace RDR_Explorer.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /RDR Explorer/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RDR Explorer/PropertiesLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace RDR_Explorer 9 | { 10 | class PropertiesLoader //written by Power-Mosfet 11 | { 12 | [DllImport("shell32.dll", CharSet = CharSet.Auto)] 13 | static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo); 14 | 15 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 16 | public struct SHELLEXECUTEINFO 17 | { 18 | public int cbSize; 19 | public uint fMask; 20 | public IntPtr hwnd; 21 | [MarshalAs(UnmanagedType.LPTStr)] 22 | public string lpVerb; 23 | [MarshalAs(UnmanagedType.LPTStr)] 24 | public string lpFile; 25 | [MarshalAs(UnmanagedType.LPTStr)] 26 | public string lpParameters; 27 | [MarshalAs(UnmanagedType.LPTStr)] 28 | public string lpDirectory; 29 | public int nShow; 30 | public IntPtr hInstApp; 31 | public IntPtr lpIDList; 32 | [MarshalAs(UnmanagedType.LPTStr)] 33 | public string lpClass; 34 | public IntPtr hkeyClass; 35 | public uint dwHotKey; 36 | public IntPtr hIcon; 37 | public IntPtr hProcess; 38 | } 39 | 40 | private const int SW_SHOW = 5; 41 | private const uint SEE_MASK_INVOKEIDLIST = 12; 42 | public static bool ShowFileProperties(string Filename) 43 | { 44 | SHELLEXECUTEINFO info = new SHELLEXECUTEINFO(); 45 | info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info); 46 | info.lpVerb = "properties"; 47 | info.lpFile = Filename; 48 | info.nShow = SW_SHOW; 49 | info.fMask = SEE_MASK_INVOKEIDLIST; 50 | return ShellExecuteEx(ref info); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /RDR Explorer/RSCUnpacker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/RSCUnpacker.exe -------------------------------------------------------------------------------- /RDR Explorer/Resources/Icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/Icon1.ico -------------------------------------------------------------------------------- /RDR Explorer/Resources/icon_RPF.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/icon_RPF.ico -------------------------------------------------------------------------------- /RDR Explorer/Resources/red_dead_redemption_icon_by_flitskikker-d315kze (1).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/red_dead_redemption_icon_by_flitskikker-d315kze (1).ico -------------------------------------------------------------------------------- /RDR Explorer/Resources/shell32_1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/shell32_1.ico -------------------------------------------------------------------------------- /RDR Explorer/Resources/shell32_235.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/shell32_235.ico -------------------------------------------------------------------------------- /RDR Explorer/Resources/shell32_4.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/Resources/shell32_4.ico -------------------------------------------------------------------------------- /RDR Explorer/Saving.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RDR_Explorer 2 | { 3 | partial class Saving 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Saving)); 32 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 33 | this.SuspendLayout(); 34 | // 35 | // progressBar1 36 | // 37 | resources.ApplyResources(this.progressBar1, "progressBar1"); 38 | this.progressBar1.Name = "progressBar1"; 39 | // 40 | // Saving 41 | // 42 | resources.ApplyResources(this, "$this"); 43 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 44 | this.Controls.Add(this.progressBar1); 45 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 46 | this.Name = "Saving"; 47 | this.Load += new System.EventHandler(this.Saving_Load); 48 | this.ResumeLayout(false); 49 | 50 | } 51 | 52 | #endregion 53 | 54 | private System.Windows.Forms.ProgressBar progressBar1; 55 | } 56 | } -------------------------------------------------------------------------------- /RDR Explorer/Saving.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.IO; 4 | using System.Windows.Forms; 5 | 6 | namespace RDR_Explorer 7 | { 8 | internal partial class Saving : Form 9 | { 10 | private FileStream newRPFStream; 11 | RPFLib.RPF6.File rpfFile; 12 | BackgroundWorker backgroundWorker1 = new BackgroundWorker(); 13 | 14 | public Saving(FileStream newRPF, RPFLib.RPF6.File file) 15 | { 16 | InitializeComponent(); 17 | newRPFStream = newRPF; 18 | rpfFile = file; 19 | backgroundWorker1.WorkerSupportsCancellation = true; 20 | backgroundWorker1.WorkerReportsProgress = true; 21 | backgroundWorker1.DoWork += new DoWorkEventHandler(bgWorker_DoWork); 22 | backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgressChanged); 23 | backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted); 24 | } 25 | 26 | private void Saving_Load(object sender, EventArgs e) 27 | { 28 | backgroundWorker1.RunWorkerAsync(); 29 | } 30 | 31 | void bgWorker_DoWork(object sender, DoWorkEventArgs e) 32 | { 33 | rpfFile.save(newRPFStream, backgroundWorker1, e); 34 | } 35 | 36 | void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) 37 | { 38 | progressBar1.Value = e.ProgressPercentage; 39 | } 40 | 41 | private void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 42 | { 43 | if ((e.Cancelled == true)) 44 | { 45 | } 46 | else if (e.Error != null) 47 | { 48 | MessageBox.Show(RDR_Explorer.Properties.Resources.ResourceManager.GetString("failSaveArch") + Environment.NewLine + e.Error.ToString(), RDR_Explorer.Properties.Resources.ResourceManager.GetString("err"), MessageBoxButtons.OK, MessageBoxIcon.Error); 49 | } 50 | else 51 | { 52 | this.Hide(); 53 | MessageBox.Show(RDR_Explorer.Properties.Resources.ResourceManager.GetString("succArchive"), RDR_Explorer.Properties.Resources.ResourceManager.GetString("succ"), MessageBoxButtons.OK, MessageBoxIcon.Information); 54 | } 55 | this.Invoke(new MethodInvoker(delegate { this.Close(); })); 56 | } 57 | 58 | private void btn_cancel_Click(object sender, EventArgs e) 59 | { 60 | backgroundWorker1.CancelAsync(); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /RDR Explorer/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/logo.png -------------------------------------------------------------------------------- /RDR Explorer/logo_smll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/logo_smll.png -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR Explorer.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\RDR Explorer.exe.config 2 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR Explorer.exe 3 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR Explorer.pdb 4 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\KnownFilenames.txt 5 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\xextool.exe 6 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\RDR Explorer.exe 7 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\RDR Explorer.pdb 8 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Main.resources 9 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Properties.Resources.resources 10 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.RPFviewer.resources 11 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Saving.resources 12 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR Explorer.csproj.GenerateResource.Cache 13 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.About.resources 14 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\RDR Explorer.exe.config 15 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR Explorer.exe 16 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR Explorer.pdb 17 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\KnownFilenames.txt 18 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\xextool.exe 19 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\x360_imports.idc 20 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\RDR Explorer.exe 21 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\bin\Debug\RDR Explorer.pdb 22 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR Explorer.csprojResolveAssemblyReference.cache 23 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR_Explorer.About.resources 24 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR_Explorer.Main.resources 25 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR_Explorer.Properties.Resources.resources 26 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR_Explorer.RPFviewer.resources 27 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR_Explorer.Saving.resources 28 | C:\Users\redit\Documents\GitHub\RDR-Explorer\source\RDR Explorer\obj\Debug\RDR Explorer.csproj.GenerateResource.Cache 29 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\xcompress.dll 30 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR Explorer.csprojResolveAssemblyReference.cache 31 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\RSCUnpacker.exe 32 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\de\RDR Explorer.resources.dll 33 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.About.de.resources 34 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Main.de.resources 35 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Properties.Resources.de.resources 36 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.RPFviewer.de.resources 37 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Saving.de.resources 38 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\de\RDR Explorer.resources.dll 39 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Debug\zh\RDR Explorer.resources.dll 40 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.About.zh.resources 41 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Main.zh.resources 42 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Properties.Resources.zh.resources 43 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.RPFviewer.zh.resources 44 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\RDR_Explorer.Saving.zh.resources 45 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Debug\zh\RDR Explorer.resources.dll 46 | -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR Explorer.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR Explorer.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR Explorer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR Explorer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR Explorer.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR Explorer.exe -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR Explorer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR Explorer.pdb -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.About.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.About.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.About.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.About.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.About.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.About.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Main.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Main.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Main.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Main.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Main.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Main.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Properties.Resources.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.RPFviewer.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Saving.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Saving.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Saving.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Saving.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/RDR_Explorer.Saving.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/RDR_Explorer.Saving.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/de/RDR Explorer.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/de/RDR Explorer.resources.dll -------------------------------------------------------------------------------- /RDR Explorer/obj/Debug/zh/RDR Explorer.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Debug/zh/RDR Explorer.resources.dll -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR Explorer.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\RDR Explorer.exe.config 2 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\KnownFilenames.txt 3 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\RDR Explorer.exe 4 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\RDR Explorer.pdb 5 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR Explorer.csprojResolveAssemblyReference.cache 6 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.About.resources 7 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Main.resources 8 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Properties.Resources.resources 9 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.RPFviewer.resources 10 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Saving.resources 11 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR Explorer.csproj.GenerateResource.Cache 12 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR Explorer.exe 13 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR Explorer.pdb 14 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\xcompress.dll 15 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\RSCUnpacker.exe 16 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\de\RDR Explorer.resources.dll 17 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.About.de.resources 18 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Main.de.resources 19 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.RPFviewer.de.resources 20 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\de\RDR Explorer.resources.dll 21 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Properties.Resources.de.resources 22 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\xextool.exe 23 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Saving.de.resources 24 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\bin\Release\zh\RDR Explorer.resources.dll 25 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.About.zh.resources 26 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Main.zh.resources 27 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Properties.Resources.zh.resources 28 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.RPFviewer.zh.resources 29 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\RDR_Explorer.Saving.zh.resources 30 | C:\Users\redit\Documents\GitHub\RDR-Explorer\RDR Explorer\obj\Release\zh\RDR Explorer.resources.dll 31 | -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR Explorer.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR Explorer.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR Explorer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR Explorer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR Explorer.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR Explorer.exe -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR Explorer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR Explorer.pdb -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.About.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.About.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.About.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.About.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.About.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.About.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Main.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Main.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Main.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Main.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Main.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Main.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Properties.Resources.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.RPFviewer.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Saving.de.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Saving.de.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Saving.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Saving.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/RDR_Explorer.Saving.zh.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/RDR_Explorer.Saving.zh.resources -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/de/RDR Explorer.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/de/RDR Explorer.resources.dll -------------------------------------------------------------------------------- /RDR Explorer/obj/Release/zh/RDR Explorer.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/obj/Release/zh/RDR Explorer.resources.dll -------------------------------------------------------------------------------- /RDR Explorer/red_dead_redemption_icon_by_flitskikker-d315kze (1).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/red_dead_redemption_icon_by_flitskikker-d315kze (1).ico -------------------------------------------------------------------------------- /RDR Explorer/xcompress.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/xcompress.dll -------------------------------------------------------------------------------- /RDR Explorer/xextool.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reditec/RDR-Explorer/d5e91cdec3120681979a4e4880ef3132b80fe050/RDR Explorer/xextool.exe --------------------------------------------------------------------------------