changeset 194:137ec6d45280

Re #33: Centralised requirement handling * Use central requirement handler to check each selection
author IBBoard <dev@ibboard.co.uk>
date Mon, 25 Apr 2011 12:58:50 +0000
parents eaa7b639d390
children 983d96be91f5
files FrmNewUnit.cs FrmNewUnit.resx
diffstat 2 files changed, 150 insertions(+), 152 deletions(-) [+]
line wrap: on
line diff
--- a/FrmNewUnit.cs	Sun Apr 03 14:50:34 2011 +0000
+++ b/FrmNewUnit.cs	Mon Apr 25 12:58:50 2011 +0000
@@ -10,7 +10,8 @@
 using IBBoard.Lang;
 using IBBoard.Windows.Forms;
 using IBBoard.WarFoundry.API;
-using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API.Objects.Requirement;
 using IBBoard.Windows.Forms.I18N;
 
 namespace IBBoard.WarFoundry
@@ -30,7 +31,6 @@
 		private System.Windows.Forms.ImageList imageList;
 		private System.Windows.Forms.Label lblNewUnitWarning;
 		private System.Windows.Forms.Label lblWarningIcon;
-		private bool[] allowed;
 
 		public FrmNewUnit(Race race, Category cat, Army army)
 		{
@@ -38,12 +38,10 @@
 
 			ControlTranslator.TranslateControl(this, cat.Name);
 			units = race.GetUnitTypes(cat);
-			allowed = new bool[units.Length];
 			this.army = army;
 			
 			for (int i = 0; i<units.Length; i++)
 			{
-				allowed[i] = army.CanAddUnitType(units[i]).Count == 0;
 				lstUnits.Items.Add(units[i].Name);
 			}
 		}
