├── .gitignore ├── README.md ├── SC.ico ├── SteamCompanion.sln ├── SteamCompanion ├── App.config ├── GameData.Designer.cs ├── GameData.cs ├── GameData.resx ├── MainWindow.Designer.cs ├── MainWindow.cs ├── MainWindow.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── SteamCompanion.csproj ├── genres.jpg └── main_window.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | build/ 21 | bld/ 22 | [Bb]in/ 23 | [Oo]bj/ 24 | 25 | # Visual Studo 2015 cache/options directory 26 | .vs/ 27 | 28 | # MSTest test Results 29 | [Tt]est[Rr]esult*/ 30 | [Bb]uild[Ll]og.* 31 | 32 | # NUNIT 33 | *.VisualState.xml 34 | TestResult.xml 35 | 36 | # Build Results of an ATL Project 37 | [Dd]ebugPS/ 38 | [Rr]eleasePS/ 39 | dlldata.c 40 | 41 | *_i.c 42 | *_p.c 43 | *_i.h 44 | *.ilk 45 | *.meta 46 | *.obj 47 | *.pch 48 | *.pdb 49 | *.pgc 50 | *.pgd 51 | *.rsp 52 | *.sbr 53 | *.tlb 54 | *.tli 55 | *.tlh 56 | *.tmp 57 | *.tmp_proj 58 | *.log 59 | *.vspscc 60 | *.vssscc 61 | .builds 62 | *.pidb 63 | *.svclog 64 | *.scc 65 | 66 | # Chutzpah Test files 67 | _Chutzpah* 68 | 69 | # Visual C++ cache files 70 | ipch/ 71 | *.aps 72 | *.ncb 73 | *.opensdf 74 | *.sdf 75 | *.cachefile 76 | 77 | # Visual Studio profiler 78 | *.psess 79 | *.vsp 80 | *.vspx 81 | 82 | # TFS 2012 Local Workspace 83 | $tf/ 84 | 85 | # Guidance Automation Toolkit 86 | *.gpState 87 | 88 | # ReSharper is a .NET coding add-in 89 | _ReSharper*/ 90 | *.[Rr]e[Ss]harper 91 | *.DotSettings.user 92 | 93 | # JustCode is a .NET coding addin-in 94 | .JustCode 95 | 96 | # TeamCity is a build add-in 97 | _TeamCity* 98 | 99 | # DotCover is a Code Coverage Tool 100 | *.dotCover 101 | 102 | # NCrunch 103 | _NCrunch_* 104 | .*crunch*.local.xml 105 | 106 | # MightyMoose 107 | *.mm.* 108 | AutoTest.Net/ 109 | 110 | # Web workbench (sass) 111 | .sass-cache/ 112 | 113 | # Installshield output folder 114 | [Ee]xpress/ 115 | 116 | # DocProject is a documentation generator add-in 117 | DocProject/buildhelp/ 118 | DocProject/Help/*.HxT 119 | DocProject/Help/*.HxC 120 | DocProject/Help/*.hhc 121 | DocProject/Help/*.hhk 122 | DocProject/Help/*.hhp 123 | DocProject/Help/Html2 124 | DocProject/Help/html 125 | 126 | # Click-Once directory 127 | publish/ 128 | 129 | # Publish Web Output 130 | *.[Pp]ublish.xml 131 | *.azurePubxml 132 | # TODO: Comment the next line if you want to checkin your web deploy settings 133 | # but database connection strings (with potential passwords) will be unencrypted 134 | *.pubxml 135 | *.publishproj 136 | 137 | # NuGet Packages 138 | *.nupkg 139 | # The packages folder can be ignored because of Package Restore 140 | **/packages/* 141 | # except build/, which is used as an MSBuild target. 142 | !**/packages/build/ 143 | # Uncomment if necessary however generally it will be regenerated when needed 144 | #!**/packages/repositories.config 145 | 146 | # Windows Azure Build Output 147 | csx/ 148 | *.build.csdef 149 | 150 | # Windows Store app package directory 151 | AppPackages/ 152 | 153 | # Others 154 | *.[Cc]ache 155 | ClientBin/ 156 | [Ss]tyle[Cc]op.* 157 | ~$* 158 | *~ 159 | *.dbmdl 160 | *.dbproj.schemaview 161 | *.pfx 162 | *.publishsettings 163 | node_modules/ 164 | bower_components/ 165 | 166 | # RIA/Silverlight projects 167 | Generated_Code/ 168 | 169 | # Backup & report files from converting an old project file 170 | # to a newer Visual Studio version. Backup files are not needed, 171 | # because we have git ;-) 172 | _UpgradeReport_Files/ 173 | Backup*/ 174 | UpgradeLog*.XML 175 | UpgradeLog*.htm 176 | 177 | # SQL Server files 178 | *.mdf 179 | *.ldf 180 | 181 | # Business Intelligence projects 182 | *.rdl.data 183 | *.bim.layout 184 | *.bim_*.settings 185 | 186 | # Microsoft Fakes 187 | FakesAssemblies/ 188 | 189 | # Node.js Tools for Visual Studio 190 | .ntvs_analysis.dat 191 | 192 | # Visual Studio 6 build log 193 | *.plg 194 | 195 | # Visual Studio 6 workspace options file 196 | *.opt 197 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SteamCompanion 2 | 3 | Do you have hundreds of games and you don't know what half of them even look like? SteamCompanion can help you 4 | 5 | ![Main window](main_window.jpg) 6 | 7 | # Getting started 8 | 9 | Input your username, press "Get all" and the application will get your list of games from Steam (uses your Steam Community web profile) 10 | You'll get a list with your games (without genred or images) 11 | 12 | You can now download genres and tags or images from the Steam Store using the "Game data" menu. You can download them for the selected games or for all the games. 13 | 14 | (Note: "All games" uses the list of games shown at the moment, so you can search for a term or filter the list by tags and then download images for only the shown games) 15 | 16 | Getting the data or images can take a while. A console window will tell you the progress so you know the program is working. 17 | 18 | I suggest batch-resizing the downloaded images to 720p or lower. My initial test for 900 games produced 5+gb of images and, after resizing them and saving at 80% quality with IrfanView, got reduced to 1gb) 19 | 20 | 21 | You should now have a list with all your games, tags, categories and images. I'd recommend saving the list using Profile -> Save profile. 22 | 23 | Whenever you want to update your list with new games, just input your username and press Update. The program will check all the games from your Steam profile that aren't on your list and prompt you asking if you want to add it or not (maybe you already cleaned your list a bit removing duplicates and don't want them readded again) 24 | 25 | # Controls 26 | 27 | ## Menu bar 28 | 29 | Profile: You can save and load the current list to a XML file. If you press "Autosave/load", the program will save the current list as autosave.xml whenever you exit and load it again when you start. 30 | When you save or load profiles you are saving **the whole list of games**, not just the ones currently being shown on the "Games" list. 31 | 32 | Game data: Get categories and tags or images for the selected game or the currently showing list of games 33 | 34 | Tools: Let's you see a list of the games without genres/tags or images, so you can edit them manually or add screenshots. Useful to find things like games no longer on Steam. 35 | 36 | ## Main window 37 | 38 | If you click on categories and tags, you'll select or unselect them and the game list will change to show the games that have the selected genres and tags. 39 | 40 | You can search for a game using the text box on top of the games list. It'll search for whatever you typed anywhere on the game's name and it's not case sensitive. 41 | 42 | Double click on any game will open the tag and genre editor (more about that later) 43 | 44 | ### Key shortcuts 45 | 46 | All of these work when the list of games is the "active" part of the window (when you clicked on it or tabed to it) 47 | 48 | * Right direction key: Shows the next image for the selected game 49 | 50 | * Left direction key: Jumps to a random game on the current list 51 | 52 | * Enter: Launch the selected game 53 | 54 | * Space: Open the selected game's screenshot folder. You can then add your own jpgs there and they will load when you select the game again 55 | 56 | * Delete: It will remove the game from the list and delete all the images from the game's folder. **It will prompt you before deleting it**. 57 | 58 | # Tag editor 59 | 60 | ![Tag editor](genres.jpg) 61 | 62 | When you double click a game you'll get this window. 63 | 64 | The current genres and tags for that game will be selected already. Just select all the tags/genres you want or add your own by writing them and pressing the "+" button. 65 | -------------------------------------------------------------------------------- /SC.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knudow/SteamCompanion/5b92eb79cf4510a308f315e31f598848c6bc33af/SC.ico -------------------------------------------------------------------------------- /SteamCompanion.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}") = "SteamCompanion", "SteamCompanion\SteamCompanion.csproj", "{A251794B-C2D6-4950-A1BC-BEFFFA33DAB5}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {A251794B-C2D6-4950-A1BC-BEFFFA33DAB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {A251794B-C2D6-4950-A1BC-BEFFFA33DAB5}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {A251794B-C2D6-4950-A1BC-BEFFFA33DAB5}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {A251794B-C2D6-4950-A1BC-BEFFFA33DAB5}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /SteamCompanion/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 0, 0 15 | 16 | 17 | False 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /SteamCompanion/GameData.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SteamCompanion 2 | { 3 | partial class GameData 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(GameData)); 32 | this.label4 = new System.Windows.Forms.Label(); 33 | this.listbox_tags = new System.Windows.Forms.ListBox(); 34 | this.label3 = new System.Windows.Forms.Label(); 35 | this.listbox_categories = new System.Windows.Forms.ListBox(); 36 | this.button1 = new System.Windows.Forms.Button(); 37 | this.add_genre = new System.Windows.Forms.Button(); 38 | this.add_tag = new System.Windows.Forms.Button(); 39 | this.text_genre = new System.Windows.Forms.TextBox(); 40 | this.text_tag = new System.Windows.Forms.TextBox(); 41 | this.button2 = new System.Windows.Forms.Button(); 42 | this.SuspendLayout(); 43 | // 44 | // label4 45 | // 46 | this.label4.AutoSize = true; 47 | this.label4.Location = new System.Drawing.Point(130, 6); 48 | this.label4.Name = "label4"; 49 | this.label4.Size = new System.Drawing.Size(31, 13); 50 | this.label4.TabIndex = 15; 51 | this.label4.Text = "Tags"; 52 | // 53 | // listbox_tags 54 | // 55 | this.listbox_tags.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 56 | | System.Windows.Forms.AnchorStyles.Left))); 57 | this.listbox_tags.FormattingEnabled = true; 58 | this.listbox_tags.Location = new System.Drawing.Point(133, 54); 59 | this.listbox_tags.Name = "listbox_tags"; 60 | this.listbox_tags.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple; 61 | this.listbox_tags.Size = new System.Drawing.Size(120, 524); 62 | this.listbox_tags.Sorted = true; 63 | this.listbox_tags.TabIndex = 14; 64 | // 65 | // label3 66 | // 67 | this.label3.AutoSize = true; 68 | this.label3.Location = new System.Drawing.Point(7, 6); 69 | this.label3.Name = "label3"; 70 | this.label3.Size = new System.Drawing.Size(57, 13); 71 | this.label3.TabIndex = 13; 72 | this.label3.Text = "Categories"; 73 | // 74 | // listbox_categories 75 | // 76 | this.listbox_categories.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 77 | | System.Windows.Forms.AnchorStyles.Left))); 78 | this.listbox_categories.FormattingEnabled = true; 79 | this.listbox_categories.Location = new System.Drawing.Point(7, 54); 80 | this.listbox_categories.Name = "listbox_categories"; 81 | this.listbox_categories.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple; 82 | this.listbox_categories.Size = new System.Drawing.Size(120, 524); 83 | this.listbox_categories.Sorted = true; 84 | this.listbox_categories.TabIndex = 12; 85 | // 86 | // button1 87 | // 88 | this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; 89 | this.button1.Location = new System.Drawing.Point(269, 54); 90 | this.button1.Name = "button1"; 91 | this.button1.Size = new System.Drawing.Size(121, 40); 92 | this.button1.TabIndex = 16; 93 | this.button1.Text = "Save"; 94 | this.button1.UseVisualStyleBackColor = true; 95 | this.button1.Click += new System.EventHandler(this.button1_Click); 96 | // 97 | // add_genre 98 | // 99 | this.add_genre.Location = new System.Drawing.Point(103, 25); 100 | this.add_genre.Name = "add_genre"; 101 | this.add_genre.Size = new System.Drawing.Size(23, 23); 102 | this.add_genre.TabIndex = 17; 103 | this.add_genre.Text = "+"; 104 | this.add_genre.UseVisualStyleBackColor = true; 105 | this.add_genre.Click += new System.EventHandler(this.add_genre_Click); 106 | // 107 | // add_tag 108 | // 109 | this.add_tag.Location = new System.Drawing.Point(230, 25); 110 | this.add_tag.Name = "add_tag"; 111 | this.add_tag.Size = new System.Drawing.Size(23, 23); 112 | this.add_tag.TabIndex = 18; 113 | this.add_tag.Text = "+"; 114 | this.add_tag.UseVisualStyleBackColor = true; 115 | this.add_tag.Click += new System.EventHandler(this.add_tag_Click); 116 | // 117 | // text_genre 118 | // 119 | this.text_genre.Location = new System.Drawing.Point(7, 27); 120 | this.text_genre.Name = "text_genre"; 121 | this.text_genre.Size = new System.Drawing.Size(90, 20); 122 | this.text_genre.TabIndex = 19; 123 | // 124 | // text_tag 125 | // 126 | this.text_tag.Location = new System.Drawing.Point(134, 27); 127 | this.text_tag.Name = "text_tag"; 128 | this.text_tag.Size = new System.Drawing.Size(90, 20); 129 | this.text_tag.TabIndex = 20; 130 | // 131 | // button2 132 | // 133 | this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; 134 | this.button2.Location = new System.Drawing.Point(269, 100); 135 | this.button2.Name = "button2"; 136 | this.button2.Size = new System.Drawing.Size(121, 40); 137 | this.button2.TabIndex = 21; 138 | this.button2.Text = "Cancel"; 139 | this.button2.UseVisualStyleBackColor = true; 140 | // 141 | // GameData 142 | // 143 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 144 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 145 | this.ClientSize = new System.Drawing.Size(404, 586); 146 | this.Controls.Add(this.button2); 147 | this.Controls.Add(this.text_tag); 148 | this.Controls.Add(this.text_genre); 149 | this.Controls.Add(this.add_tag); 150 | this.Controls.Add(this.add_genre); 151 | this.Controls.Add(this.button1); 152 | this.Controls.Add(this.label4); 153 | this.Controls.Add(this.listbox_tags); 154 | this.Controls.Add(this.label3); 155 | this.Controls.Add(this.listbox_categories); 156 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 157 | this.MaximumSize = new System.Drawing.Size(420, 1080); 158 | this.MinimumSize = new System.Drawing.Size(420, 625); 159 | this.Name = "GameData"; 160 | this.Text = "GameData"; 161 | this.Load += new System.EventHandler(this.GameData_Load); 162 | this.ResumeLayout(false); 163 | this.PerformLayout(); 164 | 165 | } 166 | 167 | #endregion 168 | private System.Windows.Forms.Label label4; 169 | private System.Windows.Forms.ListBox listbox_tags; 170 | private System.Windows.Forms.Label label3; 171 | private System.Windows.Forms.ListBox listbox_categories; 172 | private System.Windows.Forms.Button button1; 173 | private System.Windows.Forms.Button add_genre; 174 | private System.Windows.Forms.Button add_tag; 175 | private System.Windows.Forms.TextBox text_genre; 176 | private System.Windows.Forms.TextBox text_tag; 177 | private System.Windows.Forms.Button button2; 178 | } 179 | } -------------------------------------------------------------------------------- /SteamCompanion/GameData.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 SteamCompanion 12 | { 13 | public partial class GameData : Form 14 | { 15 | public Game g { get; set; } 16 | public List genres { get; set; } 17 | public List tags { get; set; } 18 | 19 | private int desiredStartLocationX; 20 | private int desiredStartLocationY; 21 | 22 | public GameData(int x, int y) 23 | : this() 24 | { 25 | //We save the desired window position 26 | this.desiredStartLocationX = x; 27 | this.desiredStartLocationY = y; 28 | 29 | Load += new EventHandler(GameData_Load); 30 | } 31 | 32 | public GameData() 33 | { 34 | InitializeComponent(); 35 | } 36 | 37 | private void GameData_Load(object sender, EventArgs e) 38 | { 39 | //We set the listboxes sources 40 | this.SetDesktopLocation(desiredStartLocationX, desiredStartLocationY); 41 | this.Text = g.name; 42 | listbox_categories.DataSource = genres; 43 | listbox_tags.DataSource = tags; 44 | 45 | listbox_categories.ClearSelected(); 46 | listbox_tags.ClearSelected(); 47 | 48 | //We select the tags/categories that the selected game has 49 | if (g.genres != null) 50 | { 51 | if (g.genres.Count > 0) 52 | { 53 | foreach (String s in g.genres) 54 | { 55 | listbox_categories.SetSelected(listbox_categories.FindStringExact(s), true); 56 | } 57 | } 58 | } 59 | 60 | if (g.tags != null) 61 | { 62 | if (g.tags.Count > 0) 63 | { 64 | foreach (String s in g.tags) 65 | { 66 | listbox_tags.SetSelected(listbox_tags.FindStringExact(s), true); 67 | } 68 | } 69 | } 70 | } 71 | 72 | private void button1_Click(object sender, EventArgs e) 73 | { 74 | //When the user saves, we create a new game with all the selected genres and tags 75 | Game g2 = g; 76 | g2.genres = listbox_categories.SelectedItems.Cast().ToList(); 77 | g2.tags = listbox_tags.SelectedItems.Cast().ToList(); 78 | 79 | g = g2; 80 | } 81 | 82 | private void add_genre_Click(object sender, EventArgs e) 83 | { 84 | if(!string.IsNullOrWhiteSpace(text_genre.Text)) 85 | { 86 | if(!genres.Contains(text_genre.Text)) 87 | { 88 | genres.Add(text_genre.Text); 89 | listbox_categories.DataSource = null; 90 | listbox_categories.DataSource = genres; 91 | foreach (String s in g.genres) 92 | { 93 | listbox_categories.SetSelected(listbox_categories.FindStringExact(s), true); 94 | } 95 | } 96 | } 97 | } 98 | 99 | private void add_tag_Click(object sender, EventArgs e) 100 | { 101 | if (!string.IsNullOrWhiteSpace(text_tag.Text)) 102 | { 103 | if (!tags.Contains(text_tag.Text)) 104 | { 105 | tags.Add(text_tag.Text); 106 | listbox_tags.DataSource = null; 107 | listbox_tags.DataSource = tags; 108 | foreach (String s in g.tags) 109 | { 110 | listbox_tags.SetSelected(listbox_tags.FindStringExact(s), true); 111 | } 112 | } 113 | } 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /SteamCompanion/GameData.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAEAilYAAAEAGACgkgAAFgAAACgAAACKAAAArAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 136 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 138 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 140 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 141 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 142 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 143 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 144 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 145 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 149 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 162 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 163 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 164 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 165 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 166 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 167 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 168 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 169 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 170 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 171 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 172 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 173 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 174 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 176 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 178 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 179 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 180 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 181 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 192 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEB 195 | AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB 196 | AQEBAQEBAQEBAQEBAQEBAQEBAQABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 197 | AAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB 198 | AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQAAAAAAAAAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 200 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 201 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAgMDAgMDAwUFBAUFBAYGBAYGBAYGBAYG 202 | BAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYG 203 | BAYGBAYGBAYGBAUFAwUFAgMDAgMDAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgMDAgMD 204 | BAUFAwUFBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYG 205 | BAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAYGBAUFAwQEAgMDAgICAQEBAAAAAAAAAAAAAAAAAAAA 206 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 207 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 208 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAgIEBQUGCAgICwsLDg4MDw8MEBANERENERENERENEREN 209 | ERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENEREN 210 | EREMEBAMDw8LDg4ICwsGCAgEBgYCAwMAAQEAAAAAAAAAAAAAAAAAAAAAAQECAgIDBQUFBwcICwsKDQ0M 211 | Dw8MEBANERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENERENEREN 212 | ERENERENERENERENERENERENERENEREMEBALDw8KDQ0ICwsFBwcEBQUCAgIAAQEAAAAAAAAAAAAAAAAA 213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 215 | AAAAAAAAAAAAAAAAAAAAAAABAQIDAwUHBwoNDQ8UFBQbGxcfHxojIxwkJB0lJR0lJR0lJR0lJR0lJR0l 216 | JR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJRwk 217 | JBojIxcfHxYdHRAVFQsODgUHBwIDAwEBAQAAAAAAAAAAAAABAQICAgQGBggLCw8UFBQZGRcfHxojIxwk 218 | JBwkJB0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0lJR0l 219 | JR0lJR0lJR0lJR0lJR0lJRwkJBwkJBkgIBYdHRIYGA4SEggLCwQGBgECAgAAAAAAAAAAAAAAAAAAAAAA 220 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 221 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 222 | AAAAAAAAAAAAAAAAAQICBAYGCAoKEBQUFh0dHygoJS8vJjAwKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMz 223 | KDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzJjAw 224 | JS8vICkpGR8fEBYWDA8PBAYGAQICAAAAAAAAAAAAAAEBAwUFCAsLDRISFh0dHSYmJC0tJjAwJjIyKDMz 225 | KDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMzKDMz 226 | KDMzKDMzKDMzKDMzKDMzJjIyJjAwJC0tHSYmFBsbDRISCAsLAwQEAQEBAAAAAAAAAAAAAAAAAAAAAAAA 227 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 228 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 229 | AAAAAAAAAAACAwMGCAgFBwcBAgIDBAQEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUE 230 | BQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUE 231 | BQUDBAQICwsNEREICwsDBAQAAQEAAAAAAQECAgIFBwcLDg4ICwsDBAQEBQUEBQUEBQUEBQUEBQUEBQUE 232 | BQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUE 233 | BQUEBQUEBQUEBQUEBQUEBQUEBQUEBQUDBAQEBgYHCgoFBwcBAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 234 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 235 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 236 | AAABAQMEBAMEBAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 237 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 238 | /wL//wUcHAgLCwQGBgEBAQEBAQEBAQIDAwYICAUHBwL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 239 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 240 | /wL//wL//wL//wL//wL//wL//wL//wL//wCCggMFBQIDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 241 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 242 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEB 243 | AgQEAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 244 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 245 | AB0dCgwMBQYGAQICAAEBAAEBAwQECAoKAQEBAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 246 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 247 | Av//Av//Av//Av//Av//Av//Av//AIKCAwUFAgMDAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 248 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 249 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECBAQA 250 | AAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 251 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0L 252 | Dg4GCAgBAgIAAQEBAQEDBQUJDAwBAQEC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 253 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 254 | //8C//8C//8C//8C//8C//8AgoIDBQUCAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 255 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 256 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQIEBAAAAAL/ 257 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 258 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsODgYI 259 | CAIDAwABAQEBAQQFBQkMDAEBAQL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 260 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 261 | /wL//wL//wL//wL//wCCggMFBQIDAwABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 262 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 263 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAwQEAAAAAv//Av// 264 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 265 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dCxAQBggIAgMD 266 | AAEBAQEBBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 267 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 268 | Av//Av//Av//AIKCAgQEAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 269 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgIAAAAC//8C//8C//8C 271 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 272 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0LEBAGCAgCAwMAAQEB 273 | AQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 274 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 275 | //8C//8AgoIDBAQBAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 276 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 277 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgAAAAL//wL//wL//wL//wL/ 278 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 279 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsQEAYICAIDAwABAQEBAQQF 280 | BQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 281 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 282 | /wCCggAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 283 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 284 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv//Av//Av//Av//Av//Av// 285 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 286 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dCxAQBggIAgMDAAEBAQEBBAUFCQwM 287 | AQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 288 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AIKC 289 | AAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 290 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 291 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC//8C//8C//8C//8C//8C//8C//8C 292 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 293 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0LEBAGCAgCAwMAAQEBAQEEBQUJDAwBAgIC 294 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 295 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AgoIAAAAA 296 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 297 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 298 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGc 299 | nAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAL/ 300 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsQEAYICAIDAwABAQEBAQQFBQkMDAECAgL//wL/ 301 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGc 302 | nAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAGcnAA3NwAAAAAAAAAA 303 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 304 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 305 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 306 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwQEAAAAAAAAAv//Av// 307 | Av//Av//Av//Av//Av//Av//Av//Av//AB0dCxAQBggIAgMDAAEBAQEBBAUFCQwMAQICAv//Av//Av// 308 | Av//Av//Av//Av//Av//Av//Av//Av//AAAAAAAAAwQEAQICAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAA 309 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 310 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 311 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 312 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 313 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQECAwMFBgYICwsAAAAC//8C//8C//8C 314 | //8C//8C//8C//8C//8C//8C//8AHR0LEBAGCAgCAwMAAQEBAQEEBQUJDAwBAgIC//8C//8C//8C//8C 315 | //8C//8C//8C//8C//8C//8C//8AAAAJDAwFBgYCAwMBAQEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 316 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 317 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 318 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 319 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 320 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQMFBQgKCgEBAQL//wL//wL//wL//wL/ 321 | /wL//wL//wL//wL//wL//wAdHQsQEAYICAIDAwABAQEBAQQFBQkMDAECAgL//wL//wL//wL//wL//wL/ 322 | /wL//wL//wL//wL//wL//wECAgkMDAQFBQABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 323 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 324 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 325 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 326 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 327 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAwQECAoKAQEBAv//Av//Av//Av//Av//Av// 328 | Av//Av//Av//Av//AB0dCxAQBggIAgMDAAEBAQEBBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av// 329 | Av//Av//Av//Av//AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 330 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 331 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 332 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 333 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 334 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAwMICgoBAQEC//8C//8C//8C//8C//8C//8C//8C 335 | //8C//8C//8AHR0LEBAGCAgCAwMAAQEBAQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C 336 | //8C//8C//8BAQEICgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 337 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 338 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 339 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 340 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 341 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQMFBQgKCgEBAQL//wL//wL//wL//wL//wL//wL//wL//wL/ 342 | /wL//wAdHQsQEAYICAIDAwABAQEBAQQFBQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 343 | /wL//wEBAQgKCgMEBAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 344 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 345 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 346 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 347 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 348 | AAAAAAAAAAAAAAAAAAAAAAEBAQICBAYGCw4OAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av// 349 | AB0dCxAQBggIAgMDAAEBAQEBBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 350 | AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 351 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 352 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 353 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 354 | AAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB 355 | AQEBAQEBAQEBAQECAgIEBQUICwsNEhIBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0L 356 | EBAGCAgCAwMAAQEBAQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAQEI 357 | CgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 358 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 359 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 360 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 361 | AAEBAQIDAwIDAwMEBAMFBQQFBQQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQGBgQG 362 | BgQGBgQGBgUHBwgLCw4SEhMZGQMEBAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsQEAYI 363 | CAIDAwABAQEBAQQFBQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wEBAQgKCgME 364 | BAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 365 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 366 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 367 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgMDBAUF 368 | BggICAsLCg0NCw8PDA8PDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQ 369 | DBAQDxQUEhgYGSAgHCQkBAUFAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dCxAQBggIAgMD 370 | AAEBAQEBBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AQEBCAoKAwQEAAEB 371 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 372 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 373 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 374 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAgIFBwcICwsPFBQU 375 | GRkWHR0ZICAbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbIyMbJSUg 376 | KCgiKysoNDQmMDAEBQUC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0LEBAGCAgCAwMAAQEB 377 | AQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAQEICgoDBAQAAQEAAAAA 378 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 379 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 380 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 381 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgQFBQsODhAVFRsjIyIrKyYy 382 | Mig0NCs2Nis3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nys3Nyw6 383 | OjA8PCUvLwAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsQEAYICAIDAwABAQEBAQQF 384 | BQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wEBAQgKCgMEBAABAQAAAAAAAAAA 385 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 386 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 387 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 388 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgMDCAsLCAoKDREREBUVExkZFBoaFh0d 389 | Fh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFh0dFx4eGB4e 390 | CQwMAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dCxAQBggIAgMDAAEBAQEBBAUFCQwM 391 | AQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAA 392 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 393 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 394 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 395 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEEBQUDBAQBnJwBnJwBnJwBnJwBnJwBnJwBnJwB 396 | nJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwBnJwB 397 | nJwC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0LEBAGCAgCAwMAAQEBAQEEBQUJDAwBAgIC 398 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAQEICgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAA 399 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 400 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 401 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 402 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQIEBAAAAAL//wL//wL//wL//wL//wL//wL//wL//wL/ 403 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 404 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQsODgYICAIDAwABAQEBAQQFBQkMDAECAgL//wL/ 405 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wEBAQgKCgMEBAABAQAAAAAAAAAAAAAAAAAAAAAAAAAA 406 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 407 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 408 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 409 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBggIAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av// 410 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 411 | Av//Av//Av//Av//Av//Av//Av//Av//AB0dCw4OBggIAQICAAEBAQEBBAUFCQwMAQICAv//Av//Av// 412 | Av//Av//Av//Av//Av//Av//Av//Av//AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 413 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 414 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 415 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 416 | AAAAAAAAAAAAAAAAAAAAAAABAQEEBQUAAAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 417 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 418 | //8C//8C//8C//8C//8C//8C//8AHR0KDAwFBwcBAgIAAQEBAQEEBQUJDAwBAgIC//8C//8C//8C//8C 419 | //8C//8C//8C//8C//8C//8C//8BAQEICgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 420 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 421 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 422 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 423 | AAAAAAAAAAAAAAAAAAEBAQQFBQAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 424 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 425 | /wL//wL//wL//wL//wL//wAdHQgLCwQGBgECAgABAQEBAQQFBQkMDAECAgL//wL//wL//wL//wL//wL/ 426 | /wL//wL//wL//wL//wL//wEBAQgKCgMEBAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 427 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 428 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 429 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 430 | AAAAAAAAAAAAAQEBBAUFAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 431 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 432 | Av//Av//Av//Av//AB0dBgcHAwQEAQEBAAEBAQICBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av// 433 | Av//Av//Av//Av//AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 434 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 435 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 436 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 437 | AAAAAAABAQEEBQUAAAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 438 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 439 | //8C//8C//8AHR0EBQUBAgIAAQEAAAAAAQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C 440 | //8C//8C//8BAQEICgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 441 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 442 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 443 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 444 | AAEBAQQFBQAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 445 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 446 | /wL//wAdHQICAgABAQAAAAAAAAEBAQMFBQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 447 | /wL//wEBAQgKCgMEBAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 448 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 449 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 450 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEB 451 | BAUFAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 452 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 453 | AB0dAAEBAAAAAAAAAAAAAAEBAwUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 454 | AQEBCAoKAwQEAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 455 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 456 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 457 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEBQUA 458 | AAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 459 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AFRUA 460 | AQEAAAAAAAAAAAABAQEDBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAQEI 461 | CgoDBAQAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 462 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 463 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 464 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQQFBQAAAAL/ 465 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 466 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAwAAAAAA 467 | AAAAAAAAAAEBAQMFBQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wEBAQgKCgME 468 | BAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 469 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 470 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 471 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBBAUFAAAAAv//Av// 472 | Av//Av//Av//Av//Av//Av//Av//Av//Av//AAAADBAQCAoKAgQEAAEBAAAAAAAAAAAAAAAAAAAAAAAA 473 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 474 | AAAAAQEBAwUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AQEBCAoKAwQEAAEB 475 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 476 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 477 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 478 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEBQUAAAAC//8C//8C//8C 479 | //8C//8C//8C//8C//8C//8C//8C//8DBAQOExMGCAgCAwMAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 480 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB 481 | AQEDBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAQEICgoDBAQAAQEAAAAA 482 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 483 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 484 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 485 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQQFBQAAAAL//wL//wL//wL//wL/ 486 | /wL//wL//wL//wL//wL//wL//wMEBA0SEgYICAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 487 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQMF 488 | BQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wEBAQgLCwMEBAABAQAAAAAAAAAA 489 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 490 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 491 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 492 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBBAUFAAAAAv//Av//Av//Av//Av//Av// 493 | Av//Av//Av//Av//Av//AwQEDRISBggIAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 494 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAwUFCQwM 495 | AQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AQEBCAoKAwUFAQEBAAAAAAAAAAAAAAAA 496 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 497 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 498 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 499 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEBQUAAAAC//8C//8C//8C//8C//8C//8C//8C 500 | //8C//8C//8C//8DBAQOExMGCAgCAwMAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 501 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEDBQUJDAwBAgIC 502 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BAgIJDAwEBQUAAQEAAAAAAAAAAAAAAAAAAAAA 503 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 504 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 505 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 506 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQQFBQAAAAL//wL//wL//wL//wL//wL//wL//wL//wL/ 507 | /wL//wL//wMEBBAWFggLCwMFBQECAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 508 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQMFBQkMDAECAgL//wL/ 509 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wECAgsODgUHBwICAgABAQAAAAAAAAAAAAAAAAAAAAAA 510 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 511 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 512 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 513 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBBAUFAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av// 514 | Av//AwQEFh0dDhISBggIAwQEAgICAQICAQICAQICAQICAQICAQICAQICAQICAQICAQICAQICAQICAQIC 515 | AQICAQICAQICAQICAQEBAQEBAAEBAAAAAAAAAAAAAAAAAAAAAAAAAQEBAwUFCQwMAQICAv//Av//Av// 516 | Av//Av//Av//Av//Av//Av//Av//Av//AwQEDxMTCAsLBAYGAgMDAQICAQICAQICAQICAQICAQICAQIC 517 | AQICAQICAQICAQICAQICAQICAQICAQICAQICAQICAQEBAAEBAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAA 518 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 519 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 520 | AAAAAAAAAAAAAAAAAAAAAAABAQEEBQUAAAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8E 521 | BQUdJiYUGxsOEhIICwsGCAgFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcF 522 | BwcFBwcEBgYEBQUDBQUCAwMBAgIAAQEAAAAAAAAAAAAAAAABAQEDBQUJDAwBAgIC//8C//8C//8C//8C 523 | //8C//8C//8C//8C//8C//8C//8DBAQUGxsPFBQKDQ0GCAgFBwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcF 524 | BwcFBwcFBwcFBwcFBwcFBwcFBwcFBwcEBgYEBgYEBQUDBAQCAwMBAQEAAAAAAAAAAAAAAAAAAAAAAAAA 525 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 526 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 527 | AAAAAAAAAAAAAAAAAAEBAQQFBQAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wQFBSUv 528 | LyIrKxkgIBIYGBAVFQ8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA4S 529 | Eg0REQsPDwoNDQYICAUHBwIDAwABAQAAAAAAAAAAAAEBAQMFBQkMDAECAgL//wL//wL//wL//wL//wL/ 530 | /wL//wL//wL//wL//wL//wQFBSApKRsjIxQbGxEWFg8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8UFA8U 531 | FA8UFA8UFA8UFA8UFA8UFA4SEg4SEgwQEAsODggLCwUHBwMFBQICAgABAQAAAAAAAAAAAAAAAAAAAAAA 532 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 533 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 534 | AAAAAAAAAAAAAQEBBAUFAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//BAUFKzc3Ljs7 535 | KzY2JDAwISoqICkpICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoICgoHCQk 536 | GSAgFh0dERYWDA8PBggIAgMDAQEBAAAAAAAAAQEBAwUFCQwMAQICAv//Av//Av//Av//Av//Av//Av// 537 | Av//Av//Av//Av//BAUFKDQ0Kzc3JTAwIisrISoqICgoICgoICgoICgoICgoICgoICgoICgoICgoICgo 538 | ICgoICgoICgoICgoICgoHSUlGiMjFx8fFBkZDhISCAsLBAUFAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAA 539 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 540 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 541 | AAAAAAABAQEEBQUAAAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AAAAoNDQyQEAyQEAw 542 | PDwuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzssOjosOjorNjYm 543 | MDAcJCQUGRkMEBAEBgYBAgIAAQEAAAAAAQEEBQUJDAwBAgIC//8C//8C//8C//8C//8C//8C//8C//8C 544 | //8C//8C//8AAAAmMjIyQEAwPDwuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsuOzsu 545 | OzsuOzsuOzssOjosOjorNzcoNDQiKysZICAQFRUICwsCAwMBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 546 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 547 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 548 | AAEBAQQFBQAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAAAAkMDBkgIBgeHhgeHhge 549 | HhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhceHhYdHRYdHRQaGhAV 550 | FQ0REQ0SEggLCwMEBAECAgABAQECAgQFBQkMDAECAgL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 551 | /wL//wAAAAkMDBkgIBgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhgeHhge 552 | HhgeHhgeHhYdHRYdHRQaGhMZGRAVFQoODggLCwUHBwECAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 553 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 554 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEB 555 | BAUFAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AZycAZycAZycAZycAZycAZycAZyc 556 | AZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZyc 557 | ChYWCQwMBAYGAQICAQEBAQEBBAUFCQwMAQICAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 558 | AZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZycAZyc 559 | AZycAZycAZycAZycAZycAZycAZycAz09BQcHAgMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 560 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 561 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEBQUA 562 | AAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 563 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8BHBwJ 564 | DAwFBwcBAgIBAQEBAQEEBQUJDAwBAQEC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 565 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 566 | //8C//8C//8C//8C//8C//8AgoIDBAQCAwMAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 567 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 568 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQYICAAAAAL/ 569 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 570 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQoMDAUH 571 | BwECAgEBAQEBAQMFBQkMDAEBAQL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 572 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 573 | /wL//wL//wL//wL//wCCggMFBQIDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 574 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 575 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgQEAAAAAv//Av// 576 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 577 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dCQwMBQcHAQIC 578 | AQEBAAEBAwQECAoKAQEBAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 579 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 580 | Av//Av//Av//AIKCAwUFAgMDAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 581 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 582 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEDBAQAAAAC//8C//8C//8C 583 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 584 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0ICwsEBgYBAQEAAQEB 585 | AQECAwMGCAgAAAAC//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 586 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 587 | //8C//8AgoICBAQCAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 588 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 589 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgAAAAL//wL//wL//wL//wL/ 590 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 591 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQYHBwIDAwABAQAAAAABAQIC 592 | AgQGBgAAAAL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 593 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 594 | /wCCggABAQECAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 595 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 596 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAAAAAv//Av//Av//Av//Av//Av// 597 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 598 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AB0dAwQEAQICAAAAAAAAAAAAAAEBAgQE 599 | AAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 600 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AIKC 601 | AAAAAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 602 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 603 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwMAAAAC//8C//8C//8C//8C//8C//8C//8C 604 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 605 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AHR0BAgIBAQEAAAAAAAAAAAAAAQEBAgIAAAAC 606 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C 607 | //8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8C//8AgoIAAAAA 608 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 609 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 610 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL//wL//wL//wL//wL//wL//wL//wL//wL/ 611 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 612 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wAdHQECAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAL//wL/ 613 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL/ 614 | /wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wL//wCCggAAAAAAAAAA 615 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 616 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 617 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv//Av//Av//Av//Av//Av//Av//Av//Av//Av// 618 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 619 | Av//Av//Av//Av//Av//Av//Av//Av//ABUVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAv//Av//Av// 620 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av// 621 | Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//Av//AIKCAAAAAAAAAAAAAAAA 622 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 623 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 624 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 625 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 626 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 627 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 628 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 629 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 630 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 631 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 632 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 633 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAA 634 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 635 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 636 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 637 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 638 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 639 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 640 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 641 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 642 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 643 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 644 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 645 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 646 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 647 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 648 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 649 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 650 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 651 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 652 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 653 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 654 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 655 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 656 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 657 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 658 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 659 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 660 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 661 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 662 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 663 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 664 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 665 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 666 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 667 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 668 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 669 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 670 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 671 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 672 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 673 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 674 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 675 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 676 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 677 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 678 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 679 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 680 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 681 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 682 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 683 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 684 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 685 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 686 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 687 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 688 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 689 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 690 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 691 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 692 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 693 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 694 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 695 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 696 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 697 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 698 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 699 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 700 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 701 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 702 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 703 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 704 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 705 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 706 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 707 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 708 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 709 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 710 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 711 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 712 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 713 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 714 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 715 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 716 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 717 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 718 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 719 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 720 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 721 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 722 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 723 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 724 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 725 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 726 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 727 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 728 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 729 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 730 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 731 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 732 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 733 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 734 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 735 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 736 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 737 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 738 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 739 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 740 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 741 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 742 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 743 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 744 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 745 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 746 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 747 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 748 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 749 | 750 | 751 | -------------------------------------------------------------------------------- /SteamCompanion/MainWindow.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SteamCompanion 2 | { 3 | partial class MainWindow 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(MainWindow)); 32 | this.textUserName = new System.Windows.Forms.TextBox(); 33 | this.getAllGames = new System.Windows.Forms.Button(); 34 | this.game_title = new System.Windows.Forms.Label(); 35 | this.listbox_categories = new System.Windows.Forms.ListBox(); 36 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 37 | this.label3 = new System.Windows.Forms.Label(); 38 | this.listbox_tags = new System.Windows.Forms.ListBox(); 39 | this.label4 = new System.Windows.Forms.Label(); 40 | this.label5 = new System.Windows.Forms.Label(); 41 | this.listbox_games = new System.Windows.Forms.ListBox(); 42 | this.menuStrip1 = new System.Windows.Forms.MenuStrip(); 43 | this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 44 | this.saveProfileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 45 | this.loadProfileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 46 | this.autosaveloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 47 | this.gameDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 48 | this.selectedGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 49 | this.getCategoriesAndTagsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 50 | this.getImagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 51 | this.getBothToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 52 | this.allGamesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 53 | this.getCategoriesAndTagsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); 54 | this.getImagesToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); 55 | this.getAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 56 | this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 57 | this.showGamesWithoutDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 58 | this.showGamesWithoutImagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 59 | this.getNewGames = new System.Windows.Forms.Button(); 60 | this.textGameFilter = new System.Windows.Forms.TextBox(); 61 | this.label1 = new System.Windows.Forms.Label(); 62 | this.statusStrip1 = new System.Windows.Forms.StatusStrip(); 63 | this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); 64 | this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); 65 | this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); 66 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 67 | this.menuStrip1.SuspendLayout(); 68 | this.statusStrip1.SuspendLayout(); 69 | this.SuspendLayout(); 70 | // 71 | // textUserName 72 | // 73 | this.textUserName.Location = new System.Drawing.Point(76, 32); 74 | this.textUserName.Name = "textUserName"; 75 | this.textUserName.Size = new System.Drawing.Size(258, 20); 76 | this.textUserName.TabIndex = 0; 77 | // 78 | // getAllGames 79 | // 80 | this.getAllGames.Location = new System.Drawing.Point(340, 30); 81 | this.getAllGames.Name = "getAllGames"; 82 | this.getAllGames.Size = new System.Drawing.Size(100, 23); 83 | this.getAllGames.TabIndex = 1; 84 | this.getAllGames.Text = "Get all games"; 85 | this.getAllGames.UseVisualStyleBackColor = true; 86 | this.getAllGames.Click += new System.EventHandler(this.getAllGames_Click); 87 | // 88 | // game_title 89 | // 90 | this.game_title.AutoSize = true; 91 | this.game_title.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 92 | this.game_title.Location = new System.Drawing.Point(544, 32); 93 | this.game_title.Name = "game_title"; 94 | this.game_title.Size = new System.Drawing.Size(137, 29); 95 | this.game_title.TabIndex = 3; 96 | this.game_title.Text = "Game title"; 97 | // 98 | // listbox_categories 99 | // 100 | this.listbox_categories.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 101 | | System.Windows.Forms.AnchorStyles.Left))); 102 | this.listbox_categories.FormattingEnabled = true; 103 | this.listbox_categories.Location = new System.Drawing.Point(12, 81); 104 | this.listbox_categories.Name = "listbox_categories"; 105 | this.listbox_categories.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple; 106 | this.listbox_categories.Size = new System.Drawing.Size(120, 459); 107 | this.listbox_categories.Sorted = true; 108 | this.listbox_categories.TabIndex = 4; 109 | this.listbox_categories.SelectedIndexChanged += new System.EventHandler(this.listbox_categories_SelectedIndexChanged); 110 | // 111 | // pictureBox1 112 | // 113 | this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 114 | | System.Windows.Forms.AnchorStyles.Left) 115 | | System.Windows.Forms.AnchorStyles.Right))); 116 | this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 117 | this.pictureBox1.Location = new System.Drawing.Point(549, 73); 118 | this.pictureBox1.MinimumSize = new System.Drawing.Size(300, 480); 119 | this.pictureBox1.Name = "pictureBox1"; 120 | this.pictureBox1.Size = new System.Drawing.Size(854, 480); 121 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; 122 | this.pictureBox1.TabIndex = 5; 123 | this.pictureBox1.TabStop = false; 124 | // 125 | // label3 126 | // 127 | this.label3.AutoSize = true; 128 | this.label3.Location = new System.Drawing.Point(12, 59); 129 | this.label3.Name = "label3"; 130 | this.label3.Size = new System.Drawing.Size(57, 13); 131 | this.label3.TabIndex = 7; 132 | this.label3.Text = "Categories"; 133 | // 134 | // listbox_tags 135 | // 136 | this.listbox_tags.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 137 | | System.Windows.Forms.AnchorStyles.Left))); 138 | this.listbox_tags.FormattingEnabled = true; 139 | this.listbox_tags.Location = new System.Drawing.Point(138, 81); 140 | this.listbox_tags.Name = "listbox_tags"; 141 | this.listbox_tags.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple; 142 | this.listbox_tags.Size = new System.Drawing.Size(120, 459); 143 | this.listbox_tags.Sorted = true; 144 | this.listbox_tags.TabIndex = 8; 145 | this.listbox_tags.SelectedIndexChanged += new System.EventHandler(this.listbox_tags_SelectedIndexChanged); 146 | // 147 | // label4 148 | // 149 | this.label4.AutoSize = true; 150 | this.label4.Location = new System.Drawing.Point(135, 59); 151 | this.label4.Name = "label4"; 152 | this.label4.Size = new System.Drawing.Size(31, 13); 153 | this.label4.TabIndex = 9; 154 | this.label4.Text = "Tags"; 155 | // 156 | // label5 157 | // 158 | this.label5.AutoSize = true; 159 | this.label5.Location = new System.Drawing.Point(261, 59); 160 | this.label5.Name = "label5"; 161 | this.label5.Size = new System.Drawing.Size(40, 13); 162 | this.label5.TabIndex = 11; 163 | this.label5.Text = "Games"; 164 | // 165 | // listbox_games 166 | // 167 | this.listbox_games.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 168 | | System.Windows.Forms.AnchorStyles.Left))); 169 | this.listbox_games.FormattingEnabled = true; 170 | this.listbox_games.Location = new System.Drawing.Point(264, 81); 171 | this.listbox_games.Name = "listbox_games"; 172 | this.listbox_games.Size = new System.Drawing.Size(279, 459); 173 | this.listbox_games.Sorted = true; 174 | this.listbox_games.TabIndex = 10; 175 | this.listbox_games.SelectedIndexChanged += new System.EventHandler(this.listbox_games_SelectedIndexChanged); 176 | this.listbox_games.DoubleClick += new System.EventHandler(this.listbox_games_DoubleClick); 177 | this.listbox_games.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listbox_games_KeyDown); 178 | this.listbox_games.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.listbox_games_PreviewKeyDown); 179 | // 180 | // menuStrip1 181 | // 182 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 183 | this.fileToolStripMenuItem, 184 | this.gameDataToolStripMenuItem, 185 | this.toolsToolStripMenuItem}); 186 | this.menuStrip1.Location = new System.Drawing.Point(0, 0); 187 | this.menuStrip1.Name = "menuStrip1"; 188 | this.menuStrip1.Size = new System.Drawing.Size(1414, 24); 189 | this.menuStrip1.TabIndex = 12; 190 | this.menuStrip1.Text = "menuStrip1"; 191 | // 192 | // fileToolStripMenuItem 193 | // 194 | this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 195 | this.saveProfileToolStripMenuItem, 196 | this.loadProfileToolStripMenuItem, 197 | this.autosaveloadToolStripMenuItem}); 198 | this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; 199 | this.fileToolStripMenuItem.Size = new System.Drawing.Size(53, 20); 200 | this.fileToolStripMenuItem.Text = "Profile"; 201 | // 202 | // saveProfileToolStripMenuItem 203 | // 204 | this.saveProfileToolStripMenuItem.Name = "saveProfileToolStripMenuItem"; 205 | this.saveProfileToolStripMenuItem.Size = new System.Drawing.Size(151, 22); 206 | this.saveProfileToolStripMenuItem.Text = "Save profile"; 207 | this.saveProfileToolStripMenuItem.Click += new System.EventHandler(this.saveProfileToolStripMenuItem_Click); 208 | // 209 | // loadProfileToolStripMenuItem 210 | // 211 | this.loadProfileToolStripMenuItem.Name = "loadProfileToolStripMenuItem"; 212 | this.loadProfileToolStripMenuItem.Size = new System.Drawing.Size(151, 22); 213 | this.loadProfileToolStripMenuItem.Text = "Load profile"; 214 | this.loadProfileToolStripMenuItem.Click += new System.EventHandler(this.loadProfileToolStripMenuItem_Click); 215 | // 216 | // autosaveloadToolStripMenuItem 217 | // 218 | this.autosaveloadToolStripMenuItem.CheckOnClick = true; 219 | this.autosaveloadToolStripMenuItem.Name = "autosaveloadToolStripMenuItem"; 220 | this.autosaveloadToolStripMenuItem.Size = new System.Drawing.Size(151, 22); 221 | this.autosaveloadToolStripMenuItem.Text = "Autosave/load"; 222 | // 223 | // gameDataToolStripMenuItem 224 | // 225 | this.gameDataToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 226 | this.selectedGameToolStripMenuItem, 227 | this.allGamesToolStripMenuItem}); 228 | this.gameDataToolStripMenuItem.Name = "gameDataToolStripMenuItem"; 229 | this.gameDataToolStripMenuItem.Size = new System.Drawing.Size(76, 20); 230 | this.gameDataToolStripMenuItem.Text = "Game data"; 231 | // 232 | // selectedGameToolStripMenuItem 233 | // 234 | this.selectedGameToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 235 | this.getCategoriesAndTagsToolStripMenuItem, 236 | this.getImagesToolStripMenuItem, 237 | this.getBothToolStripMenuItem}); 238 | this.selectedGameToolStripMenuItem.Name = "selectedGameToolStripMenuItem"; 239 | this.selectedGameToolStripMenuItem.Size = new System.Drawing.Size(151, 22); 240 | this.selectedGameToolStripMenuItem.Text = "Selected game"; 241 | // 242 | // getCategoriesAndTagsToolStripMenuItem 243 | // 244 | this.getCategoriesAndTagsToolStripMenuItem.Name = "getCategoriesAndTagsToolStripMenuItem"; 245 | this.getCategoriesAndTagsToolStripMenuItem.Size = new System.Drawing.Size(197, 22); 246 | this.getCategoriesAndTagsToolStripMenuItem.Text = "Get categories and tags"; 247 | this.getCategoriesAndTagsToolStripMenuItem.Click += new System.EventHandler(this.getCategoriesAndTagsToolStripMenuItem_Click); 248 | // 249 | // getImagesToolStripMenuItem 250 | // 251 | this.getImagesToolStripMenuItem.Name = "getImagesToolStripMenuItem"; 252 | this.getImagesToolStripMenuItem.Size = new System.Drawing.Size(197, 22); 253 | this.getImagesToolStripMenuItem.Text = "Get images"; 254 | this.getImagesToolStripMenuItem.Click += new System.EventHandler(this.getImagesToolStripMenuItem_Click); 255 | // 256 | // getBothToolStripMenuItem 257 | // 258 | this.getBothToolStripMenuItem.Name = "getBothToolStripMenuItem"; 259 | this.getBothToolStripMenuItem.Size = new System.Drawing.Size(197, 22); 260 | this.getBothToolStripMenuItem.Text = "Get both"; 261 | this.getBothToolStripMenuItem.Click += new System.EventHandler(this.getBothToolStripMenuItem_Click); 262 | // 263 | // allGamesToolStripMenuItem 264 | // 265 | this.allGamesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 266 | this.getCategoriesAndTagsToolStripMenuItem1, 267 | this.getImagesToolStripMenuItem1, 268 | this.getAllToolStripMenuItem}); 269 | this.allGamesToolStripMenuItem.Name = "allGamesToolStripMenuItem"; 270 | this.allGamesToolStripMenuItem.Size = new System.Drawing.Size(151, 22); 271 | this.allGamesToolStripMenuItem.Text = "All games"; 272 | // 273 | // getCategoriesAndTagsToolStripMenuItem1 274 | // 275 | this.getCategoriesAndTagsToolStripMenuItem1.Name = "getCategoriesAndTagsToolStripMenuItem1"; 276 | this.getCategoriesAndTagsToolStripMenuItem1.Size = new System.Drawing.Size(197, 22); 277 | this.getCategoriesAndTagsToolStripMenuItem1.Text = "Get categories and tags"; 278 | this.getCategoriesAndTagsToolStripMenuItem1.Click += new System.EventHandler(this.getCategoriesAndTagsToolStripMenuItem1_Click); 279 | // 280 | // getImagesToolStripMenuItem1 281 | // 282 | this.getImagesToolStripMenuItem1.Name = "getImagesToolStripMenuItem1"; 283 | this.getImagesToolStripMenuItem1.Size = new System.Drawing.Size(197, 22); 284 | this.getImagesToolStripMenuItem1.Text = "Get images"; 285 | this.getImagesToolStripMenuItem1.Click += new System.EventHandler(this.getImagesToolStripMenuItem1_Click); 286 | // 287 | // getAllToolStripMenuItem 288 | // 289 | this.getAllToolStripMenuItem.Name = "getAllToolStripMenuItem"; 290 | this.getAllToolStripMenuItem.Size = new System.Drawing.Size(197, 22); 291 | this.getAllToolStripMenuItem.Text = "Get all"; 292 | this.getAllToolStripMenuItem.Click += new System.EventHandler(this.getAllToolStripMenuItem_Click); 293 | // 294 | // toolsToolStripMenuItem 295 | // 296 | this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 297 | this.showGamesWithoutDataToolStripMenuItem, 298 | this.showGamesWithoutImagesToolStripMenuItem}); 299 | this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; 300 | this.toolsToolStripMenuItem.Size = new System.Drawing.Size(48, 20); 301 | this.toolsToolStripMenuItem.Text = "Tools"; 302 | // 303 | // showGamesWithoutDataToolStripMenuItem 304 | // 305 | this.showGamesWithoutDataToolStripMenuItem.Name = "showGamesWithoutDataToolStripMenuItem"; 306 | this.showGamesWithoutDataToolStripMenuItem.Size = new System.Drawing.Size(226, 22); 307 | this.showGamesWithoutDataToolStripMenuItem.Text = "Show games without data"; 308 | this.showGamesWithoutDataToolStripMenuItem.Click += new System.EventHandler(this.showGamesWithoutDataToolStripMenuItem_Click); 309 | // 310 | // showGamesWithoutImagesToolStripMenuItem 311 | // 312 | this.showGamesWithoutImagesToolStripMenuItem.Name = "showGamesWithoutImagesToolStripMenuItem"; 313 | this.showGamesWithoutImagesToolStripMenuItem.Size = new System.Drawing.Size(226, 22); 314 | this.showGamesWithoutImagesToolStripMenuItem.Text = "Show games without images"; 315 | this.showGamesWithoutImagesToolStripMenuItem.Click += new System.EventHandler(this.showGamesWithoutImagesToolStripMenuItem_Click); 316 | // 317 | // getNewGames 318 | // 319 | this.getNewGames.Location = new System.Drawing.Point(443, 30); 320 | this.getNewGames.Name = "getNewGames"; 321 | this.getNewGames.Size = new System.Drawing.Size(100, 23); 322 | this.getNewGames.TabIndex = 13; 323 | this.getNewGames.Text = "Update game list"; 324 | this.getNewGames.UseVisualStyleBackColor = true; 325 | this.getNewGames.Click += new System.EventHandler(this.getNewGames_Click); 326 | // 327 | // textGameFilter 328 | // 329 | this.textGameFilter.Location = new System.Drawing.Point(307, 56); 330 | this.textGameFilter.Name = "textGameFilter"; 331 | this.textGameFilter.Size = new System.Drawing.Size(236, 20); 332 | this.textGameFilter.TabIndex = 14; 333 | this.textGameFilter.TextChanged += new System.EventHandler(this.textGameFilter_TextChanged); 334 | // 335 | // label1 336 | // 337 | this.label1.AutoSize = true; 338 | this.label1.Location = new System.Drawing.Point(12, 35); 339 | this.label1.Name = "label1"; 340 | this.label1.Size = new System.Drawing.Size(58, 13); 341 | this.label1.TabIndex = 15; 342 | this.label1.Text = "Username:"; 343 | // 344 | // statusStrip1 345 | // 346 | this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 347 | this.toolStripStatusLabel1, 348 | this.toolStripStatusLabel2, 349 | this.toolStripStatusLabel3}); 350 | this.statusStrip1.Location = new System.Drawing.Point(0, 557); 351 | this.statusStrip1.Name = "statusStrip1"; 352 | this.statusStrip1.Size = new System.Drawing.Size(1414, 24); 353 | this.statusStrip1.SizingGrip = false; 354 | this.statusStrip1.TabIndex = 16; 355 | this.statusStrip1.Text = "statusStrip1"; 356 | // 357 | // toolStripStatusLabel1 358 | // 359 | this.toolStripStatusLabel1.BorderStyle = System.Windows.Forms.Border3DStyle.Etched; 360 | this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; 361 | this.toolStripStatusLabel1.Size = new System.Drawing.Size(63, 19); 362 | this.toolStripStatusLabel1.Text = "Categories"; 363 | // 364 | // toolStripStatusLabel2 365 | // 366 | this.toolStripStatusLabel2.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right))); 367 | this.toolStripStatusLabel2.BorderStyle = System.Windows.Forms.Border3DStyle.Etched; 368 | this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; 369 | this.toolStripStatusLabel2.Size = new System.Drawing.Size(36, 19); 370 | this.toolStripStatusLabel2.Text = "Tags"; 371 | // 372 | // toolStripStatusLabel3 373 | // 374 | this.toolStripStatusLabel3.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right; 375 | this.toolStripStatusLabel3.BorderStyle = System.Windows.Forms.Border3DStyle.Etched; 376 | this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; 377 | this.toolStripStatusLabel3.Size = new System.Drawing.Size(47, 19); 378 | this.toolStripStatusLabel3.Text = "Games"; 379 | // 380 | // MainWindow 381 | // 382 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 383 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 384 | this.ClientSize = new System.Drawing.Size(1414, 581); 385 | this.Controls.Add(this.statusStrip1); 386 | this.Controls.Add(this.label1); 387 | this.Controls.Add(this.textGameFilter); 388 | this.Controls.Add(this.getNewGames); 389 | this.Controls.Add(this.label5); 390 | this.Controls.Add(this.listbox_games); 391 | this.Controls.Add(this.label4); 392 | this.Controls.Add(this.listbox_tags); 393 | this.Controls.Add(this.label3); 394 | this.Controls.Add(this.pictureBox1); 395 | this.Controls.Add(this.listbox_categories); 396 | this.Controls.Add(this.game_title); 397 | this.Controls.Add(this.getAllGames); 398 | this.Controls.Add(this.textUserName); 399 | this.Controls.Add(this.menuStrip1); 400 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 401 | this.MainMenuStrip = this.menuStrip1; 402 | this.MinimumSize = new System.Drawing.Size(800, 600); 403 | this.Name = "MainWindow"; 404 | this.Text = "SteamCompanion"; 405 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainWindow_FormClosing); 406 | this.Load += new System.EventHandler(this.Form1_Load); 407 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 408 | this.menuStrip1.ResumeLayout(false); 409 | this.menuStrip1.PerformLayout(); 410 | this.statusStrip1.ResumeLayout(false); 411 | this.statusStrip1.PerformLayout(); 412 | this.ResumeLayout(false); 413 | this.PerformLayout(); 414 | 415 | } 416 | 417 | #endregion 418 | 419 | private System.Windows.Forms.TextBox textUserName; 420 | private System.Windows.Forms.Button getAllGames; 421 | private System.Windows.Forms.Label game_title; 422 | private System.Windows.Forms.ListBox listbox_categories; 423 | private System.Windows.Forms.PictureBox pictureBox1; 424 | private System.Windows.Forms.Label label3; 425 | private System.Windows.Forms.ListBox listbox_tags; 426 | private System.Windows.Forms.Label label4; 427 | private System.Windows.Forms.Label label5; 428 | private System.Windows.Forms.ListBox listbox_games; 429 | private System.Windows.Forms.MenuStrip menuStrip1; 430 | private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; 431 | private System.Windows.Forms.ToolStripMenuItem saveProfileToolStripMenuItem; 432 | private System.Windows.Forms.ToolStripMenuItem loadProfileToolStripMenuItem; 433 | private System.Windows.Forms.ToolStripMenuItem gameDataToolStripMenuItem; 434 | private System.Windows.Forms.ToolStripMenuItem selectedGameToolStripMenuItem; 435 | private System.Windows.Forms.ToolStripMenuItem getCategoriesAndTagsToolStripMenuItem; 436 | private System.Windows.Forms.ToolStripMenuItem getImagesToolStripMenuItem; 437 | private System.Windows.Forms.ToolStripMenuItem getBothToolStripMenuItem; 438 | private System.Windows.Forms.ToolStripMenuItem allGamesToolStripMenuItem; 439 | private System.Windows.Forms.ToolStripMenuItem getCategoriesAndTagsToolStripMenuItem1; 440 | private System.Windows.Forms.ToolStripMenuItem getImagesToolStripMenuItem1; 441 | private System.Windows.Forms.ToolStripMenuItem getAllToolStripMenuItem; 442 | private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem; 443 | private System.Windows.Forms.ToolStripMenuItem showGamesWithoutDataToolStripMenuItem; 444 | private System.Windows.Forms.ToolStripMenuItem showGamesWithoutImagesToolStripMenuItem; 445 | private System.Windows.Forms.Button getNewGames; 446 | private System.Windows.Forms.TextBox textGameFilter; 447 | private System.Windows.Forms.ToolStripMenuItem autosaveloadToolStripMenuItem; 448 | private System.Windows.Forms.Label label1; 449 | private System.Windows.Forms.StatusStrip statusStrip1; 450 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; 451 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; 452 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; 453 | } 454 | } 455 | 456 | -------------------------------------------------------------------------------- /SteamCompanion/MainWindow.cs: -------------------------------------------------------------------------------- 1 | using SteamCompanion.Properties; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Data; 5 | using System.Diagnostics; 6 | using System.Drawing; 7 | using System.Globalization; 8 | using System.IO; 9 | using System.Linq; 10 | using System.Net; 11 | using System.Text; 12 | using System.Text.RegularExpressions; 13 | using System.Windows.Forms; 14 | using System.Xml.Serialization; 15 | 16 | namespace SteamCompanion 17 | { 18 | public struct Game 19 | { 20 | public string name; 21 | public string id; 22 | public List tags; 23 | public List genres; 24 | 25 | public override string ToString() 26 | { 27 | return name; 28 | } 29 | } 30 | 31 | public partial class MainWindow : Form 32 | { 33 | private int img_index; 34 | private List games; 35 | private List game_images; 36 | private Dictionary> games_by_genre; 37 | private Dictionary> games_by_tag; 38 | private List ids; 39 | 40 | public MainWindow() 41 | { 42 | InitializeComponent(); 43 | } 44 | 45 | private void load(Game game) 46 | { 47 | //We add the game's tags to the main list of tags 48 | //We also add the game to the Tag/Games dictionary 49 | if (game.tags != null) 50 | { 51 | foreach (String tag in game.tags) 52 | { 53 | if (!listbox_tags.Items.Contains(tag)) 54 | { 55 | listbox_tags.Items.Add(tag); 56 | } 57 | 58 | if (games_by_tag.ContainsKey(tag)) 59 | { 60 | games_by_tag[tag].Add(game); 61 | } 62 | else 63 | { 64 | games_by_tag.Add(tag, new List()); 65 | games_by_tag[tag].Add(game); 66 | } 67 | } 68 | } 69 | 70 | //We do the same with genres/categories 71 | if (game.genres != null) 72 | { 73 | foreach (String cat in game.genres) 74 | { 75 | if (!listbox_categories.Items.Contains(cat)) 76 | { 77 | listbox_categories.Items.Add(cat); 78 | } 79 | 80 | if (games_by_genre.ContainsKey(cat)) 81 | { 82 | games_by_genre[cat].Add(game); 83 | } 84 | else 85 | { 86 | games_by_genre.Add(cat, new List()); 87 | games_by_genre[cat].Add(game); 88 | } 89 | } 90 | } 91 | 92 | //We add the game's ID to the list of all IDs 93 | if(!ids.Contains(Int32.Parse(game.id))) ids.Add(Int32.Parse(game.id)); 94 | 95 | //Update status bar 96 | toolStripStatusLabel1.Text = games_by_genre.Count + " Categories"; 97 | toolStripStatusLabel2.Text = games_by_tag.Count + " Tags"; 98 | toolStripStatusLabel3.Text = games.Count + " Games"; 99 | } 100 | 101 | private void Form1_Load(object sender, EventArgs e) 102 | { 103 | img_index = 0; 104 | games = new List(); 105 | game_images = new List(); 106 | games_by_genre = new Dictionary>(); 107 | games_by_tag = new Dictionary>(); 108 | ids = new List(); 109 | 110 | listbox_games.DataSource = games; 111 | 112 | // Set window location 113 | if (Settings.Default.WindowLocation != null) 114 | { 115 | this.Location = Settings.Default.WindowLocation; 116 | } 117 | 118 | // If autosave is checked, we load the autosave file 119 | autosaveloadToolStripMenuItem.Checked = Settings.Default.autosave; 120 | if(autosaveloadToolStripMenuItem.Checked) 121 | { 122 | if(File.Exists("autosave.xml")) 123 | { 124 | loadProfile("autosave.xml"); 125 | } 126 | } 127 | } 128 | 129 | private void getAllGames_Click(object sender, EventArgs e) 130 | { 131 | //We get all the user's games 132 | if (!String.IsNullOrEmpty(textUserName.Text)) 133 | { 134 | //Check user profile and obtain all games and ids 135 | WebClient x = new WebClient(); 136 | x.Encoding = Encoding.UTF8; 137 | x.Headers.Add(HttpRequestHeader.Cookie, "birthtime=-2208959999"); 138 | 139 | string source = x.DownloadString("http://steamcommunity.com/id/" + textUserName.Text + "/games/?tab=all"); 140 | //MatchCollection matches = Regex.Matches(source, "appid\":(\\d+),\"name\":\"(.*?)\",\"logo", RegexOptions.IgnoreCase); 141 | //appid\":(\\d+),\"name\":\"(.*?)\",\"logo.*friendlyURL\":.+?,\"(.*?)\":\"(.+?)\" 142 | //MatchCollection matches = Regex.Matches(source, "appid\":(\\d+),\"name\":\"(.*?)\",\"logo.*?friendlyURL\":.+?,\"(.*?)\":\"(.+?)\",\"(.*?)\":(.+?)\"", RegexOptions.IgnoreCase); 143 | MatchCollection matches = Regex.Matches(source, "{\"appid\":(\\d+),\"name\":\"(.+?)\"(.*?)}(.*?)}", RegexOptions.IgnoreCase); 144 | 145 | games.Clear(); 146 | listbox_categories.Items.Clear(); 147 | listbox_tags.Items.Clear(); 148 | 149 | games_by_genre.Clear(); 150 | games_by_tag.Clear(); 151 | 152 | //For each result, we create a game with the obtained name and ID and add it to the list 153 | if (matches.Count > 0) 154 | { 155 | foreach (Match ma in matches) 156 | { 157 | Game aux_game = new Game(); 158 | aux_game.id = WebUtility.HtmlDecode(ma.Groups[1].Value.Trim());; 159 | aux_game.name = WebUtility.HtmlDecode(ma.Groups[2].Value.Trim()); 160 | //Because some games have unicode characters, we look for \u followed by 4 characters and convert that into a single character 161 | Regex rx = new Regex(@"\\[uU]([0-9A-Fa-f]{4})"); 162 | aux_game.name = rx.Replace(aux_game.name, match => ((char)Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)).ToString()); 163 | Match hours = Regex.Match(WebUtility.HtmlDecode(ma.Groups[3].Value.Trim()), "hours_forever\":\"(.+?)\""); 164 | if(hours.Success) 165 | { 166 | float hours_played = float.Parse(hours.Value.Trim()); 167 | if (hours_played <= 1) 168 | { 169 | aux_game.tags = new List(); 170 | aux_game.tags.Add("Less than 1h played"); 171 | } 172 | } 173 | //If we don't get "hours_forever" that means we haven't played it 174 | else 175 | { 176 | aux_game.tags = new List(); 177 | aux_game.tags.Add("Less than 1h played"); 178 | aux_game.tags.Add("Never played"); 179 | } 180 | games.Add(aux_game); 181 | load(aux_game); 182 | } 183 | } 184 | //We update all the listboxes in the form 185 | listbox_games.DataSource = null; 186 | generate_list(); 187 | } 188 | } 189 | 190 | private void getNewGames_Click(object sender, EventArgs e) 191 | { 192 | //Like getAllGames, but we check if the game already exists using the list of IDs 193 | if (!String.IsNullOrEmpty(textUserName.Text)) 194 | { 195 | WebClient x = new WebClient(); 196 | x.Encoding = Encoding.UTF8; 197 | x.Headers.Add(HttpRequestHeader.Cookie, "birthtime=-2208959999"); 198 | 199 | string source = x.DownloadString("http://steamcommunity.com/id/" + textUserName.Text + "/games/?tab=all"); 200 | //MatchCollection matches = Regex.Matches(source, "appid\":(\\d+),\"name\":\"(.*?)\",\"logo", RegexOptions.IgnoreCase); 201 | //MatchCollection matches = Regex.Matches(source, "appid\":(\\d+),\"name\":\"(.*?)\",\"logo.*?friendlyURL\":.+?,\"(.*?)\":\"(.+?)\"", RegexOptions.IgnoreCase); 202 | MatchCollection matches = Regex.Matches(source, "{\"appid\":(\\d+),\"name\":\"(.+?)\"(.*?)}(.*?)}", RegexOptions.IgnoreCase); 203 | 204 | if (matches.Count > 0) 205 | { 206 | foreach (Match ma in matches) 207 | { 208 | Game aux_game = new Game(); 209 | aux_game.id = WebUtility.HtmlDecode(ma.Groups[1].Value.Trim());; 210 | aux_game.name = WebUtility.HtmlDecode(ma.Groups[2].Value.Trim()); 211 | //Because some games have unicode characters, we look for \u followed by 4 characters and convert that into a single character 212 | Regex rx = new Regex(@"\\[uU]([0-9A-Fa-f]{4})"); 213 | aux_game.name = rx.Replace(aux_game.name, match => ((char)Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)).ToString()); 214 | Match hours = Regex.Match(WebUtility.HtmlDecode(ma.Groups[3].Value.Trim()), "hours_forever\":\"(.+?)\""); 215 | if (hours.Success) 216 | { 217 | float hours_played = float.Parse(hours.Value.Trim()); 218 | if (hours_played <= 1) 219 | { 220 | aux_game.tags = new List(); 221 | aux_game.tags.Add("Less than 1h played"); 222 | } 223 | } 224 | //If we don't get "hours_forever" that means we haven't played it 225 | else 226 | { 227 | aux_game.tags = new List(); 228 | aux_game.tags.Add("Less than 1h played"); 229 | aux_game.tags.Add("Never played"); 230 | } 231 | if (ids.Contains(Int32.Parse(aux_game.id))) 232 | { 233 | Console.Write("Game " + aux_game.name + " (" + aux_game.id + ") already exists\n"); 234 | } 235 | else 236 | { 237 | //If it doesn't exist, we ask the user if they want to add the game to the list 238 | Console.Write("New game found: " + aux_game.name + "(" + aux_game.id + ")\n"); 239 | DialogResult dialogResult = MessageBox.Show("Do you want to add " + aux_game.name + " (" + aux_game.id + ") to the list?", "New game found", MessageBoxButtons.YesNoCancel); 240 | switch(dialogResult) 241 | { 242 | case DialogResult.Cancel: 243 | return; 244 | case DialogResult.Yes: 245 | Console.Write(" Adding game to list\n"); 246 | games.Add(aux_game); 247 | load(aux_game); 248 | break; 249 | case DialogResult.No: 250 | Console.Write(" Skipping game\n"); 251 | break; 252 | } 253 | } 254 | } 255 | //We update all the listboxes in the form 256 | listbox_games.DataSource = null; 257 | generate_list(); 258 | } 259 | } 260 | } 261 | 262 | private Game get_tags_genres(String id) 263 | { 264 | //We load the game's store page and get the name, genres and tags 265 | WebClient x = new WebClient(); 266 | x.Encoding = Encoding.UTF8; 267 | x.Headers.Add(HttpRequestHeader.Cookie, "birthtime=-2208959999"); 268 | 269 | string source = x.DownloadString("http://store.steampowered.com/app/" + id); 270 | 271 | Game aux_game = new Game(); 272 | //data-appid="31290" 273 | Match match = Regex.Match(source, "data-appid=\"(\\d+?)\"", RegexOptions.IgnoreCase); 274 | aux_game.name = ""; 275 | aux_game.id = id; 276 | 277 | if (match.Success) 278 | { 279 | string appid = WebUtility.HtmlDecode(match.Groups[1].Value); 280 | //We check if the ID returned by the store is the same as the game's ID. We can remove things like Back to the future episodes this way, or duplicated games 281 | if (appid == id) 282 | { 283 | match = Regex.Match(source, "
(.+)
", RegexOptions.IgnoreCase); 284 | string title = WebUtility.HtmlDecode(match.Groups[1].Value); 285 | //Because some games have unicode characters, we look for \u followed by 4 characters and convert that into a single character 286 | Regex rx = new Regex(@"\\[uU]([0-9A-Fa-f]{4})"); 287 | title = rx.Replace(title, matchutf => ((char)Int32.Parse(matchutf.Value.Substring(2), NumberStyles.HexNumber)).ToString()); 288 | 289 | aux_game.name = title; 290 | aux_game.id = id; 291 | Console.Write("Processing data for " + aux_game.name + " with ID: " + aux_game.id + "\n"); 292 | aux_game.genres = new List(); 293 | aux_game.tags = new List(); 294 | 295 | Regex regTags = new Regex("]*class=\\\"app_tag\\\"[^>]*>([^<]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); 296 | 297 | //We add each found tag to the game 298 | MatchCollection matches = regTags.Matches(source); 299 | if (matches.Count > 0) 300 | { 301 | foreach (Match ma in matches) 302 | { 303 | string tag = WebUtility.HtmlDecode(ma.Groups[1].Value.Trim()); ; 304 | if (!string.IsNullOrWhiteSpace(tag)) 305 | { 306 | aux_game.tags.Add(tag); 307 | } 308 | } 309 | } 310 | 311 | string regexp = "\"description\":\"(.*?)\""; 312 | source = x.DownloadString("http://store.steampowered.com/api/appdetails/?appids=" + id); 313 | 314 | //We add each found genre to the game 315 | matches = Regex.Matches(source, regexp); 316 | if (matches.Count > 0) 317 | { 318 | foreach (Match ma in matches) 319 | { 320 | string genre = WebUtility.HtmlDecode(ma.Groups[1].Value.Trim()); ; 321 | if (!string.IsNullOrWhiteSpace(genre)) 322 | { 323 | aux_game.genres.Add(genre); 324 | } 325 | } 326 | } 327 | } 328 | else 329 | { 330 | aux_game.id = "-1"; 331 | } 332 | } 333 | 334 | return aux_game; 335 | } 336 | 337 | private void get_images(String id) 338 | { 339 | WebClient x = new WebClient(); 340 | x.Headers.Add(HttpRequestHeader.Cookie, "birthtime=-2208959999"); 341 | 342 | string source = x.DownloadString("http://store.steampowered.com/app/" + id + "/?snr=1_4_4__131"); 343 | 344 | Console.Write("Processing images for game " + id + "\n"); 345 | MatchCollection matches = Regex.Matches(source, "screenshotid=\"(.+)\" target"); 346 | int downloaded = 0; 347 | if (matches.Count > 0) 348 | { 349 | //We open the game's store page and get all the screenshots 350 | string photoPath = "Screens/" + id + "/"; 351 | System.IO.DirectoryInfo newFolder = new System.IO.DirectoryInfo(photoPath); 352 | if (!newFolder.Exists) 353 | { 354 | newFolder.Create(); 355 | } 356 | //We download each screenshot to the game's directory 357 | foreach (Match ma in matches) 358 | { 359 | if (ma.Success) 360 | { 361 | string captura = ma.Groups[1].Value; 362 | if (!File.Exists(photoPath + "/" + captura)) 363 | { 364 | try 365 | { 366 | x.DownloadFile("http://cdn.akamai.steamstatic.com/steam/apps/" + id + "/" + captura, photoPath + "/" + captura); 367 | Console.Write(" Downloading image " + captura + "\n"); 368 | downloaded++; 369 | } 370 | catch (WebException ex) 371 | { 372 | if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) 373 | if ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotFound) 374 | { 375 | Console.Write(" Error downloading image " + captura + "\n"); 376 | downloaded--; 377 | } 378 | } 379 | } 380 | } 381 | } 382 | } 383 | //Sometimes the game is removed from the store, so we use the Steam api to get the pictures, as they are still on the server 384 | if (downloaded <= 0) 385 | { 386 | source = x.DownloadString("http://store.steampowered.com/api/appdetails/?appids=" + id); 387 | 388 | //steam_appid":3200 389 | string regex = "steam_appid\":(\\d+)"; 390 | Match match = Regex.Match(source, regex); 391 | string other_id = match.Groups[1].Value; 392 | 393 | regex = "path_full.*?apps\\\\/\\d+\\\\/(.+?)\\..+?\\.jpg"; 394 | matches = Regex.Matches(source, regex); 395 | if (matches.Count > 0) 396 | { 397 | string photoPath = "Screens/" + id + "/"; 398 | System.IO.DirectoryInfo newFolder = new System.IO.DirectoryInfo(photoPath); 399 | if (!newFolder.Exists) 400 | { 401 | newFolder.Create(); 402 | } 403 | foreach (Match ma in matches) 404 | { 405 | if (ma.Success) 406 | { 407 | string captura = ma.Groups[1].Value + ".jpg"; 408 | if (!File.Exists(photoPath + "/" + captura)) 409 | { 410 | try 411 | { 412 | x.DownloadFile("http://cdn.akamai.steamstatic.com/steam/apps/" + other_id + "/" + captura, photoPath + "/" + captura); 413 | } 414 | catch (WebException ex) 415 | { 416 | if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) 417 | if ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotFound) 418 | Console.Write(" Error downloading image " + captura + "\n"); 419 | } 420 | } 421 | } 422 | } 423 | } 424 | } 425 | } 426 | 427 | private void listbox_games_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 428 | { 429 | if (listbox_games.SelectedItems.Count > 0) 430 | { 431 | switch (e.KeyCode) 432 | { 433 | //If the user presses right we show the next image from the selected game 434 | case System.Windows.Forms.Keys.Right: 435 | if (game_images.Count > 0) 436 | { 437 | img_index++; 438 | if (img_index >= game_images.Count) 439 | img_index = 0; 440 | pictureBox1.Image = game_images[img_index]; 441 | } 442 | break; 443 | 444 | //Left selects a random game 445 | case System.Windows.Forms.Keys.Left: 446 | Random rnd = new Random(); 447 | listbox_games.SelectedIndex = rnd.Next(0, listbox_games.Items.Count); 448 | break; 449 | 450 | //Enter launches the game 451 | case System.Windows.Forms.Keys.Enter: 452 | Process.Start("steam://run/" + ((Game)listbox_games.SelectedItem).id); 453 | break; 454 | 455 | //Delete removes the game from the list and all the images, asking the user first for confirmation 456 | case System.Windows.Forms.Keys.Delete: 457 | DialogResult dialogResult = MessageBox.Show("Do you want to delete " + ((Game)listbox_games.SelectedItem).name + " and all its screens?", "Delete confirmation", MessageBoxButtons.YesNo); 458 | if (dialogResult == DialogResult.Yes) 459 | { 460 | //We unload the images so they are not in use and we can delete them 461 | foreach (Image i in game_images) 462 | { 463 | i.Dispose(); 464 | } 465 | game_images.Clear(); 466 | pictureBox1.Image = null; 467 | ids.Remove(Int32.Parse(((Game)listbox_games.SelectedItem).id)); 468 | games.Remove(((Game)listbox_games.SelectedItem)); 469 | if (Directory.Exists("Screens/" + ((Game)listbox_games.SelectedItem).id + "/")) 470 | Directory.Delete("Screens/" + ((Game)listbox_games.SelectedItem).id + "/", true); 471 | listbox_games.DataSource = null; 472 | generate_list(); 473 | } 474 | break; 475 | 476 | //Space opens the screens directory for the game so the user can add his/her own screenshots 477 | case System.Windows.Forms.Keys.Space: 478 | if (!Directory.Exists("Screens/" + ((Game)listbox_games.SelectedItem).id + "/")) 479 | Directory.CreateDirectory("Screens/" + ((Game)listbox_games.SelectedItem).id + "/"); 480 | Process.Start(AppDomain.CurrentDomain.BaseDirectory + "/Screens/" + ((Game)listbox_games.SelectedItem).id + "/"); 481 | break; 482 | } 483 | } 484 | } 485 | 486 | private void listbox_games_KeyDown(object sender, KeyEventArgs e) 487 | { 488 | //We "mark" the right and left keys as handled so they don't jump to the next/previous item on the listbox 489 | switch (e.KeyCode) 490 | { 491 | case System.Windows.Forms.Keys.Right: 492 | e.Handled = true; 493 | break; 494 | 495 | case System.Windows.Forms.Keys.Left: 496 | e.Handled = true; 497 | break; 498 | } 499 | } 500 | 501 | private void saveProfileToolStripMenuItem_Click(object sender, EventArgs e) 502 | { 503 | //We ask the user for a file and save the profile on that file 504 | SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 505 | saveFileDialog1.InitialDirectory = Application.StartupPath; 506 | saveFileDialog1.Filter = "XML file|*.xml"; 507 | saveFileDialog1.Title = "Save the Profile File"; 508 | saveFileDialog1.ShowDialog(); 509 | 510 | if (saveFileDialog1.FileName != "") 511 | { 512 | saveProfile(saveFileDialog1.FileName); 513 | } 514 | } 515 | 516 | private void saveProfile(string file) 517 | { 518 | // Create a new XmlSerializer instance with the type of the test class 519 | XmlSerializer SerializerObj = new XmlSerializer(typeof(List)); 520 | 521 | // Create a new file stream to write the serialized object to a file 522 | TextWriter WriteFileStream = new StreamWriter(file); 523 | 524 | //We save the whole games list 525 | SerializerObj.Serialize(WriteFileStream, games); 526 | 527 | // Cleanup 528 | WriteFileStream.Close(); 529 | } 530 | 531 | private void loadProfileToolStripMenuItem_Click(object sender, EventArgs e) 532 | { 533 | //We ask the user for a file and load the profile on that file 534 | OpenFileDialog openFileDialog1 = new OpenFileDialog(); 535 | openFileDialog1.InitialDirectory = Application.StartupPath; 536 | openFileDialog1.Filter = "XML file|*.xml"; 537 | openFileDialog1.Title = "Load the Profile File"; 538 | openFileDialog1.ShowDialog(); 539 | 540 | if (openFileDialog1.FileName != "") 541 | { 542 | loadProfile(openFileDialog1.FileName); 543 | } 544 | } 545 | 546 | private void loadProfile(string file) 547 | { 548 | games.Clear(); 549 | listbox_categories.Items.Clear(); 550 | listbox_tags.Items.Clear(); 551 | 552 | games_by_genre.Clear(); 553 | games_by_tag.Clear(); 554 | 555 | //Create a new file stream for reading the XML file 556 | FileStream ReadFileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read); 557 | XmlSerializer SerializerObj = new XmlSerializer(typeof(List)); 558 | 559 | //Load the object saved above by using the Deserialize function 560 | games = (List)SerializerObj.Deserialize(ReadFileStream); 561 | 562 | //Cleanup 563 | ReadFileStream.Close(); 564 | 565 | //We load each game 566 | foreach (Game g in games) 567 | { 568 | load(g); 569 | } 570 | 571 | listbox_games.DataSource = games; 572 | } 573 | 574 | private void MainWindow_FormClosing(object sender, FormClosingEventArgs e) 575 | { 576 | //We save the settings and the profile if the autosave option is marked 577 | 578 | // Copy window location to app settings 579 | Settings.Default.WindowLocation = this.Location; 580 | 581 | Settings.Default.autosave = autosaveloadToolStripMenuItem.Checked; 582 | 583 | // Save settings 584 | Settings.Default.Save(); 585 | 586 | if (autosaveloadToolStripMenuItem.Checked) 587 | { 588 | saveProfile("autosave.xml"); 589 | } 590 | } 591 | 592 | private void getCategoriesAndTagsToolStripMenuItem_Click(object sender, EventArgs e) 593 | { 594 | if (listbox_games.SelectedItems.Count > 0) 595 | { 596 | Game aux_game = get_tags_genres(((Game)listbox_games.SelectedItem).id); 597 | if (!aux_game.id.Equals("-1")) 598 | { 599 | if (!aux_game.name.Equals("")) 600 | { 601 | if (aux_game.genres == null) aux_game.genres = new List(); 602 | if (aux_game.tags == null) aux_game.tags = new List(); 603 | if (((Game)listbox_games.SelectedItem).genres != null) aux_game.genres = aux_game.genres.Union(((Game)listbox_games.SelectedItem).genres).ToList(); 604 | if (((Game)listbox_games.SelectedItem).tags != null) aux_game.tags = aux_game.tags.Union(((Game)listbox_games.SelectedItem).tags).ToList(); 605 | 606 | games.Remove(((Game)listbox_games.SelectedItem)); 607 | listbox_games.DataSource = null; 608 | games.Add(aux_game); 609 | load(aux_game); 610 | generate_list(); 611 | listbox_games.SelectedIndex = listbox_games.Items.IndexOf(aux_game); 612 | } 613 | else 614 | { 615 | Game orig = ((Game)listbox_games.SelectedItem); 616 | if (aux_game.genres == null) aux_game.genres = new List(); 617 | if (aux_game.tags == null) aux_game.tags = new List(); 618 | if (orig.genres == null) orig.genres = new List(); 619 | if (orig.tags == null) orig.tags = new List(); 620 | orig.tags = orig.tags.Union(aux_game.tags).ToList(); 621 | orig.genres = orig.genres.Union(aux_game.genres).ToList(); 622 | 623 | games.Remove(((Game)listbox_games.SelectedItem)); 624 | listbox_games.DataSource = null; 625 | games.Add(orig); 626 | load(orig); 627 | generate_list(); 628 | listbox_games.SelectedIndex = listbox_games.Items.IndexOf(orig); 629 | } 630 | } 631 | else 632 | { 633 | ids.Remove(Int32.Parse(((Game)listbox_games.SelectedItem).id)); 634 | games.Remove(((Game)listbox_games.SelectedItem)); 635 | } 636 | 637 | listbox_games.DataSource = null; 638 | generate_list(); 639 | } 640 | } 641 | 642 | private void getImagesToolStripMenuItem_Click(object sender, EventArgs e) 643 | { 644 | if (listbox_games.SelectedItems.Count > 0) 645 | { 646 | string id = ((Game)listbox_games.SelectedItem).id; 647 | get_images(id); 648 | if (game_images.Count > 0) 649 | { 650 | Random rnd = new Random(); 651 | img_index = rnd.Next(0, game_images.Count); 652 | pictureBox1.Image = game_images[img_index]; 653 | } 654 | } 655 | } 656 | 657 | private void getBothToolStripMenuItem_Click(object sender, EventArgs e) 658 | { 659 | if (listbox_games.SelectedItems.Count > 0) 660 | { 661 | Game aux_game = get_tags_genres(((Game)listbox_games.SelectedItem).id); 662 | 663 | if (!aux_game.id.Equals("-1")) 664 | { 665 | if (!aux_game.name.Equals("")) 666 | { 667 | if (aux_game.genres == null) aux_game.genres = new List(); 668 | if (aux_game.tags == null) aux_game.tags = new List(); 669 | if (((Game)listbox_games.SelectedItem).genres != null) aux_game.genres = aux_game.genres.Union(((Game)listbox_games.SelectedItem).genres).ToList(); 670 | if (((Game)listbox_games.SelectedItem).tags != null) aux_game.tags = aux_game.tags.Union(((Game)listbox_games.SelectedItem).tags).ToList(); 671 | 672 | games.Remove(((Game)listbox_games.SelectedItem)); 673 | listbox_games.DataSource = null; 674 | games.Add(aux_game); 675 | get_images(aux_game.id); 676 | load(aux_game); 677 | generate_list(); 678 | listbox_games.SelectedIndex = listbox_games.Items.IndexOf(aux_game); 679 | } 680 | else 681 | { 682 | Game orig = ((Game)listbox_games.SelectedItem); 683 | if (aux_game.genres == null) aux_game.genres = new List(); 684 | if (aux_game.tags == null) aux_game.tags = new List(); 685 | if (orig.genres == null) orig.genres = new List(); 686 | if (orig.tags == null) orig.tags = new List(); 687 | orig.tags = orig.tags.Union(aux_game.tags).ToList(); 688 | orig.genres = orig.genres.Union(aux_game.genres).ToList(); 689 | 690 | games.Remove(((Game)listbox_games.SelectedItem)); 691 | listbox_games.DataSource = null; 692 | games.Add(orig); 693 | get_images(orig.id); 694 | load(orig); 695 | generate_list(); 696 | listbox_games.SelectedIndex = listbox_games.Items.IndexOf(orig); 697 | } 698 | } 699 | else 700 | { 701 | ids.Remove(Int32.Parse(((Game)listbox_games.SelectedItem).id)); 702 | games.Remove(((Game)listbox_games.SelectedItem)); 703 | } 704 | 705 | listbox_games.DataSource = null; 706 | generate_list(); 707 | } 708 | } 709 | 710 | private void getCategoriesAndTagsToolStripMenuItem1_Click(object sender, EventArgs e) 711 | { 712 | foreach (Game g in listbox_games.Items) 713 | { 714 | Game aux_game = get_tags_genres(g.id); 715 | 716 | if (!aux_game.id.Equals("-1")) 717 | { 718 | if (!aux_game.name.Equals("")) 719 | { 720 | if (aux_game.genres == null) aux_game.genres = new List(); 721 | if (aux_game.tags == null) aux_game.tags = new List(); 722 | if (g.genres != null) aux_game.genres = aux_game.genres.Union(g.genres).ToList(); 723 | if (g.tags != null) aux_game.tags = aux_game.tags.Union(g.tags).ToList(); 724 | 725 | games.Remove(g); 726 | games.Add(aux_game); 727 | } 728 | else 729 | { 730 | Game orig = g; 731 | if (aux_game.genres == null) aux_game.genres = new List(); 732 | if (aux_game.tags == null) aux_game.tags = new List(); 733 | if (orig.genres == null) orig.genres = new List(); 734 | if (orig.tags == null) orig.tags = new List(); 735 | orig.tags = orig.tags.Union(aux_game.tags).ToList(); 736 | orig.genres = orig.genres.Union(aux_game.genres).ToList(); 737 | 738 | games.Remove(g); 739 | games.Add(orig); 740 | } 741 | } 742 | else 743 | { 744 | ids.Remove(Int32.Parse(g.id)); 745 | games.Remove(g); 746 | } 747 | } 748 | 749 | listbox_games.DataSource = null; 750 | 751 | foreach (Game g in games) 752 | { 753 | load(g); 754 | } 755 | 756 | generate_list(); 757 | 758 | listbox_games.SelectedIndex = 0; 759 | } 760 | private void getImagesToolStripMenuItem1_Click(object sender, EventArgs e) 761 | { 762 | foreach (Game g in listbox_games.Items) 763 | { 764 | string id = g.id; 765 | get_images(id); 766 | } 767 | listbox_games.SelectedIndex = 0; 768 | } 769 | 770 | private void getAllToolStripMenuItem_Click(object sender, EventArgs e) 771 | { 772 | foreach (Game g in listbox_games.Items) 773 | { 774 | Game aux_game = get_tags_genres(g.id); 775 | 776 | if (!aux_game.id.Equals("-1")) 777 | { 778 | if (!aux_game.name.Equals("")) 779 | { 780 | if (aux_game.genres == null) aux_game.genres = new List(); 781 | if (aux_game.tags == null) aux_game.tags = new List(); 782 | if (g.genres != null) aux_game.genres = aux_game.genres.Union(g.genres).ToList(); 783 | if (g.tags != null) aux_game.tags = aux_game.tags.Union(g.tags).ToList(); 784 | games.Remove(g); 785 | games.Add(aux_game); 786 | } 787 | else 788 | { 789 | Game orig = g; 790 | if (aux_game.genres == null) aux_game.genres = new List(); 791 | if (aux_game.tags == null) aux_game.tags = new List(); 792 | if (orig.genres == null) orig.genres = new List(); 793 | if (orig.tags == null) orig.tags = new List(); 794 | orig.tags = orig.tags.Union(aux_game.tags).ToList(); 795 | orig.genres = orig.genres.Union(aux_game.genres).ToList(); 796 | 797 | games.Remove(g); 798 | games.Add(orig); 799 | } 800 | } 801 | else 802 | { 803 | ids.Remove(Int32.Parse(g.id)); 804 | games.Remove(g); 805 | } 806 | } 807 | 808 | listbox_games.DataSource = null; 809 | generate_list(); 810 | 811 | foreach (Game g in listbox_games.Items) 812 | { 813 | get_images(g.id); 814 | load(g); 815 | } 816 | 817 | listbox_games.SelectedIndex = 0; 818 | } 819 | 820 | private void showGamesWithoutImagesToolStripMenuItem_Click(object sender, EventArgs e) 821 | { 822 | List no_img_games = new List(); 823 | foreach (Game g in games) 824 | { 825 | string path = "Screens/" + g.id + "/"; 826 | 827 | if (Directory.Exists(path)) 828 | { 829 | if (Directory.GetFiles(path).Length == 0 && Directory.GetDirectories(path).Length == 0) 830 | { 831 | no_img_games.Add(g); 832 | } 833 | } 834 | else 835 | { 836 | no_img_games.Add(g); 837 | } 838 | } 839 | if (no_img_games.Count > 0) 840 | { 841 | listbox_games.DataSource = null; 842 | listbox_games.DataSource = no_img_games; 843 | } 844 | } 845 | 846 | private void showGamesWithoutDataToolStripMenuItem_Click(object sender, EventArgs e) 847 | { 848 | List no_data_games = new List(); 849 | foreach (Game g in games) 850 | { 851 | if (g.tags.Count <= 0 && g.genres.Count <= 0) 852 | no_data_games.Add(g); 853 | } 854 | if (no_data_games.Count > 0) 855 | { 856 | listbox_games.DataSource = null; 857 | listbox_games.DataSource = no_data_games; 858 | } 859 | } 860 | 861 | private void listbox_games_SelectedIndexChanged(object sender, EventArgs e) 862 | { 863 | if (listbox_games.SelectedItems.Count > 0) 864 | { 865 | //When we change the selected game, we load the new game's images and unload the previous ones 866 | game_title.Text = ((Game)listbox_games.SelectedItem).name; 867 | img_index = 0; 868 | String id = ((Game)listbox_games.SelectedItem).id; 869 | pictureBox1.Image = null; 870 | if (game_images.Count > 0) 871 | { 872 | foreach (Image i in game_images) 873 | i.Dispose(); 874 | } 875 | game_images.Clear(); 876 | if (Directory.Exists("Screens\\" + id)) 877 | { 878 | foreach (string file in Directory.EnumerateFiles("Screens\\" + id, "*.jpg")) 879 | { 880 | Image aux = Image.FromFile(file); 881 | game_images.Add(aux); 882 | } 883 | } 884 | if (game_images.Count > 0) 885 | { 886 | Random rnd = new Random(); 887 | img_index = rnd.Next(0, game_images.Count); 888 | pictureBox1.Image = game_images[img_index]; 889 | } 890 | } 891 | } 892 | 893 | private void listbox_categories_SelectedIndexChanged(object sender, EventArgs e) 894 | { 895 | generate_list(); 896 | } 897 | 898 | private void listbox_tags_SelectedIndexChanged(object sender, EventArgs e) 899 | { 900 | generate_list(); 901 | } 902 | 903 | private void generate_list() 904 | { 905 | //The new list starts as the whole game list 906 | List gamelistaux = games; 907 | 908 | //Using the dictionary for each tag->games and genre->games, we interesect all the list and we get a list with only the selected genres and tags 909 | if (listbox_categories.SelectedIndices.Count > 0) 910 | { 911 | foreach (String s in listbox_categories.SelectedItems) 912 | gamelistaux = gamelistaux.Intersect(games_by_genre[s]).ToList(); 913 | } 914 | if (listbox_tags.SelectedIndices.Count > 0) 915 | { 916 | foreach (String s in listbox_tags.SelectedItems) 917 | gamelistaux = gamelistaux.Intersect(games_by_tag[s]).ToList(); 918 | } 919 | 920 | //From that list, we filter all the games that don't contain the string written on the textbox on their title 921 | if(!String.IsNullOrEmpty(textGameFilter.Text)) 922 | { 923 | List filtered_list = new List(); 924 | foreach (Game g in gamelistaux) 925 | { 926 | if (g.name.ToUpper().Contains(textGameFilter.Text.ToUpper())) 927 | filtered_list.Add(g); 928 | } 929 | gamelistaux = filtered_list; 930 | } 931 | 932 | //Then we make the listbox show the obtained games 933 | listbox_games.DataSource = null; 934 | listbox_games.DataSource = gamelistaux; 935 | 936 | //Update status bar 937 | toolStripStatusLabel1.Text = games_by_genre.Count + " Categories"; 938 | toolStripStatusLabel2.Text = games_by_tag.Count + " Tags"; 939 | toolStripStatusLabel3.Text = games.Count + " Games"; 940 | } 941 | 942 | private void listbox_games_DoubleClick(object sender, EventArgs e) 943 | { 944 | //When the user double clicks on a game, we load the tags/categories editor with the selected game 945 | int index = this.listbox_games.IndexFromPoint(((MouseEventArgs)e).Location); 946 | if (index != System.Windows.Forms.ListBox.NoMatches) 947 | { 948 | Game j = (Game)listbox_games.Items[index]; 949 | //We send the mouse position so the tag editor opens at that position 950 | GameData form = new GameData(Cursor.Position.X, Cursor.Position.Y); 951 | form.g = j; 952 | form.genres = listbox_categories.Items.Cast().ToList(); 953 | form.tags = listbox_tags.Items.Cast().ToList(); 954 | 955 | DialogResult res = form.ShowDialog(); 956 | //If the user pressed Save, we save the new modified game 957 | if (res == DialogResult.OK) 958 | { 959 | foreach (string s in j.genres) 960 | { 961 | games_by_genre[s].Remove(j); 962 | } 963 | foreach (string s in j.tags) 964 | { 965 | games_by_tag[s].Remove(j); 966 | } 967 | games.Remove(j); 968 | listbox_games.DataSource = null; 969 | j = form.g; 970 | games.Add(j); 971 | load(j); 972 | generate_list(); 973 | } 974 | } 975 | } 976 | 977 | private void textGameFilter_TextChanged(object sender, EventArgs e) 978 | { 979 | generate_list(); 980 | } 981 | } 982 | } -------------------------------------------------------------------------------- /SteamCompanion/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 SteamCompanion 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new MainWindow()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /SteamCompanion/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SteamCompanion")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SteamCompanion")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("a251794b-c2d6-4950-a1bc-befffa33dab5")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SteamCompanion/Properties/Resources.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 SteamCompanion.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SteamCompanion.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /SteamCompanion/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SteamCompanion/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 SteamCompanion.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 29 | public global::System.Drawing.Point WindowLocation { 30 | get { 31 | return ((global::System.Drawing.Point)(this["WindowLocation"])); 32 | } 33 | set { 34 | this["WindowLocation"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("False")] 41 | public bool autosave { 42 | get { 43 | return ((bool)(this["autosave"])); 44 | } 45 | set { 46 | this["autosave"] = value; 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /SteamCompanion/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 0, 0 7 | 8 | 9 | False 10 | 11 | 12 | -------------------------------------------------------------------------------- /SteamCompanion/SteamCompanion.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A251794B-C2D6-4950-A1BC-BEFFFA33DAB5} 8 | Exe 9 | Properties 10 | SteamCompanion 11 | SteamCompanion 12 | v4.5.2 13 | 512 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Form 54 | 55 | 56 | GameData.cs 57 | 58 | 59 | Form 60 | 61 | 62 | MainWindow.cs 63 | 64 | 65 | 66 | 67 | GameData.cs 68 | 69 | 70 | MainWindow.cs 71 | 72 | 73 | ResXFileCodeGenerator 74 | Resources.Designer.cs 75 | Designer 76 | 77 | 78 | True 79 | Resources.resx 80 | True 81 | 82 | 83 | SettingsSingleFileGenerator 84 | Settings.Designer.cs 85 | 86 | 87 | True 88 | Settings.settings 89 | True 90 | 91 | 92 | 93 | 94 | 95 | 96 | 103 | -------------------------------------------------------------------------------- /genres.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knudow/SteamCompanion/5b92eb79cf4510a308f315e31f598848c6bc33af/genres.jpg -------------------------------------------------------------------------------- /main_window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knudow/SteamCompanion/5b92eb79cf4510a308f315e31f598848c6bc33af/main_window.jpg --------------------------------------------------------------------------------