@@ -70,106 +68,106 @@
 		/// </summary>
 		private void InitializeComponent()
 		{
-			this.components = new System.ComponentModel.Container();
-			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmNewUnit));
-			this.lstUnits = new System.Windows.Forms.ListBox();
-			this.bttnCancel = new IBBoard.Windows.Forms.IBBButton();
-			this.lblUnitList = new IBBoard.Windows.Forms.IBBLabel();
-			this.bttnSelectUnit = new IBBoard.Windows.Forms.IBBButton();
-			this.lblNewUnitWarning = new System.Windows.Forms.Label();
-			this.imageList = new System.Windows.Forms.ImageList(this.components);
-			this.lblWarningIcon = new System.Windows.Forms.Label();
-			this.SuspendLayout();
-			// 
-			// lstUnits
-			// 
-			this.lstUnits.Location = new System.Drawing.Point(88, 8);
-			this.lstUnits.Name = "lstUnits";
-			this.lstUnits.Size = new System.Drawing.Size(272, 121);
-			this.lstUnits.TabIndex = 7;
-			this.lstUnits.SelectedIndexChanged += new System.EventHandler(this.lstUnits_SelectedIndexChanged);
-			this.lstUnits.DoubleClick += new System.EventHandler(this.lstUnits_DoubleClick);
-			this.lstUnits.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstUnits_MouseDown);
-			// 
-			// bttnCancel
-			// 
-			this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-			this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System;
-			this.bttnCancel.Location = new System.Drawing.Point(8, 168);
-			this.bttnCancel.Name = "bttnCancel";
-			this.bttnCancel.Size = new System.Drawing.Size(80, 24);
-			this.bttnCancel.TabIndex = 6;
-			this.bttnCancel.Text = "Cancel";
-			this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click);
-			// 
-			// lblUnitList
-			// 
-			this.lblUnitList.Location = new System.Drawing.Point(0, 8);
-			this.lblUnitList.Name = "lblUnitList";
-			this.lblUnitList.Size = new System.Drawing.Size(88, 80);
-			this.lblUnitList.TabIndex = 5;
-			this.lblUnitList.Text = "unit list";
-			this.lblUnitList.TextAlign = System.Drawing.ContentAlignment.TopRight;
-			// 
-			// bttnSelectUnit
-			// 
-			this.bttnSelectUnit.Enabled = false;
-			this.bttnSelectUnit.FlatStyle = System.Windows.Forms.FlatStyle.System;
-			this.bttnSelectUnit.Location = new System.Drawing.Point(256, 168);
-			this.bttnSelectUnit.Name = "bttnSelectUnit";
-			this.bttnSelectUnit.Size = new System.Drawing.Size(104, 24);
-			this.bttnSelectUnit.TabIndex = 4;
-			this.bttnSelectUnit.Text = "create unit";
-			this.bttnSelectUnit.Click += new System.EventHandler(this.bttnSelectUnit_Click);
-			// 
-			// lblNewUnitWarning
-			// 
-			this.lblNewUnitWarning.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
-			this.lblNewUnitWarning.ImageList = this.imageList;
-			this.lblNewUnitWarning.Location = new System.Drawing.Point(48, 136);
-			this.lblNewUnitWarning.Name = "lblNewUnitWarning";
-			this.lblNewUnitWarning.Size = new System.Drawing.Size(312, 32);
-			this.lblNewUnitWarning.TabIndex = 9;
-			this.lblNewUnitWarning.Text = "label1";
-			this.lblNewUnitWarning.TextAlign = System.Drawing.ContentAlignment.TopRight;
-			this.lblNewUnitWarning.Visible = false;
-			// 
-			// imageList
-			// 
-			this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
-			this.imageList.TransparentColor = System.Drawing.Color.Transparent;
-			this.imageList.Images.SetKeyName(0, "");
-			// 
-			// lblWarningIcon
-			// 
-			this.lblWarningIcon.Image = ((System.Drawing.Image)(resources.GetObject("lblWarningIcon.Image")));
-			this.lblWarningIcon.Location = new System.Drawing.Point(8, 136);
-			this.lblWarningIcon.Name = "lblWarningIcon";
-			this.lblWarningIcon.Size = new System.Drawing.Size(40, 32);
-			this.lblWarningIcon.TabIndex = 10;
-			this.lblWarningIcon.Visible = false;
-			// 
-			// FrmNewUnit
-			// 
-			this.AcceptButton = this.bttnSelectUnit;
-			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
-			this.CancelButton = this.bttnCancel;
-			this.ClientSize = new System.Drawing.Size(370, 196);
-			this.Controls.Add(this.lblWarningIcon);
-			this.Controls.Add(this.lblNewUnitWarning);
-			this.Controls.Add(this.bttnCancel);
-			this.Controls.Add(this.lblUnitList);
-			this.Controls.Add(this.bttnSelectUnit);
-			this.Controls.Add(this.lstUnits);
-			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
-			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-			this.MaximizeBox = false;
-			this.MinimizeBox = false;
-			this.Name = "FrmNewUnit";
-			this.ShowInTaskbar = false;
-			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-			this.Text = "FrmNewUni";
-			this.ResumeLayout(false);
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmNewUnit));
+            this.lstUnits = new System.Windows.Forms.ListBox();
+            this.bttnCancel = new IBBoard.Windows.Forms.IBBButton();
+            this.lblUnitList = new IBBoard.Windows.Forms.IBBLabel();
+            this.bttnSelectUnit = new IBBoard.Windows.Forms.IBBButton();
+            this.lblNewUnitWarning = new System.Windows.Forms.Label();
+            this.imageList = new System.Windows.Forms.ImageList(this.components);
+            this.lblWarningIcon = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // lstUnits
+            // 
+            this.lstUnits.Location = new System.Drawing.Point(88, 8);
+            this.lstUnits.Name = "lstUnits";
+            this.lstUnits.Size = new System.Drawing.Size(272, 121);
+            this.lstUnits.TabIndex = 7;
+            this.lstUnits.SelectedIndexChanged += new System.EventHandler(this.lstUnits_SelectedIndexChanged);
+            this.lstUnits.DoubleClick += new System.EventHandler(this.lstUnits_DoubleClick);
+            this.lstUnits.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstUnits_MouseDown);
+            // 
+            // bttnCancel
+            // 
+            this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System;
+            this.bttnCancel.Location = new System.Drawing.Point(8, 168);
+            this.bttnCancel.Name = "bttnCancel";
+            this.bttnCancel.Size = new System.Drawing.Size(80, 24);
+            this.bttnCancel.TabIndex = 6;
+            this.bttnCancel.Text = "Cancel";
+            this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click);
+            // 
+            // lblUnitList
+            // 
+            this.lblUnitList.Location = new System.Drawing.Point(0, 8);
+            this.lblUnitList.Name = "lblUnitList";
+            this.lblUnitList.Size = new System.Drawing.Size(88, 80);
+            this.lblUnitList.TabIndex = 5;
+            this.lblUnitList.Text = "unit list";
+            this.lblUnitList.TextAlign = System.Drawing.ContentAlignment.TopRight;
+            // 
+            // bttnSelectUnit
+            // 
+            this.bttnSelectUnit.Enabled = false;
+            this.bttnSelectUnit.FlatStyle = System.Windows.Forms.FlatStyle.System;
+            this.bttnSelectUnit.Location = new System.Drawing.Point(256, 168);
+            this.bttnSelectUnit.Name = "bttnSelectUnit";
+            this.bttnSelectUnit.Size = new System.Drawing.Size(104, 24);
+            this.bttnSelectUnit.TabIndex = 4;
+            this.bttnSelectUnit.Text = "create unit";
+            this.bttnSelectUnit.Click += new System.EventHandler(this.bttnSelectUnit_Click);
+            // 
+            // lblNewUnitWarning
+            // 
+            this.lblNewUnitWarning.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            this.lblNewUnitWarning.ImageList = this.imageList;
+            this.lblNewUnitWarning.Location = new System.Drawing.Point(48, 136);
+            this.lblNewUnitWarning.Name = "lblNewUnitWarning";
+            this.lblNewUnitWarning.Size = new System.Drawing.Size(312, 32);
+            this.lblNewUnitWarning.TabIndex = 9;
+            this.lblNewUnitWarning.Text = "One or more unit requirements are not satisfied.";
+            this.lblNewUnitWarning.TextAlign = System.Drawing.ContentAlignment.TopRight;
+            this.lblNewUnitWarning.Visible = false;
+            // 
+            // imageList
+            // 
+            this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+            this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+            this.imageList.Images.SetKeyName(0, "");
+            // 
+            // lblWarningIcon
+            // 
+            this.lblWarningIcon.Image = ((System.Drawing.Image)(resources.GetObject("lblWarningIcon.Image")));
+            this.lblWarningIcon.Location = new System.Drawing.Point(8, 136);
+            this.lblWarningIcon.Name = "lblWarningIcon";
+            this.lblWarningIcon.Size = new System.Drawing.Size(40, 32);
+            this.lblWarningIcon.TabIndex = 10;
+            this.lblWarningIcon.Visible = false;
+            // 
+            // FrmNewUnit
+            // 
+            this.AcceptButton = this.bttnSelectUnit;
+            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+            this.CancelButton = this.bttnCancel;
+            this.ClientSize = new System.Drawing.Size(370, 196);
+            this.Controls.Add(this.lblWarningIcon);
+            this.Controls.Add(this.lblNewUnitWarning);
+            this.Controls.Add(this.bttnCancel);
+            this.Controls.Add(this.lblUnitList);
+            this.Controls.Add(this.bttnSelectUnit);
+            this.Controls.Add(this.lstUnits);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "FrmNewUnit";
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "FrmNewUni";
+            this.ResumeLayout(false);
 
 		}
 		#endregion
@@ -201,7 +199,7 @@
 			if (lstUnits.SelectedIndex>-1)
 			{
 				bttnSelectUnit.Enabled = true;
-				lblNewUnitWarning.Visible = !allowed[lstUnits.SelectedIndex];
+				lblNewUnitWarning.Visible = !Validates.AsOkay(RequirementHandler.AllowsAdding(SelectedUnit, army));
 				lblWarningIcon.Visible = lblNewUnitWarning.Visible;
 
 				if (lblNewUnitWarning.Visible)
--- a/FrmNewUnit.resx	Sun Apr 03 14:50:34 2011 +0000
+++ b/FrmNewUnit.resx	Mon Apr 25 12:58:50 2011 +0000
@@ -126,54 +126,54 @@
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4
         DAAAAk1TRnQBSQFMAwEBAAEEAQABBAEAASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMA
-        ASADAAEBAQABIAYAAUD/AP8AJAADAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/
-        AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB/wMBAf8DAQH/AwEB//8AnQADAQH/
-        AwEB/wIBASkB/wIBASwB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIB
-        ASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIBASoB/wIB
-        ASoB/wIBASoB/wIBASwB/wIBASwB/wIBASkB/wMBAf//AJEAAwEB/wIBAWsB/wIBAZ0B/wIBAZ8B/wIB
-        AZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIB
-        AZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIBAZ8B/wIB
-        AZ8B/wIBAZ8B/wIBAZ8B/wIBAZ0B/wIBAXEB//8AjQADAQH/AgEBnAH/AjwBxAH/AnEB4AH/AnYB4gH/
-        AnUB4gH/AnIB4QH/AnAB4QH/Am0B4AH/AmoB3wH/AmcB3wH/AmUB3gH/AmIB3gH/Al8B3QH/Al0B3AH/
-        AloB3AH/AlcB2wH/AlQB2wH/AlIB2gH/Ak8B2gH/AkwB2QH/AkkB2AH/AkYB2AH/AkQB1wH/AkEB1wH/
-        Aj8B1gH/AjcB1AH/AhwBvAH/AgEBngH//wCRAAIBAaAB/wJ6Ad0B/wIVAdAB/wIBAcwB/wIBAcwB/wIB
-        AcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIB
-        AcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIBAcwB/wIL
-        Ac4B/wI5Ac8B/wIBAZ8B//8AkQACAQGhAf8CVwHHAf8COwHYAf8CAQHMAf8CowHbAf8C0gHgAf8C0gHg
+        ASADAAEBAQABIAYAAUD/AP8AJAADAgH/AwIB/wMCAf8DAgH/AwIB/wMCAf8DAgH/AwIB/wMCAf8DAgH/
+        AwIB/wMCAf8DAgH/AwIB/wMCAf8DAgH/AwIB/wMCAf8DAgH/AwIB/wMCAf8DAgH/AwIB//8AnQADAgH/
+        AwIB/wICASoB/wICAS0B/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wIC
+        ASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wICASsB/wIC
+        ASsB/wICASsB/wICAS0B/wICAS0B/wICASoB/wMCAf//AJEAAwIB/wICAWwB/wICAZ0B/wICAZ8B/wIC
+        AZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wIC
+        AZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wICAZ8B/wIC
+        AZ8B/wICAZ8B/wICAZ8B/wICAZ0B/wICAXIB//8AjQADAgH/AgIBnAH/Aj0BxAH/AnIB4AH/AncB4gH/
+        AnYB4gH/AnMB4QH/AnEB4QH/Am4B4AH/AmsB3wH/AmgB3wH/AmYB3gH/AmMB3gH/AmAB3QH/Al4B3AH/
+        AlsB3AH/AlgB2wH/AlUB2wH/AlMB2gH/AlAB2gH/Ak0B2QH/AkoB2AH/AkcB2AH/AkUB1wH/AkIB1wH/
+        AkAB1gH/AjgB1AH/Ah0BvAH/AgIBngH//wCRAAICAaAB/wJ7Ad0B/wIWAdAB/wICAcwB/wICAcwB/wIC
+        AcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wIC
+        AcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wICAcwB/wIM
+        Ac4B/wI6Ac8B/wICAZ8B//8AkQACAgGhAf8CWAHHAf8CPAHYAf8CAgHMAf8CowHbAf8C0gHgAf8C0gHg
         Af8C0wHhAf8C1AHiAf8C1AHiAf8C1QHjAf8C1gHkAf8C1wHlAf8C2AHmAf8C2AHmAf8C2QHnAf8C2QHn
-        Af8C2gHoAf8C2gHoAf8C2wHpAf8C3AHqAf8C3QHrAf8C3gHsAf8CwQHnAf8CAQHMAf8CHAHRAf8CKgG/
-        Af8CAQGiAf//AJEAAgEBngH/AhcBpwH/AnYB3QH/AgkBzgH/AlEB0wH/A+AB/wPhAf8D4QH/A+IB/wPj
-        Af8D4wH/A+QB/wPlAf8D5gH/A+YB/wPnAf8D6AH/A+kB/wPqAf8D6gH/A+sB/wPsAf8D7QH/AmoB2wH/
-        AgQBzQH/AjwB0wH/Ag0BpQH/AgEBoAH//wCVAAIBAaEB/wJTAcQB/wJFAdoB/wIDAcwB/wKzAdsB/wPg
-        Af8D4QH/A+EB/wPiAf8D4wH/A+MB/wPkAf8DPQH/AzgB/wPmAf8D5wH/A+gB/wPpAf8D6gH/A+oB/wPr
-        Af8CzQHnAf8CCAHNAf8CJQHTAf8CLQG7Af8CAQGgAf//AJkAAgEBngH/AhABpgH/AnoB3AH/Ag8BzwH/
-        AjwB0QH/A98B/wPgAf8D4AH/A+EB/wPiAf8D4gH/A+MB/wM4Af8DNgH/A+YB/wPmAf8D5wH/A+gB/wPp
-        Af8D6gH/A+oB/wJTAdcB/wIJAc4B/wJEAdIB/wIJAaIB/wIBAaAB//8AnQACAQGgAf8CRwG9Af8CUgHc
-        Af8CAQHMAf8CogHaAf8D3wH/A+AB/wPgAf8D4QH/A+IB/wPiAf8D1wH/A9cB/wPlAf8D5gH/A+YB/wPn
-        Af8D6AH/A+kB/wK6AeMB/wICAcwB/wIwAdUB/wIqAbcB/wIBAaAB//8AoQACAQGiAf8CCQGiAf8CegHa
-        Af8CGAHRAf8CKwHQAf8C3QHfAf8D3wH/A+AB/wPgAf8D4QH/A+IB/wMmAf8DJgH/A+QB/wPlAf8D5QH/
-        A+YB/wPnAf8D6AH/AjwB0wH/Ag8BzwH/AkoB0QH/AgYBogH/AgEBoQH//wClAAIBAZ8B/wI8AbgB/wJf
-        Ad4B/wIBAcwB/wKNAdcB/wPfAf8D3wH/A+AB/wPgAf8D4QH/AxwB/wMcAf8D4wH/A+QB/wPlAf8D5QH/
-        A+YB/wKkAd8B/wIBAcwB/wI9AdcB/wIlAbEB/wIBAaEB//8ArQACBAGiAf8CdAHXAf8CIwHTAf8CHAHO
-        Af8C1wHdAf8D3wH/A98B/wPgAf8D4AH/Aw4B/wMOAf8D4gH/A+MB/wPkAf8D5QH/AuIB5AH/AikB0QH/
-        AhkB0QH/AkwBzgH/AgMBogH/AgEBpAH//wCtAAIBAaAB/wIwAbEB/wJrAd8B/wICAcwB/wJ6AdUB/wPe
-        Af8D3gH/A98B/wPgAf8DBAH/AwQB/wPhAf8D4gH/A+MB/wPkAf8CjAHaAf8CAgHMAf8CTAHaAf8CHwGs
-        Af8CAQGfAf//ALUAAgIBoQH/Am0B0wH/AjAB1QH/AhEBzgH/As4B3AH/A94B/wPeAf8D1wH/AwEB/wMB
-        Af8D2QH/A+EB/wPiAf8C2gHiAf8CGgHPAf8CJQHTAf8CSgHLAf8CAQGhAf//ALkAAgEBoAH/AiMBrAH/
-        AnYB4AH/AgUBzQH/AmcB1AH/A90B/wPeAf8DzAH/AwEB/wMBAf8DzgH/A+EB/wPhAf8CdwHYAf8CBQHN
-        Af8CWAHbAf8CFwGoAf8CAQGfAf//AL0AAgEBoAH/AmMBzAH/AjwB2AH/AggBzQH/AsMB2wH/A90B/wPB
-        Af8DAQH/AwEB/wPDAf8D4AH/As4B3wH/Ag0BzQH/AjIB1gH/AkYBxwH/AgEBogH//wDBAAIBAZwB/wIY
-        AakB/wJ9AeAB/wIJAc4B/wJTAdIB/wPdAf8D2gH/A88B/wPPAf8D3AH/A98B/wJiAdUB/wIKAc4B/wJj
-        AdsB/wIQAaUB/wIBAZ4B//8AxQACAQGgAf8CVwHGAf8CSQHaAf8CAwHMAf8CtAHZAf8D3QH/A90B/wPe
-        Af8D3gH/AsAB3AH/AgUBzAH/AkEB2QH/Aj8BwQH/AgEBoQH//wDJAAIBAZ4B/wIQAaYB/wKBAeAB/wIQ
-        Ac8B/wJAAdEB/wPcAf8D3QH/A90B/wPeAf8CSwHSAf8CEgHPAf8CaQHbAf8CCgGiAf8CAQGfAf//AM0A
-        AgEBnwH/AkwBwAH/AlYB3AH/AgEBzAH/AqIB1wH/A9wB/wPcAf8CrQHZAf8CAgHMAf8CUQHcAf8COAG8
-        Af8CAQGgAf//ANEAAgEBpQH/AgkBowH/AoEB3gH/AhoB0QH/Ai0BzwH/AtoB2wH/A9wB/wI2AdAB/wId
-        AdIB/wJrAdkB/wIFAaIB/wIBAZ4B//8A1QACAQGgAf8CQAG6Af8CZAHfAf8CAQHMAf8CjwHWAf8CmAHW
-        Af8CAgHMAf8CYgHfAf8CLwG2Af8CAQGgAf//AN0AAgQBoQH/AnsB2gH/AiUB0wH/AhYBzgH/AhgBzQH/
-        AisB1AH/AmkB1wH/AgIBoAH/AgEBnwH//wDdAAIBAZ4B/wIzAbQB/wJyAeEB/wICAcwB/wIEAc0B/wJy
-        AeEB/wIlAa8B/wIBAZ4B//8A5QACAgGhAf8CbwHVAf8CQwHZAf8CRwHaAf8CYAHSAf8CAQGhAf//AOkA
-        AgEBoAH/AhQBpwH/Am4B2gH/AmsB2gH/AhABpwH/AgEBnwH//wDtAAIBAZ0B/wIBAaEB/wIBAaAB/wIB
+        Af8C2gHoAf8C2gHoAf8C2wHpAf8C3AHqAf8C3QHrAf8C3gHsAf8CwQHnAf8CAgHMAf8CHQHRAf8CKwG/
+        Af8CAgGiAf//AJEAAgIBngH/AhgBpwH/AncB3QH/AgoBzgH/AlIB0wH/A+AB/wPhAf8D4QH/A+IB/wPj
+        Af8D4wH/A+QB/wPlAf8D5gH/A+YB/wPnAf8D6AH/A+kB/wPqAf8D6gH/A+sB/wPsAf8D7QH/AmsB2wH/
+        AgUBzQH/Aj0B0wH/Ag4BpQH/AgIBoAH//wCVAAICAaEB/wJUAcQB/wJGAdoB/wIEAcwB/wKzAdsB/wPg
+        Af8D4QH/A+EB/wPiAf8D4wH/A+MB/wPkAf8DPgH/AzkB/wPmAf8D5wH/A+gB/wPpAf8D6gH/A+oB/wPr
+        Af8CzQHnAf8CCQHNAf8CJgHTAf8CLgG7Af8CAgGgAf//AJkAAgIBngH/AhEBpgH/AnsB3AH/AhABzwH/
+        Aj0B0QH/A98B/wPgAf8D4AH/A+EB/wPiAf8D4gH/A+MB/wM5Af8DNwH/A+YB/wPmAf8D5wH/A+gB/wPp
+        Af8D6gH/A+oB/wJUAdcB/wIKAc4B/wJFAdIB/wIKAaIB/wICAaAB//8AnQACAgGgAf8CSAG9Af8CUwHc
+        Af8CAgHMAf8CogHaAf8D3wH/A+AB/wPgAf8D4QH/A+IB/wPiAf8D1wH/A9cB/wPlAf8D5gH/A+YB/wPn
+        Af8D6AH/A+kB/wK6AeMB/wIDAcwB/wIxAdUB/wIrAbcB/wICAaAB//8AoQACAgGiAf8CCgGiAf8CewHa
+        Af8CGQHRAf8CLAHQAf8C3QHfAf8D3wH/A+AB/wPgAf8D4QH/A+IB/wMnAf8DJwH/A+QB/wPlAf8D5QH/
+        A+YB/wPnAf8D6AH/Aj0B0wH/AhABzwH/AksB0QH/AgcBogH/AgIBoQH//wClAAICAZ8B/wI9AbgB/wJg
+        Ad4B/wICAcwB/wKNAdcB/wPfAf8D3wH/A+AB/wPgAf8D4QH/Ax0B/wMdAf8D4wH/A+QB/wPlAf8D5QH/
+        A+YB/wKkAd8B/wICAcwB/wI+AdcB/wImAbEB/wICAaEB//8ArQACBQGiAf8CdQHXAf8CJAHTAf8CHQHO
+        Af8C1wHdAf8D3wH/A98B/wPgAf8D4AH/Aw8B/wMPAf8D4gH/A+MB/wPkAf8D5QH/AuIB5AH/AioB0QH/
+        AhoB0QH/Ak0BzgH/AgQBogH/AgIBpAH//wCtAAICAaAB/wIxAbEB/wJsAd8B/wIDAcwB/wJ7AdUB/wPe
+        Af8D3gH/A98B/wPgAf8DBQH/AwUB/wPhAf8D4gH/A+MB/wPkAf8CjAHaAf8CAwHMAf8CTQHaAf8CIAGs
+        Af8CAgGfAf//ALUAAgMBoQH/Am4B0wH/AjEB1QH/AhIBzgH/As4B3AH/A94B/wPeAf8D1wH/AwIB/wMC
+        Af8D2QH/A+EB/wPiAf8C2gHiAf8CGwHPAf8CJgHTAf8CSwHLAf8CAgGhAf//ALkAAgIBoAH/AiQBrAH/
+        AncB4AH/AgYBzQH/AmgB1AH/A90B/wPeAf8DzAH/AwIB/wMCAf8DzgH/A+EB/wPhAf8CeAHYAf8CBgHN
+        Af8CWQHbAf8CGAGoAf8CAgGfAf//AL0AAgIBoAH/AmQBzAH/Aj0B2AH/AgkBzQH/AsMB2wH/A90B/wPB
+        Af8DAgH/AwIB/wPDAf8D4AH/As4B3wH/Ag4BzQH/AjMB1gH/AkcBxwH/AgIBogH//wDBAAICAZwB/wIZ
+        AakB/wJ+AeAB/wIKAc4B/wJUAdIB/wPdAf8D2gH/A88B/wPPAf8D3AH/A98B/wJjAdUB/wILAc4B/wJk
+        AdsB/wIRAaUB/wICAZ4B//8AxQACAgGgAf8CWAHGAf8CSgHaAf8CBAHMAf8CtAHZAf8D3QH/A90B/wPe
+        Af8D3gH/AsAB3AH/AgYBzAH/AkIB2QH/AkABwQH/AgIBoQH//wDJAAICAZ4B/wIRAaYB/wKBAeAB/wIR
+        Ac8B/wJBAdEB/wPcAf8D3QH/A90B/wPeAf8CTAHSAf8CEwHPAf8CagHbAf8CCwGiAf8CAgGfAf//AM0A
+        AgIBnwH/Ak0BwAH/AlcB3AH/AgIBzAH/AqIB1wH/A9wB/wPcAf8CrQHZAf8CAwHMAf8CUgHcAf8COQG8
+        Af8CAgGgAf//ANEAAgIBpQH/AgoBowH/AoEB3gH/AhsB0QH/Ai4BzwH/AtoB2wH/A9wB/wI3AdAB/wIe
+        AdIB/wJsAdkB/wIGAaIB/wICAZ4B//8A1QACAgGgAf8CQQG6Af8CZQHfAf8CAgHMAf8CjwHWAf8CmAHW
+        Af8CAwHMAf8CYwHfAf8CMAG2Af8CAgGgAf//AN0AAgUBoQH/AnwB2gH/AiYB0wH/AhcBzgH/AhkBzQH/
+        AiwB1AH/AmoB1wH/AgMBoAH/AgIBnwH//wDdAAICAZ4B/wI0AbQB/wJzAeEB/wIDAcwB/wIFAc0B/wJz
+        AeEB/wImAa8B/wICAZ4B//8A5QACAwGhAf8CcAHVAf8CRAHZAf8CSAHaAf8CYQHSAf8CAgGhAf//AOkA
+        AgIBoAH/AhUBpwH/Am8B2gH/AmwB2gH/AhEBpwH/AgIBnwH//wDtAAICAZ0B/wICAaEB/wICAaAB/wIC
         AaAB//8A/wD/AP8A/wD/AP8AvwABQgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD/wEA
         BP8MAAHwAgABHwwAAcACAAEHDAABgAIAAQMMAAGAAgABAwwAAcACAAEDDAABwAIAAQMMAAHAAgABAwwA
         AeACAAEHDAAB4AIAAQcMAAHwAgABDwwAAfACAAEPDAAB+AIAAR8MAAH8AgABHwwAAfwCAAE/DAAB/gIA