[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mapguide-commits
Subject:    [mapguide-commits] r3296 - in trunk/Tools/Maestro: Maestro
From:       svn_mapguide () osgeo ! org
Date:       2008-08-28 21:08:24
Message-ID: 20080828210824.49836E0079B () lists ! osgeo ! org
[Download RAW message or body]

Author: ksgeograf
Date: 2008-08-28 17:08:24 -0400 (Thu, 28 Aug 2008)
New Revision: 3296

Added:
   trunk/Tools/Maestro/Maestro/BoundsPicker.Designer.cs
   trunk/Tools/Maestro/Maestro/BoundsPicker.cs
   trunk/Tools/Maestro/Maestro/BoundsPicker.resx
   trunk/Tools/Maestro/Maestro/Images/InheritedGroup.ico
   trunk/Tools/Maestro/Maestro/Images/InheritedUser.ico
Modified:
   trunk/Tools/Maestro/Maestro/OSGeo.MapGuide.Maestro.csproj
   trunk/Tools/Maestro/Maestro/ResourceProperties.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceProperties.cs
   trunk/Tools/Maestro/Maestro/ResourceProperties.resx
   trunk/Tools/Maestro/MaestroAPI/LocalNativeConnection.cs
   trunk/Tools/Maestro/MaestroAPI/Utility.cs
Log:
Basically done with WMS and security settings, but there is still a problem with the \
ResourceHeader serialization.

Added: trunk/Tools/Maestro/Maestro/BoundsPicker.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/BoundsPicker.Designer.cs	                        (rev \
                0)
+++ trunk/Tools/Maestro/Maestro/BoundsPicker.Designer.cs	2008-08-28 21:08:24 UTC (rev \
3296) @@ -0,0 +1,202 @@
+namespace OSGeo.MapGuide.Maestro
+{
+    partial class BoundsPicker
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; \
otherwise, false.</param> +        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.MinX = new System.Windows.Forms.TextBox();
+            this.MaxX = new System.Windows.Forms.TextBox();
+            this.MinY = new System.Windows.Forms.TextBox();
+            this.MaxY = new System.Windows.Forms.TextBox();
+            this.SRSLabel = new System.Windows.Forms.Label();
+            this.SRSCombo = new System.Windows.Forms.ComboBox();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.CancelBtn = new System.Windows.Forms.Button();
+            this.OKBtn = new System.Windows.Forms.Button();
+            this.panel1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(8, 8);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(34, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Min X";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(8, 32);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(37, 13);
+            this.label2.TabIndex = 1;
+            this.label2.Text = "Max X";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(8, 56);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(34, 13);
+            this.label3.TabIndex = 2;
+            this.label3.Text = "Min Y";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(8, 80);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(37, 13);
+            this.label4.TabIndex = 3;
+            this.label4.Text = "Max Y";
+            // 
+            // MinX
+            // 
+            this.MinX.Location = new System.Drawing.Point(64, 8);
+            this.MinX.Name = "MinX";
+            this.MinX.Size = new System.Drawing.Size(160, 20);
+            this.MinX.TabIndex = 4;
+            // 
+            // MaxX
+            // 
+            this.MaxX.Location = new System.Drawing.Point(64, 32);
+            this.MaxX.Name = "MaxX";
+            this.MaxX.Size = new System.Drawing.Size(160, 20);
+            this.MaxX.TabIndex = 5;
+            // 
+            // MinY
+            // 
+            this.MinY.Location = new System.Drawing.Point(64, 56);
+            this.MinY.Name = "MinY";
+            this.MinY.Size = new System.Drawing.Size(160, 20);
+            this.MinY.TabIndex = 6;
+            // 
+            // MaxY
+            // 
+            this.MaxY.Location = new System.Drawing.Point(64, 80);
+            this.MaxY.Name = "MaxY";
+            this.MaxY.Size = new System.Drawing.Size(160, 20);
+            this.MaxY.TabIndex = 7;
+            // 
+            // SRSLabel
+            // 
+            this.SRSLabel.AutoSize = true;
+            this.SRSLabel.Location = new System.Drawing.Point(8, 112);
+            this.SRSLabel.Name = "SRSLabel";
+            this.SRSLabel.Size = new System.Drawing.Size(29, 13);
+            this.SRSLabel.TabIndex = 8;
+            this.SRSLabel.Text = "SRS";
+            // 
+            // SRSCombo
+            // 
+            this.SRSCombo.FormattingEnabled = true;
+            this.SRSCombo.Location = new System.Drawing.Point(64, 112);
+            this.SRSCombo.Name = "SRSCombo";
+            this.SRSCombo.Size = new System.Drawing.Size(160, 21);
+            this.SRSCombo.TabIndex = 9;
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.CancelBtn);
+            this.panel1.Controls.Add(this.OKBtn);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.panel1.Location = new System.Drawing.Point(0, 142);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(235, 40);
+            this.panel1.TabIndex = 10;
+            // 
+            // CancelBtn
+            // 
+            this.CancelBtn.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
+            this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.CancelBtn.Location = new System.Drawing.Point(121, 8);
+            this.CancelBtn.Name = "CancelBtn";
+            this.CancelBtn.Size = new System.Drawing.Size(75, 23);
+            this.CancelBtn.TabIndex = 1;
+            this.CancelBtn.Text = "Cancel";
+            this.CancelBtn.UseVisualStyleBackColor = true;
+            // 
+            // OKBtn
+            // 
+            this.OKBtn.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
+            this.OKBtn.Location = new System.Drawing.Point(33, 8);
+            this.OKBtn.Name = "OKBtn";
+            this.OKBtn.Size = new System.Drawing.Size(75, 23);
+            this.OKBtn.TabIndex = 0;
+            this.OKBtn.Text = "OK";
+            this.OKBtn.UseVisualStyleBackColor = true;
+            this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
+            // 
+            // BoundsPicker
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CancelButton = this.CancelBtn;
+            this.ClientSize = new System.Drawing.Size(235, 182);
+            this.Controls.Add(this.panel1);
+            this.Controls.Add(this.SRSCombo);
+            this.Controls.Add(this.SRSLabel);
+            this.Controls.Add(this.MaxY);
+            this.Controls.Add(this.MinY);
+            this.Controls.Add(this.MaxX);
+            this.Controls.Add(this.MinX);
+            this.Controls.Add(this.label4);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.FormBorderStyle = \
System.Windows.Forms.FormBorderStyle.FixedToolWindow; +            this.Name = \
"BoundsPicker"; +            this.Text = "Enter the data bounds";
+            this.panel1.ResumeLayout(false);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox MinX;
+        private System.Windows.Forms.TextBox MaxX;
+        private System.Windows.Forms.TextBox MinY;
+        private System.Windows.Forms.TextBox MaxY;
+        private System.Windows.Forms.Label SRSLabel;
+        private System.Windows.Forms.ComboBox SRSCombo;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Button CancelBtn;
+        private System.Windows.Forms.Button OKBtn;
+    }
+}
\ No newline at end of file

Added: trunk/Tools/Maestro/Maestro/BoundsPicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/BoundsPicker.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/BoundsPicker.cs	2008-08-28 21:08:24 UTC (rev 3296)
@@ -0,0 +1,159 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro
+{
+    public partial class BoundsPicker : Form
+    {
+        private string m_bounds;
+
+        public string SRSBounds
+        {
+            get { return m_bounds; }
+        }
+
+        public BoundsPicker(string bounds, string[] coordsys)
+            : this()
+        {
+            m_bounds = bounds;
+
+            if (coordsys == null)
+            {
+                SRSLabel.Visible =
+                SRSCombo.Visible =
+                    false;
+                this.Height -= 30;
+            }
+            else
+                SRSCombo.Items.AddRange(coordsys);
+
+            if (!string.IsNullOrEmpty(bounds))
+            {
+                try
+                {
+                    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+                    if (bounds.Trim().StartsWith("&lt;"))
+                        bounds = System.Web.HttpUtility.HtmlDecode(bounds);
+                    bounds = "<root>" + bounds + "</root>";
+                    doc.LoadXml(bounds);
+                    System.Xml.XmlNode root = doc["root"];
+                    if (root["Bounds"] != null)
+                    {
+                        if (root["Bounds"].Attributes["SRS"] != null)
+                            SRSCombo.Text = root["Bounds"].Attributes["SRS"].Value;
+
+                        if (root["Bounds"].Attributes["west"] != null)
+                            MinX.Text = root["Bounds"].Attributes["west"].Value;
+                        if (root["Bounds"].Attributes["east"] != null)
+                            MaxX.Text = root["Bounds"].Attributes["east"].Value;
+
+                        if (root["Bounds"].Attributes["south"] != null)
+                            MinY.Text = root["Bounds"].Attributes["south"].Value;
+                        if (root["Bounds"].Attributes["north"] != null)
+                            MaxY.Text = root["Bounds"].Attributes["north"].Value;
+                    }
+                    else
+                        throw new Exception("Missing bounds tag");
+                }
+                catch(Exception ex)
+                {
+                    MessageBox.Show(this, string.Format("Failed to decode the \
current bounds,\nyou may enter new bounds, and these will replace the current.\nError \
message: {0}", ex.Message), Application.ProductName, MessageBoxButtons.OK, \
MessageBoxIcon.Error);  +                }
+            }
+        }
+
+        private BoundsPicker()
+        {
+            InitializeComponent();
+        }
+
+        private void OKBtn_Click(object sender, EventArgs e)
+        {
+            string srs;
+            if (SRSCombo.Text.Trim().Length == 0 || SRSCombo.Visible == false)
+                srs = null;
+            else
+                srs = SRSCombo.Text;
+
+            if (MinX.Text.Trim().Length == 0 || MaxX.Text.Trim().Length == 0 || \
MinY.Text.Trim().Length == 0 || MaxY.Text.Trim().Length == 0 || (srs == null && \
SRSCombo.Visible)) +            {
+                MessageBox.Show(this, "You have not entered all the required \
information.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); \
+                return; +            }
+
+            double temp;
+            System.Globalization.CultureInfo localCI = \
System.Globalization.CultureInfo.CurrentUICulture; +            \
System.Globalization.CultureInfo usCI = \
System.Globalization.CultureInfo.InvariantCulture; +            
+            bool isUs = double.TryParse(MinX.Text, \
System.Globalization.NumberStyles.Float, usCI, out temp) && +                \
double.TryParse(MaxX.Text, System.Globalization.NumberStyles.Float, usCI, out temp) \
&& +                double.TryParse(MinY.Text, \
System.Globalization.NumberStyles.Float, usCI, out temp) && +                \
double.TryParse(MaxY.Text, System.Globalization.NumberStyles.Float, usCI, out temp); \
+ +            bool isLocal = double.TryParse(MinX.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp) && +                \
double.TryParse(MaxX.Text, System.Globalization.NumberStyles.Float, localCI, out \
temp) && +                double.TryParse(MinY.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp) && +                \
double.TryParse(MaxY.Text, System.Globalization.NumberStyles.Float, localCI, out \
temp); +
+            if (!isUs && isLocal)
+            {
+                switch (MessageBox.Show(this, "The values you have entered appears \
to be in local regional format, but are required in US regional format\nDo you want \
to convert the values?", Application.ProductName, MessageBoxButtons.YesNoCancel, \
MessageBoxIcon.Question)) +                {
+                    case DialogResult.Yes:
+                        if (double.TryParse(MinX.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp)) +                        \
MinX.Text = temp.ToString(usCI); +                        else
+                        {
+                            MessageBox.Show(this, "Failed to convert the Min X \
value", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); +       \
return; +                        }
+                        if (double.TryParse(MaxX.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp)) +                        \
MaxX.Text = temp.ToString(usCI); +                        else
+                        {
+                            MessageBox.Show(this, "Failed to convert the Max X \
value", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); +       \
return; +                        }
+                        if (double.TryParse(MinY.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp)) +                        \
MinY.Text = temp.ToString(usCI); +                        else
+                        {
+                            MessageBox.Show(this, "Failed to convert the Min Y \
value", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); +       \
return; +                        }
+                        if (double.TryParse(MaxX.Text, \
System.Globalization.NumberStyles.Float, localCI, out temp)) +                        \
MaxX.Text = temp.ToString(usCI); +                        else
+                        {
+                            MessageBox.Show(this, "Failed to convert the Max X \
value", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); +       \
return; +                        }
+                        break;
+                    case DialogResult.Cancel:
+                        return;
+                }
+            }
+
+            if (!isUs && !isLocal)
+            {
+                if (MessageBox.Show(this, "The coordinates you have entered appears \
to be invalid, do you want to use them anyway?", Application.ProductName, \
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error) != DialogResult.Yes) +           \
return; +            }
+
+            m_bounds = "<Bounds west=\"" + MinX.Text + "\" east=\"" + MaxX.Text + \
"\" south=\"" + MinY.Text + "\" north=\"" + MaxY.Text + "\" "; +            if (srs \
!= null) +            {
+                m_bounds += " SRS=\"" + srs + "\"";
+            }
+            m_bounds += " />";
+            
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+    }
+}
\ No newline at end of file

Added: trunk/Tools/Maestro/Maestro/BoundsPicker.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/BoundsPicker.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/BoundsPicker.resx	2008-08-28 21:08:24 UTC (rev 3296)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, \
System.Windows.Forms, ...</resheader> +    <resheader \
name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, \
...</resheader> +    <data name="Name1"><value>this is my long \
string</value><comment>this is a comment</comment></data> +    <data name="Color1" \
type="System.Drawing.Color, System.Drawing">Blue</data> +    <data name="Bitmap1" \
mimetype="application/x-microsoft.net.object.binary.base64"> +        <value>[base64 \
mime encoded serialized .NET Framework object]</value> +    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" \
mimetype="application/x-microsoft.net.object.bytearray.base64"> +        \
<value>[base64 mime encoded string representing a byte array form of the .NET \
Framework object]</value> +        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> +    <xsd:import \
namespace="http://www.w3.org/XML/1998/namespace" /> +    <xsd:element name="root" \
msdata:IsDataSet="true"> +      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" \
msdata:Ordinal="1" /> +                <xsd:element name="comment" type="xsd:string" \
minOccurs="0" msdata:Ordinal="2" /> +              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" \
msdata:Ordinal="1" /> +              <xsd:attribute name="type" type="xsd:string" \
msdata:Ordinal="3" /> +              <xsd:attribute name="mimetype" type="xsd:string" \
msdata:Ordinal="4" /> +              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" \
msdata:Ordinal="1" /> +              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> +  \
</resheader> +  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> +  \
</resheader> +</root>
\ No newline at end of file

Added: trunk/Tools/Maestro/Maestro/Images/InheritedGroup.ico
===================================================================
(Binary files differ)


Property changes on: trunk/Tools/Maestro/Maestro/Images/InheritedGroup.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/Tools/Maestro/Maestro/Images/InheritedUser.ico
===================================================================
(Binary files differ)


Property changes on: trunk/Tools/Maestro/Maestro/Images/InheritedUser.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/Tools/Maestro/Maestro/OSGeo.MapGuide.Maestro.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro/OSGeo.MapGuide.Maestro.csproj	2008-08-28 17:56:09 UTC \
                (rev 3295)
+++ trunk/Tools/Maestro/Maestro/OSGeo.MapGuide.Maestro.csproj	2008-08-28 21:08:24 UTC \
(rev 3296) @@ -102,6 +102,7 @@
     <Reference Include="System.Drawing">
       <Name>System.Drawing</Name>
     </Reference>
+    <Reference Include="System.Web" />
     <Reference Include="System.Windows.Forms">
       <Name>System.Windows.Forms</Name>
     </Reference>
@@ -148,6 +149,12 @@
     <Compile Include="AssemblyInfo.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="BoundsPicker.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="BoundsPicker.Designer.cs">
+      <DependentUpon>BoundsPicker.cs</DependentUpon>
+    </Compile>
     <Compile Include="BrowseResource.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -244,6 +251,10 @@
       <SubType>Designer</SubType>
       <DependentUpon>ApplicationSettings.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="BoundsPicker.resx">
+      <SubType>Designer</SubType>
+      <DependentUpon>BoundsPicker.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="BrowseResource.resx">
       <DependentUpon>BrowseResource.cs</DependentUpon>
       <SubType>Designer</SubType>

Modified: trunk/Tools/Maestro/Maestro/ResourceProperties.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceProperties.Designer.cs	2008-08-28 17:56:09 \
                UTC (rev 3295)
+++ trunk/Tools/Maestro/Maestro/ResourceProperties.Designer.cs	2008-08-28 21:08:24 \
UTC (rev 3296) @@ -37,11 +37,18 @@
             this.SecurityTab = new System.Windows.Forms.TabPage();
             this.UseInherited = new System.Windows.Forms.CheckBox();
             this.UsersAndGroups = new System.Windows.Forms.ListView();
+            this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
+            this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
+            this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
+            this.securityContextMenu = new \
System.Windows.Forms.ContextMenuStrip(this.components); +            \
this.readWriteAccessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); \
+            this.readOnlyAccessToolStripMenuItem = new \
System.Windows.Forms.ToolStripMenuItem(); +            \
                this.denyAccessToolStripMenuItem = new \
                System.Windows.Forms.ToolStripMenuItem();
             this.UserAndGroupImages = new \
System.Windows.Forms.ImageList(this.components);  this.WMSTab = new \
                System.Windows.Forms.TabPage();
             this.WMSClearHeaderButton = new System.Windows.Forms.Button();
             this.groupBox2 = new System.Windows.Forms.GroupBox();
-            this.button1 = new System.Windows.Forms.Button();
+            this.EditWMSBounds = new System.Windows.Forms.Button();
             this.WMSBounds = new System.Windows.Forms.TextBox();
             this.label4 = new System.Windows.Forms.Label();
             this.WMSOpaque = new System.Windows.Forms.CheckBox();
@@ -57,8 +64,16 @@
             this.label2 = new System.Windows.Forms.Label();
             this.label3 = new System.Windows.Forms.Label();
             this.WFSTab = new System.Windows.Forms.TabPage();
-            this.CustomTab = new System.Windows.Forms.TabPage();
-            this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+            this.WFSClearHeaderButton = new System.Windows.Forms.Button();
+            this.groupBox4 = new System.Windows.Forms.GroupBox();
+            this.WFSOtherSRS = new System.Windows.Forms.ComboBox();
+            this.WFSPrimarySRS = new System.Windows.Forms.ComboBox();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label11 = new System.Windows.Forms.Label();
+            this.EditWFSBounds = new System.Windows.Forms.Button();
+            this.WFSBounds = new System.Windows.Forms.TextBox();
+            this.label10 = new System.Windows.Forms.Label();
+            this.WFSAvalible = new System.Windows.Forms.CheckBox();
             this.groupBox3 = new System.Windows.Forms.GroupBox();
             this.WFSMetadata = new System.Windows.Forms.TextBox();
             this.WFSAbstract = new System.Windows.Forms.TextBox();
@@ -68,30 +83,24 @@
             this.label7 = new System.Windows.Forms.Label();
             this.label8 = new System.Windows.Forms.Label();
             this.label9 = new System.Windows.Forms.Label();
-            this.groupBox4 = new System.Windows.Forms.GroupBox();
-            this.button2 = new System.Windows.Forms.Button();
-            this.WFSBounds = new System.Windows.Forms.TextBox();
-            this.label10 = new System.Windows.Forms.Label();
-            this.WFSAvalible = new System.Windows.Forms.CheckBox();
-            this.WFSPrimarySRS = new System.Windows.Forms.TextBox();
-            this.label11 = new System.Windows.Forms.Label();
-            this.WFSOtherSRS = new System.Windows.Forms.TextBox();
-            this.label12 = new System.Windows.Forms.Label();
-            this.WFSClearHeaderButton = new System.Windows.Forms.Button();
+            this.CustomTab = new System.Windows.Forms.TabPage();
+            this.ClearHeaderButton = new System.Windows.Forms.Button();
             this.dataGridView1 = new System.Windows.Forms.DataGridView();
-            this.ClearHeaderButton = new System.Windows.Forms.Button();
             this.ItemKey = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.ItemValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+            this.inheritedAccessRightsToolStripMenuItem = new \
System.Windows.Forms.ToolStripMenuItem();  this.panel1.SuspendLayout();
             this.tabControl1.SuspendLayout();
             this.SecurityTab.SuspendLayout();
+            this.securityContextMenu.SuspendLayout();
             this.WMSTab.SuspendLayout();
             this.groupBox2.SuspendLayout();
             this.groupBox1.SuspendLayout();
             this.WFSTab.SuspendLayout();
+            this.groupBox4.SuspendLayout();
+            this.groupBox3.SuspendLayout();
             this.CustomTab.SuspendLayout();
-            this.groupBox3.SuspendLayout();
-            this.groupBox4.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
  this.SuspendLayout();
             // 
@@ -108,6 +117,7 @@
             // CancelBtn
             // 
             this.CancelBtn.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
+            this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
             this.CancelBtn.Location = new System.Drawing.Point(183, 8);
             this.CancelBtn.Name = "CancelBtn";
             this.CancelBtn.Size = new System.Drawing.Size(75, 23);
@@ -124,6 +134,7 @@
             this.OKBtn.TabIndex = 0;
             this.OKBtn.Text = "OK";
             this.OKBtn.UseVisualStyleBackColor = true;
+            this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
             // 
             // tabControl1
             // 
@@ -167,15 +178,69 @@
             this.UsersAndGroups.Anchor = \
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | \
System.Windows.Forms.AnchorStyles.Bottom)  | System.Windows.Forms.AnchorStyles.Left)
                         | System.Windows.Forms.AnchorStyles.Right)));
+            this.UsersAndGroups.Columns.AddRange(new \
System.Windows.Forms.ColumnHeader[] { +            this.columnHeader1,
+            this.columnHeader2,
+            this.columnHeader3});
+            this.UsersAndGroups.ContextMenuStrip = this.securityContextMenu;
             this.UsersAndGroups.Enabled = false;
+            this.UsersAndGroups.FullRowSelect = true;
             this.UsersAndGroups.Location = new System.Drawing.Point(16, 40);
             this.UsersAndGroups.Name = "UsersAndGroups";
-            this.UsersAndGroups.Size = new System.Drawing.Size(320, 240);
+            this.UsersAndGroups.Size = new System.Drawing.Size(320, 312);
             this.UsersAndGroups.SmallImageList = this.UserAndGroupImages;
             this.UsersAndGroups.TabIndex = 0;
+            this.toolTip.SetToolTip(this.UsersAndGroups, "Right click to change \
access rights");  this.UsersAndGroups.UseCompatibleStateImageBehavior = false;
-            this.UsersAndGroups.View = System.Windows.Forms.View.List;
+            this.UsersAndGroups.View = System.Windows.Forms.View.Details;
             // 
+            // columnHeader1
+            // 
+            this.columnHeader1.Text = "Name";
+            this.columnHeader1.Width = 88;
+            // 
+            // columnHeader2
+            // 
+            this.columnHeader2.Text = "Description";
+            this.columnHeader2.Width = 104;
+            // 
+            // columnHeader3
+            // 
+            this.columnHeader3.Text = "Access";
+            this.columnHeader3.Width = 93;
+            // 
+            // securityContextMenu
+            // 
+            this.securityContextMenu.Items.AddRange(new \
System.Windows.Forms.ToolStripItem[] { +            \
this.readWriteAccessToolStripMenuItem, +            \
this.readOnlyAccessToolStripMenuItem, +            this.denyAccessToolStripMenuItem,
+            this.inheritedAccessRightsToolStripMenuItem});
+            this.securityContextMenu.Name = "securityContextMenu";
+            this.securityContextMenu.Size = new System.Drawing.Size(195, 92);
+            this.securityContextMenu.Opening += new \
System.ComponentModel.CancelEventHandler(this.securityContextMenu_Opening); +         \
//  +            // readWriteAccessToolStripMenuItem
+            // 
+            this.readWriteAccessToolStripMenuItem.Name = \
"readWriteAccessToolStripMenuItem"; +            \
this.readWriteAccessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); +      \
this.readWriteAccessToolStripMenuItem.Text = "Read write access"; +            \
this.readWriteAccessToolStripMenuItem.Click += new \
System.EventHandler(this.readWriteAccessToolStripMenuItem_Click); +            // 
+            // readOnlyAccessToolStripMenuItem
+            // 
+            this.readOnlyAccessToolStripMenuItem.Name = \
"readOnlyAccessToolStripMenuItem"; +            \
this.readOnlyAccessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); +       \
this.readOnlyAccessToolStripMenuItem.Text = "Read only access"; +            \
this.readOnlyAccessToolStripMenuItem.Click += new \
System.EventHandler(this.readOnlyAccessToolStripMenuItem_Click); +            // 
+            // denyAccessToolStripMenuItem
+            // 
+            this.denyAccessToolStripMenuItem.Name = "denyAccessToolStripMenuItem";
+            this.denyAccessToolStripMenuItem.Size = new System.Drawing.Size(194, \
22); +            this.denyAccessToolStripMenuItem.Text = "Deny access";
+            this.denyAccessToolStripMenuItem.Click += new \
System.EventHandler(this.denyAccessToolStripMenuItem_Click); +            // 
             // UserAndGroupImages
             // 
             this.UserAndGroupImages.ImageStream = \
((System.Windows.Forms.ImageListStreamer)(resources.GetObject("UserAndGroupImages.ImageStream")));
 @@ -186,6 +251,8 @@
             this.UserAndGroupImages.Images.SetKeyName(3, "WriteGroup.ico");
             this.UserAndGroupImages.Images.SetKeyName(4, "ReadOnlyGroup.ico");
             this.UserAndGroupImages.Images.SetKeyName(5, "DenyGroup.ico");
+            this.UserAndGroupImages.Images.SetKeyName(6, "InheritedUser.ico");
+            this.UserAndGroupImages.Images.SetKeyName(7, "InheritedGroup.ico");
             // 
             // WMSTab
             // 
@@ -215,7 +282,7 @@
             // 
             this.groupBox2.Anchor = \
((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | \
System.Windows.Forms.AnchorStyles.Left)  | \
                System.Windows.Forms.AnchorStyles.Right)));
-            this.groupBox2.Controls.Add(this.button1);
+            this.groupBox2.Controls.Add(this.EditWMSBounds);
             this.groupBox2.Controls.Add(this.WMSBounds);
             this.groupBox2.Controls.Add(this.label4);
             this.groupBox2.Controls.Add(this.WMSOpaque);
@@ -228,14 +295,15 @@
             this.groupBox2.TabStop = false;
             this.groupBox2.Text = "Functionality";
             // 
-            // button1
+            // EditWMSBounds
             // 
-            this.button1.Location = new System.Drawing.Point(304, 96);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(24, 20);
-            this.button1.TabIndex = 8;
-            this.button1.Text = "...";
-            this.button1.UseVisualStyleBackColor = true;
+            this.EditWMSBounds.Location = new System.Drawing.Point(304, 96);
+            this.EditWMSBounds.Name = "EditWMSBounds";
+            this.EditWMSBounds.Size = new System.Drawing.Size(24, 20);
+            this.EditWMSBounds.TabIndex = 8;
+            this.EditWMSBounds.Text = "...";
+            this.EditWMSBounds.UseVisualStyleBackColor = true;
+            this.EditWMSBounds.Click += new \
System.EventHandler(this.EditWMSBounds_Click);  // 
             // WMSBounds
             // 
@@ -402,17 +470,119 @@
             this.WFSTab.Text = "WFS";
             this.WFSTab.UseVisualStyleBackColor = true;
             // 
-            // CustomTab
+            // WFSClearHeaderButton
             // 
-            this.CustomTab.Controls.Add(this.ClearHeaderButton);
-            this.CustomTab.Controls.Add(this.dataGridView1);
-            this.CustomTab.Location = new System.Drawing.Point(4, 22);
-            this.CustomTab.Name = "CustomTab";
-            this.CustomTab.Size = new System.Drawing.Size(350, 363);
-            this.CustomTab.TabIndex = 3;
-            this.CustomTab.Text = "Custom Metadata";
-            this.CustomTab.UseVisualStyleBackColor = true;
+            this.WFSClearHeaderButton.Anchor = \
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | \
System.Windows.Forms.AnchorStyles.Right))); +            \
this.WFSClearHeaderButton.Location = new System.Drawing.Point(224, 328); +            \
this.WFSClearHeaderButton.Name = "WFSClearHeaderButton"; +            \
this.WFSClearHeaderButton.Size = new System.Drawing.Size(119, 23); +            \
this.WFSClearHeaderButton.TabIndex = 11; +            this.WFSClearHeaderButton.Text \
= "Clear all WFS data"; +            \
this.WFSClearHeaderButton.UseVisualStyleBackColor = true; +            \
this.WFSClearHeaderButton.Click += new \
System.EventHandler(this.WFSClearHeaderButton_Click);  // 
+            // groupBox4
+            // 
+            this.groupBox4.Anchor = \
((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | \
System.Windows.Forms.AnchorStyles.Left) +                        | \
System.Windows.Forms.AnchorStyles.Right))); +            \
this.groupBox4.Controls.Add(this.WFSOtherSRS); +            \
this.groupBox4.Controls.Add(this.WFSPrimarySRS); +            \
this.groupBox4.Controls.Add(this.label12); +            \
this.groupBox4.Controls.Add(this.label11); +            \
this.groupBox4.Controls.Add(this.EditWFSBounds); +            \
this.groupBox4.Controls.Add(this.WFSBounds); +            \
this.groupBox4.Controls.Add(this.label10); +            \
this.groupBox4.Controls.Add(this.WFSAvalible); +            this.groupBox4.Location = \
new System.Drawing.Point(7, 176); +            this.groupBox4.Name = "groupBox4";
+            this.groupBox4.Size = new System.Drawing.Size(336, 144);
+            this.groupBox4.TabIndex = 10;
+            this.groupBox4.TabStop = false;
+            this.groupBox4.Text = "Functionality";
+            // 
+            // WFSOtherSRS
+            // 
+            this.WFSOtherSRS.FormattingEnabled = true;
+            this.WFSOtherSRS.Location = new System.Drawing.Point(88, 72);
+            this.WFSOtherSRS.Name = "WFSOtherSRS";
+            this.WFSOtherSRS.Size = new System.Drawing.Size(240, 21);
+            this.WFSOtherSRS.TabIndex = 14;
+            this.toolTip.SetToolTip(this.WFSOtherSRS, "This field contains a \
secondary spatial reference system, usually in the format E" + +                    \
"PSG:xxxx"); +            this.WFSOtherSRS.TextChanged += new \
System.EventHandler(this.WFSOtherSRS_TextChanged); +            // 
+            // WFSPrimarySRS
+            // 
+            this.WFSPrimarySRS.FormattingEnabled = true;
+            this.WFSPrimarySRS.Location = new System.Drawing.Point(88, 48);
+            this.WFSPrimarySRS.Name = "WFSPrimarySRS";
+            this.WFSPrimarySRS.Size = new System.Drawing.Size(240, 21);
+            this.WFSPrimarySRS.TabIndex = 13;
+            this.toolTip.SetToolTip(this.WFSPrimarySRS, "This field contains the \
primary spatial reference system, usually in the format E" + +                    \
"PSG:xxxx"); +            this.WFSPrimarySRS.TextChanged += new \
System.EventHandler(this.WFSPrimarySRS_TextChanged); +            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(8, 72);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(58, 13);
+            this.label12.TabIndex = 11;
+            this.label12.Text = "Other SRS";
+            // 
+            // label11
+            // 
+            this.label11.AutoSize = true;
+            this.label11.Location = new System.Drawing.Point(8, 48);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(66, 13);
+            this.label11.TabIndex = 9;
+            this.label11.Text = "Primary SRS";
+            // 
+            // EditWFSBounds
+            // 
+            this.EditWFSBounds.Location = new System.Drawing.Point(304, 96);
+            this.EditWFSBounds.Name = "EditWFSBounds";
+            this.EditWFSBounds.Size = new System.Drawing.Size(24, 20);
+            this.EditWFSBounds.TabIndex = 8;
+            this.EditWFSBounds.Text = "...";
+            this.EditWFSBounds.UseVisualStyleBackColor = true;
+            this.EditWFSBounds.Click += new \
System.EventHandler(this.EditWFSBounds_Click); +            // 
+            // WFSBounds
+            // 
+            this.WFSBounds.Location = new System.Drawing.Point(88, 96);
+            this.WFSBounds.Multiline = true;
+            this.WFSBounds.Name = "WFSBounds";
+            this.WFSBounds.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+            this.WFSBounds.Size = new System.Drawing.Size(216, 40);
+            this.WFSBounds.TabIndex = 7;
+            this.toolTip.SetToolTip(this.WFSBounds, "This value is the Xml element \
bounds, which is inserted directly into the xml out" + +                    "put. Use \
the edit button if you are uncomfortable editing the value manually"); +            \
this.WFSBounds.TextChanged += new System.EventHandler(this.WFSBounds_TextChanged); +  \
//  +            // label10
+            // 
+            this.label10.AutoSize = true;
+            this.label10.Location = new System.Drawing.Point(8, 96);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(43, 13);
+            this.label10.TabIndex = 5;
+            this.label10.Text = "Bounds";
+            // 
+            // WFSAvalible
+            // 
+            this.WFSAvalible.AutoSize = true;
+            this.WFSAvalible.Location = new System.Drawing.Point(8, 24);
+            this.WFSAvalible.Name = "WFSAvalible";
+            this.WFSAvalible.Size = new System.Drawing.Size(63, 17);
+            this.WFSAvalible.TabIndex = 4;
+            this.WFSAvalible.Text = "Avalible";
+            this.toolTip.SetToolTip(this.WFSAvalible, "This checkbox controls the \
avalibility of the layer"); +            this.WFSAvalible.UseVisualStyleBackColor = \
true; +            this.WFSAvalible.CheckedChanged += new \
System.EventHandler(this.checkBox3_CheckedChanged); +            // 
             // groupBox3
             // 
             this.groupBox3.Anchor = \
((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | \
System.Windows.Forms.AnchorStyles.Left) @@ -508,114 +678,28 @@
             this.label9.TabIndex = 2;
             this.label9.Text = "Keywords";
             // 
-            // groupBox4
+            // CustomTab
             // 
-            this.groupBox4.Anchor = \
((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | \
                System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.groupBox4.Controls.Add(this.WFSOtherSRS);
-            this.groupBox4.Controls.Add(this.label12);
-            this.groupBox4.Controls.Add(this.WFSPrimarySRS);
-            this.groupBox4.Controls.Add(this.label11);
-            this.groupBox4.Controls.Add(this.button2);
-            this.groupBox4.Controls.Add(this.WFSBounds);
-            this.groupBox4.Controls.Add(this.label10);
-            this.groupBox4.Controls.Add(this.WFSAvalible);
-            this.groupBox4.Location = new System.Drawing.Point(7, 176);
-            this.groupBox4.Name = "groupBox4";
-            this.groupBox4.Size = new System.Drawing.Size(336, 144);
-            this.groupBox4.TabIndex = 10;
-            this.groupBox4.TabStop = false;
-            this.groupBox4.Text = "Functionality";
+            this.CustomTab.Controls.Add(this.ClearHeaderButton);
+            this.CustomTab.Controls.Add(this.dataGridView1);
+            this.CustomTab.Location = new System.Drawing.Point(4, 22);
+            this.CustomTab.Name = "CustomTab";
+            this.CustomTab.Size = new System.Drawing.Size(350, 363);
+            this.CustomTab.TabIndex = 3;
+            this.CustomTab.Text = "Custom Metadata";
+            this.CustomTab.UseVisualStyleBackColor = true;
             // 
-            // button2
+            // ClearHeaderButton
             // 
-            this.button2.Location = new System.Drawing.Point(304, 96);
-            this.button2.Name = "button2";
-            this.button2.Size = new System.Drawing.Size(24, 20);
-            this.button2.TabIndex = 8;
-            this.button2.Text = "...";
-            this.button2.UseVisualStyleBackColor = true;
+            this.ClearHeaderButton.Anchor = \
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | \
System.Windows.Forms.AnchorStyles.Right))); +            \
this.ClearHeaderButton.Location = new System.Drawing.Point(224, 328); +            \
this.ClearHeaderButton.Name = "ClearHeaderButton"; +            \
this.ClearHeaderButton.Size = new System.Drawing.Size(119, 23); +            \
this.ClearHeaderButton.TabIndex = 11; +            this.ClearHeaderButton.Text = \
"Clear all metadata"; +            this.ClearHeaderButton.UseVisualStyleBackColor = \
true; +            this.ClearHeaderButton.Click += new \
System.EventHandler(this.ClearHeaderButton_Click_1);  // 
-            // WFSBounds
-            // 
-            this.WFSBounds.Location = new System.Drawing.Point(88, 96);
-            this.WFSBounds.Multiline = true;
-            this.WFSBounds.Name = "WFSBounds";
-            this.WFSBounds.ScrollBars = System.Windows.Forms.ScrollBars.Both;
-            this.WFSBounds.Size = new System.Drawing.Size(216, 40);
-            this.WFSBounds.TabIndex = 7;
-            this.toolTip.SetToolTip(this.WFSBounds, "This value is the Xml element \
                bounds, which is inserted directly into the xml out" +
-                    "put. Use the edit button if you are uncomfortable editing the \
                value manually");
-            this.WFSBounds.TextChanged += new \
                System.EventHandler(this.WFSBounds_TextChanged);
-            // 
-            // label10
-            // 
-            this.label10.AutoSize = true;
-            this.label10.Location = new System.Drawing.Point(8, 96);
-            this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(43, 13);
-            this.label10.TabIndex = 5;
-            this.label10.Text = "Bounds";
-            // 
-            // WFSAvalible
-            // 
-            this.WFSAvalible.AutoSize = true;
-            this.WFSAvalible.Location = new System.Drawing.Point(8, 24);
-            this.WFSAvalible.Name = "WFSAvalible";
-            this.WFSAvalible.Size = new System.Drawing.Size(63, 17);
-            this.WFSAvalible.TabIndex = 4;
-            this.WFSAvalible.Text = "Avalible";
-            this.toolTip.SetToolTip(this.WFSAvalible, "This checkbox controls the \
                avalibility of the layer");
-            this.WFSAvalible.UseVisualStyleBackColor = true;
-            this.WFSAvalible.CheckedChanged += new \
                System.EventHandler(this.checkBox3_CheckedChanged);
-            // 
-            // WFSPrimarySRS
-            // 
-            this.WFSPrimarySRS.Location = new System.Drawing.Point(88, 48);
-            this.WFSPrimarySRS.Name = "WFSPrimarySRS";
-            this.WFSPrimarySRS.Size = new System.Drawing.Size(240, 20);
-            this.WFSPrimarySRS.TabIndex = 10;
-            this.toolTip.SetToolTip(this.WFSPrimarySRS, "This field contains the \
                layer title");
-            this.WFSPrimarySRS.TextChanged += new \
                System.EventHandler(this.WFSPrimarySRS_TextChanged);
-            // 
-            // label11
-            // 
-            this.label11.AutoSize = true;
-            this.label11.Location = new System.Drawing.Point(8, 48);
-            this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(66, 13);
-            this.label11.TabIndex = 9;
-            this.label11.Text = "Primary SRS";
-            // 
-            // WFSOtherSRS
-            // 
-            this.WFSOtherSRS.Location = new System.Drawing.Point(88, 72);
-            this.WFSOtherSRS.Name = "WFSOtherSRS";
-            this.WFSOtherSRS.Size = new System.Drawing.Size(240, 20);
-            this.WFSOtherSRS.TabIndex = 12;
-            this.toolTip.SetToolTip(this.WFSOtherSRS, "This field contains the layer \
                title");
-            this.WFSOtherSRS.TextChanged += new \
                System.EventHandler(this.WFSOtherSRS_TextChanged);
-            // 
-            // label12
-            // 
-            this.label12.AutoSize = true;
-            this.label12.Location = new System.Drawing.Point(8, 72);
-            this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(58, 13);
-            this.label12.TabIndex = 11;
-            this.label12.Text = "Other SRS";
-            // 
-            // WFSClearHeaderButton
-            // 
-            this.WFSClearHeaderButton.Anchor = \
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | \
                System.Windows.Forms.AnchorStyles.Right)));
-            this.WFSClearHeaderButton.Location = new System.Drawing.Point(224, 328);
-            this.WFSClearHeaderButton.Name = "WFSClearHeaderButton";
-            this.WFSClearHeaderButton.Size = new System.Drawing.Size(119, 23);
-            this.WFSClearHeaderButton.TabIndex = 11;
-            this.WFSClearHeaderButton.Text = "Clear all WFS data";
-            this.WFSClearHeaderButton.UseVisualStyleBackColor = true;
-            this.WFSClearHeaderButton.Click += new \
                System.EventHandler(this.WFSClearHeaderButton_Click);
-            // 
             // dataGridView1
             // 
             this.dataGridView1.Anchor = \
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | \
System.Windows.Forms.AnchorStyles.Bottom) @@ -629,18 +713,8 @@
             this.dataGridView1.Name = "dataGridView1";
             this.dataGridView1.Size = new System.Drawing.Size(336, 312);
             this.dataGridView1.TabIndex = 0;
+            this.dataGridView1.Leave += new \
System.EventHandler(this.dataGridView1_Leave);  // 
-            // ClearHeaderButton
-            // 
-            this.ClearHeaderButton.Anchor = \
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | \
                System.Windows.Forms.AnchorStyles.Right)));
-            this.ClearHeaderButton.Location = new System.Drawing.Point(224, 328);
-            this.ClearHeaderButton.Name = "ClearHeaderButton";
-            this.ClearHeaderButton.Size = new System.Drawing.Size(119, 23);
-            this.ClearHeaderButton.TabIndex = 11;
-            this.ClearHeaderButton.Text = "Clear all metadata";
-            this.ClearHeaderButton.UseVisualStyleBackColor = true;
-            this.ClearHeaderButton.Click += new \
                System.EventHandler(this.ClearHeaderButton_Click_1);
-            // 
             // ItemKey
             // 
             this.ItemKey.HeaderText = "Key";
@@ -651,10 +725,18 @@
             this.ItemValue.HeaderText = "Value";
             this.ItemValue.Name = "ItemValue";
             // 
+            // inheritedAccessRightsToolStripMenuItem
+            // 
+            this.inheritedAccessRightsToolStripMenuItem.Name = \
"inheritedAccessRightsToolStripMenuItem"; +            \
this.inheritedAccessRightsToolStripMenuItem.Size = new System.Drawing.Size(194, 22); \
+            this.inheritedAccessRightsToolStripMenuItem.Text = "Inherited access \
rights"; +            this.inheritedAccessRightsToolStripMenuItem.Click += new \
System.EventHandler(this.inheritedAccessRightsToolStripMenuItem_Click); +            \
//   // ResourceProperties
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CancelButton = this.CancelBtn;
             this.ClientSize = new System.Drawing.Size(358, 429);
             this.Controls.Add(this.tabControl1);
             this.Controls.Add(this.panel1);
@@ -665,17 +747,18 @@
             this.tabControl1.ResumeLayout(false);
             this.SecurityTab.ResumeLayout(false);
             this.SecurityTab.PerformLayout();
+            this.securityContextMenu.ResumeLayout(false);
             this.WMSTab.ResumeLayout(false);
             this.groupBox2.ResumeLayout(false);
             this.groupBox2.PerformLayout();
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
             this.WFSTab.ResumeLayout(false);
-            this.CustomTab.ResumeLayout(false);
+            this.groupBox4.ResumeLayout(false);
+            this.groupBox4.PerformLayout();
             this.groupBox3.ResumeLayout(false);
             this.groupBox3.PerformLayout();
-            this.groupBox4.ResumeLayout(false);
-            this.groupBox4.PerformLayout();
+            this.CustomTab.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
  this.ResumeLayout(false);
 
@@ -706,14 +789,14 @@
         private System.Windows.Forms.GroupBox groupBox2;
         private System.Windows.Forms.TextBox WMSBounds;
         private System.Windows.Forms.TextBox WMSTitle;
-        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button EditWMSBounds;
         private System.Windows.Forms.TextBox WMSMetadata;
         private System.Windows.Forms.TextBox WMSAbstract;
         private System.Windows.Forms.TextBox WMSKeyWords;
         private System.Windows.Forms.ToolTip toolTip;
         private System.Windows.Forms.Button WMSClearHeaderButton;
         private System.Windows.Forms.GroupBox groupBox4;
-        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Button EditWFSBounds;
         private System.Windows.Forms.TextBox WFSBounds;
         private System.Windows.Forms.Label label10;
         private System.Windows.Forms.CheckBox WFSAvalible;
@@ -726,14 +809,22 @@
         private System.Windows.Forms.Label label7;
         private System.Windows.Forms.Label label8;
         private System.Windows.Forms.Label label9;
-        private System.Windows.Forms.TextBox WFSOtherSRS;
         private System.Windows.Forms.Label label12;
-        private System.Windows.Forms.TextBox WFSPrimarySRS;
         private System.Windows.Forms.Label label11;
         private System.Windows.Forms.Button WFSClearHeaderButton;
         private System.Windows.Forms.Button ClearHeaderButton;
         private System.Windows.Forms.DataGridView dataGridView1;
         private System.Windows.Forms.DataGridViewTextBoxColumn ItemKey;
         private System.Windows.Forms.DataGridViewTextBoxColumn ItemValue;
+        private System.Windows.Forms.ComboBox WFSOtherSRS;
+        private System.Windows.Forms.ComboBox WFSPrimarySRS;
+        private System.Windows.Forms.ColumnHeader columnHeader1;
+        private System.Windows.Forms.ColumnHeader columnHeader2;
+        private System.Windows.Forms.ColumnHeader columnHeader3;
+        private System.Windows.Forms.ContextMenuStrip securityContextMenu;
+        private System.Windows.Forms.ToolStripMenuItem \
readWriteAccessToolStripMenuItem; +        private \
System.Windows.Forms.ToolStripMenuItem readOnlyAccessToolStripMenuItem; +        \
private System.Windows.Forms.ToolStripMenuItem denyAccessToolStripMenuItem; +        \
private System.Windows.Forms.ToolStripMenuItem \
inheritedAccessRightsToolStripMenuItem;  }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro/ResourceProperties.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceProperties.cs	2008-08-28 17:56:09 UTC (rev \
                3295)
+++ trunk/Tools/Maestro/Maestro/ResourceProperties.cs	2008-08-28 21:08:24 UTC (rev \
3296) @@ -17,13 +17,30 @@
         private ResourceDocumentHeaderType m_resourceHeader;
         private ResourceFolderHeaderType m_folderHeader;
 
+        private bool m_isUpdating = false;
+        private string[] m_srslist = null;
+
         private const int RWUSER = 0;
         private const int ROUSER = 1;
-        private const int NOUSER = 3;
-        private const int RWGROUP = 4;
-        private const int ROGROUP = 5;
-        private const int NOGROUP = 6;
+        private const int NOUSER = 2;
+        private const int RWGROUP = 3;
+        private const int ROGROUP = 4;
+        private const int NOGROUP = 5;
+        private const int IHUSER = 6;
+        private const int IHGROUP = 7;
 
+        private string[] StatusNames =
+        {
+            "Read/write",
+            "Read only",
+            "No access",
+            "Read/write",
+            "Read only",
+            "No access",
+            "Inherited",
+            "Inherited"
+        };
+
         public ResourceProperties(ServerConnectionI connection, string resourceId)
             : this()
         {
@@ -38,13 +55,13 @@
 
         private void ResourceProperties_Load(object sender, EventArgs e)
         {
-            Dictionary<string, ListViewItem> ul = new \
                Dictionary<string,ListViewItem>();
-            Dictionary<string, ListViewItem> gl = new \
Dictionary<string,ListViewItem>(); +            Dictionary<string, ListViewItem> ul = \
new Dictionary<string, ListViewItem>(); +            Dictionary<string, ListViewItem> \
gl = new Dictionary<string, ListViewItem>();  
             UsersAndGroups.Items.Clear();
             foreach (UserListUser u in m_connection.EnumerateUsers().Items)
             {
-                ListViewItem lvi = new ListViewItem(u.FullName, RWUSER);
+                ListViewItem lvi = new ListViewItem(new string[] { u.FullName, \
u.Description, StatusNames[IHUSER] }, IHUSER);  lvi.Tag = u;
                 UsersAndGroups.Items.Add(lvi);
                 ul.Add(lvi.Text, lvi);
@@ -52,7 +69,7 @@
 
             foreach (GroupListGroup g in m_connection.EnumerateGroups().Group)
             {
-                ListViewItem lvi = new ListViewItem(g.Name, RWGROUP);
+                ListViewItem lvi = new ListViewItem(new string[] { g.Name, \
g.Description, StatusNames[IHGROUP] }, IHGROUP);  lvi.Tag = g;
                 UsersAndGroups.Items.Add(lvi);
                 gl.Add(lvi.Text, lvi);
@@ -100,41 +117,95 @@
                 else
                     UpdateWFSDisplay();
             }
+
+            if (tabControl1.TabCount == 1)
+            {
+                foreach (Control c in new \
System.Collections.ArrayList(tabControl1.TabPages[0].Controls)) +                {
+                    tabControl1.Controls.Remove(c);
+                    this.Controls.Add(c);
+                }
+
+                this.Controls.Remove(tabControl1);
+            }
+
+            this.Text = m_resourceId;
+
         }
 
         private void UpdateWFSDisplay()
         {
-            if (m_resourceHeader.Metadata != null && \
m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property \
!= null) +            try
             {
-                WFSTitle.Text = m_resourceHeader.Metadata.Simple.Property["_Title"];
-                WFSKeywords.Text = \
                m_resourceHeader.Metadata.Simple.Property["_Keywords"];
-                WFSAbstract.Text = \
                m_resourceHeader.Metadata.Simple.Property["_Abstract"];
-                WFSMetadata.Text = \
m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"]; +                \
m_isUpdating = true; +                if (m_resourceHeader.Metadata != null && \
m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property \
!= null) +                {
+                    WFSTitle.Text = \
m_resourceHeader.Metadata.Simple.Property["_Title"]; +                    \
WFSKeywords.Text = m_resourceHeader.Metadata.Simple.Property["_Keywords"]; +          \
WFSAbstract.Text = m_resourceHeader.Metadata.Simple.Property["_Abstract"]; +          \
WFSMetadata.Text = m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"];  
-                WFSPrimarySRS.Text = \
                m_resourceHeader.Metadata.Simple.Property["_PrimarySRS"];
-                WFSOtherSRS.Text = \
                m_resourceHeader.Metadata.Simple.Property["_OtherSRS"];
-                WFSAvalible.Checked = \
                m_resourceHeader.Metadata.Simple.Property["_IsPublished"] == "1";
-                WFSBounds.Text = \
m_resourceHeader.Metadata.Simple.Property["_Bounds"]; +                    \
WFSPrimarySRS.Text = m_resourceHeader.Metadata.Simple.Property["_PrimarySRS"]; +      \
WFSOtherSRS.Text = m_resourceHeader.Metadata.Simple.Property["_OtherSRS"]; +          \
WFSAvalible.Checked = m_resourceHeader.Metadata.Simple.Property["_IsPublished"] == \
"1"; +                    WFSBounds.Text = \
m_resourceHeader.Metadata.Simple.Property["_Bounds"]; +                }
+                else
+                {
+                    WFSTitle.Text =
+                    WFSKeywords.Text =
+                    WFSAbstract.Text =
+                    WFSMetadata.Text = "";
+
+                    WFSPrimarySRS.Text =
+                    WFSOtherSRS.Text =
+                    WFSBounds.Text = "";
+                    WFSAvalible.Checked = false;
+                }
             }
-            
+            finally
+            {
+                m_isUpdating = false;
+            }
+
             UpdateCustomDisplay();
         }
 
         private void UpdateWMSDisplay()
         {
-            if (m_resourceHeader.Metadata != null && \
m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property \
!= null) +            try
             {
-                WMSTitle.Text = m_resourceHeader.Metadata.Simple.Property["_Title"];
-                WMSKeyWords.Text = \
                m_resourceHeader.Metadata.Simple.Property["_Keywords"];
-                WMSAbstract.Text = \
                m_resourceHeader.Metadata.Simple.Property["_Abstract"];
-                WMSMetadata.Text = \
m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"]; +                \
m_isUpdating = true; +                if (m_resourceHeader.Metadata != null && \
m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property \
!= null) +                {
+                    WMSTitle.Text = \
m_resourceHeader.Metadata.Simple.Property["_Title"]; +                    \
WMSKeyWords.Text = m_resourceHeader.Metadata.Simple.Property["_Keywords"]; +          \
WMSAbstract.Text = m_resourceHeader.Metadata.Simple.Property["_Abstract"]; +          \
WMSMetadata.Text = m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"];  
-                WMSQueryable.Checked = \
                m_resourceHeader.Metadata.Simple.Property["_Queryable"] == "1";
-                WMSOpaque.Checked = \
                m_resourceHeader.Metadata.Simple.Property["_Opaque"] == "1";
-                WMSAvalible.Checked = \
                m_resourceHeader.Metadata.Simple.Property["_IsPublished"] == "1";
-                WMSBounds.Text = \
m_resourceHeader.Metadata.Simple.Property["_Bounds"]; +                    \
WMSQueryable.Checked = m_resourceHeader.Metadata.Simple.Property["_Queryable"] == \
"1"; +                    WMSOpaque.Checked = \
m_resourceHeader.Metadata.Simple.Property["_Opaque"] == "1"; +                    \
WMSAvalible.Checked = m_resourceHeader.Metadata.Simple.Property["_IsPublished"] == \
"1"; +                    WMSBounds.Text = \
m_resourceHeader.Metadata.Simple.Property["_Bounds"]; +                }
+                else
+                {
+                    WMSTitle.Text =
+                    WMSKeyWords.Text =
+                    WMSAbstract.Text =
+                    WMSMetadata.Text = "";
+
+                    WMSQueryable.Checked =
+                    WMSOpaque.Checked =
+                    WMSAvalible.Checked = false;
+
+                    WMSBounds.Text = "";
+                }
             }
-
+            finally
+            {
+                m_isUpdating = false;
+            }
             UpdateCustomDisplay();
         }
 
@@ -167,6 +238,8 @@
                     lvi.ImageIndex = NOUSER;
                     break;
             }
+
+            lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
         }
 
         private void UpdateListItem(ResourceSecurityTypeGroupsGroup g, ListViewItem \
lvi) @@ -183,6 +256,7 @@
                     lvi.ImageIndex = NOUSER;
                     break;
             }
+            lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
         }
 
         private void ClearHeaderButton_Click(object sender, EventArgs e)
@@ -193,6 +267,8 @@
 
         private void WMSTitle_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Title"] = WMSTitle.Text;
         }
@@ -216,7 +292,7 @@
                         m_resourceHeader.Metadata.Simple.Property["_Keywords"] = "";
                     if (m_resourceHeader.Metadata.Simple.Property["_Abstract"] == \
                null)
                         m_resourceHeader.Metadata.Simple.Property["_Abstract"] = "";
-                    if \
(m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"] == null)  +           \
                if (m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"] == \
                null)
                         \
m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"] = "";  
                     if (m_resourceHeader.Metadata.Simple.Property["_Queryable"] == \
null) @@ -233,42 +309,56 @@
 
         private void WMSKeyWords_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Keywords"] = \
WMSKeyWords.Text;  }
 
         private void WMSAbstract_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Abstract"] = \
WMSAbstract.Text;  }
 
         private void WMSMetadata_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"] = \
WMSMetadata.Text;  }
 
         private void WMSAvalible_CheckedChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_IsPublished"] = \
WMSAvalible.Checked ? "1" : "0";  }
 
         private void WMSBounds_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Bounds"] = WMSBounds.Text;
         }
 
         private void WMSQueryable_CheckedChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Queryable"] = \
WMSQueryable.Checked ? "1" : "0";  }
 
         private void WMSOpaque_CheckedChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Opaque"] = WMSOpaque.Checked \
? "1" : "0";  }
@@ -276,39 +366,90 @@
         private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
         {
             if (tabControl1.SelectedTab == CustomTab)
+                UpdateCustomDisplay();
+            else if (tabControl1.SelectedTab == WMSTab)
                 UpdateWMSDisplay();
-            else if (tabControl1.SelectedTab == WMSTab)
+            else if (tabControl1.SelectedTab == WFSTab)
+            {
+                FillCoordSysLists();
                 UpdateWFSDisplay();
-            else if (tabControl1.SelectedTab == WFSTab)
-                UpdateCustomDisplay();
+            }
         }
 
+        private void FillCoordSysLists()
+        {
+            if (WFSPrimarySRS.Items.Count == 0)
+            {
+                try
+                {
+                    List<string> items = new List<string>();
+                    foreach (OSGeo.MapGuide.MaestroAPI.CoordinateSystem.CoordSys c \
in m_connection.CoordinateSystem.Coordsys) +                        if \
(c.Code.StartsWith("EPSG:")) +                            items.Add(c.Code);
+
+                    m_srslist = items.ToArray();
+                    try
+                    {
+                        WFSPrimarySRS.BeginUpdate();
+                        WFSPrimarySRS.Items.AddRange(m_srslist);
+                    }
+                    finally
+                    {
+                        WFSPrimarySRS.EndUpdate();
+                    }
+
+                    try
+                    {
+                        WFSOtherSRS.BeginUpdate();
+                        WFSOtherSRS.Items.AddRange(m_srslist);
+                    }
+                    finally
+                    {
+                        WFSOtherSRS.EndUpdate();
+                    }
+                }
+                catch
+                {
+                }
+            }
+        }
+
         private void WFSTitle_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Title"] = WFSTitle.Text;
         }
 
         private void WFSKeywords_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Keywords"] = \
WFSKeywords.Text;  }
 
         private void WFSAbstract_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Abstract"] = \
WFSAbstract.Text;  }
 
         private void WFSMetadata_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_ExtendedMetadata"] = \
WFSMetadata.Text;  }
 
         private void checkBox3_CheckedChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_IsPublished"] = \
WFSAvalible.Checked ? "1" : "0";  
@@ -316,24 +457,32 @@
 
         private void WFSPrimarySRS_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_PrimarySRS"] = \
WFSPrimarySRS.Text;  }
 
         private void WFSOtherSRS_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_OtherSRS"] = \
WFSOtherSRS.Text;  }
 
         private void WFSBounds_TextChanged(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             EnsureMetaData();
             m_resourceHeader.Metadata.Simple.Property["_Bounds"] = WFSBounds.Text;
         }
 
         private void WFSClearHeaderButton_Click(object sender, EventArgs e)
         {
+            if (m_isUpdating)
+                return;
             m_resourceHeader.Metadata = null;
             UpdateWFSDisplay();
         }
@@ -343,5 +492,189 @@
             m_resourceHeader.Metadata = null;
             UpdateCustomDisplay();
         }
+
+        private void dataGridView1_Leave(object sender, EventArgs e)
+        {
+            EnsureMetaData();
+            m_resourceHeader.Metadata.Simple.Property.Clear();
+
+            foreach (DataGridViewRow dr in dataGridView1.Rows)
+            {
+                string k = dr.Cells[0].Value == null || dr.Cells[0].Value == \
DBNull.Value ? "" : dr.Cells[0].Value.ToString(); +                string v = \
dr.Cells[1].Value == null || dr.Cells[1].Value == DBNull.Value ? "" : \
dr.Cells[1].Value.ToString(); +
+                if (!string.IsNullOrEmpty(k))
+                    m_resourceHeader.Metadata.Simple.Property[k] = v;
+            }
+        }
+
+        private void OKBtn_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                //Update security info
+                if (m_resourceId.IsFolder)
+                {
+                    m_folderHeader.Security.Inherited = UseInherited.Checked;
+                    if (m_folderHeader.Security.Inherited)
+                    {
+                        m_folderHeader.Security.Groups = null;
+                        m_folderHeader.Security.Users = null;
+                    }
+                    else
+                    {
+                        m_folderHeader.Security.Groups = new \
ResourceSecurityTypeGroups(); +                        m_folderHeader.Security.Users \
= new ResourceSecurityTypeUsers(); +                        \
m_folderHeader.Security.Groups.Group = new \
ResourceSecurityTypeGroupsGroupCollection(); +                        \
m_folderHeader.Security.Users.User = new ResourceSecurityTypeUsersUserCollection(); + \
ReadSecurityData(m_folderHeader.Security.Groups.Group, \
m_folderHeader.Security.Users.User); +                    }
+                }
+                else
+                {
+                    m_resourceHeader.Security.Inherited = UseInherited.Checked;
+                    if (m_resourceHeader.Security.Inherited)
+                    {
+                        m_resourceHeader.Security.Groups = null;
+                        m_resourceHeader.Security.Users = null;
+                    }
+                    else
+                    {
+                        m_resourceHeader.Security.Groups = new \
ResourceSecurityTypeGroups(); +                        \
m_resourceHeader.Security.Users = new ResourceSecurityTypeUsers(); +                  \
m_resourceHeader.Security.Groups.Group = new \
ResourceSecurityTypeGroupsGroupCollection(); +                        \
m_resourceHeader.Security.Users.User = new ResourceSecurityTypeUsersUserCollection(); \
+                        ReadSecurityData(m_resourceHeader.Security.Groups.Group, \
m_resourceHeader.Security.Users.User); +                    }
+                }
+
+                //Save header
+                if (m_resourceId.IsFolder)
+                    m_connection.SetFolderHeader(m_resourceId, m_folderHeader);
+                else
+                    m_connection.SetResourceHeader(m_resourceId, m_resourceHeader);
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(this, string.Format("Failed to save the resource \
properties: {0}", ex.Message), Application.ProductName, MessageBoxButtons.OK, \
MessageBoxIcon.Error); +                return;
+            }
+
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+
+        private void ReadSecurityData(ResourceSecurityTypeGroupsGroupCollection \
groups, ResourceSecurityTypeUsersUserCollection users) +        {
+            foreach (ListViewItem lvi in UsersAndGroups.Items)
+                if (lvi.Tag as UserListUser != null)
+                {
+                    ResourceSecurityTypeUsersUser u = new \
ResourceSecurityTypeUsersUser(); +                    u.Name = (lvi.Tag as \
UserListUser).Name; +                    if (lvi.ImageIndex == RWUSER)
+                        u.Permissions = PermissionsType.rw;
+                    else if (lvi.ImageIndex == ROUSER)
+                        u.Permissions = PermissionsType.r;
+                    else if (lvi.ImageIndex == NOUSER)
+                        u.Permissions = PermissionsType.n;
+                    else
+                        continue;
+                    users.Add(u);
+                }
+                else if (lvi.Tag as GroupListGroup != null && lvi.ImageIndex != \
IHGROUP) +                {
+                    ResourceSecurityTypeGroupsGroup g = new \
ResourceSecurityTypeGroupsGroup(); +                    g.Name = (lvi.Tag as \
GroupListGroup).Name; +                    if (lvi.ImageIndex == RWGROUP)
+                        g.Permissions = PermissionsType.rw;
+                    else if (lvi.ImageIndex == ROGROUP)
+                        g.Permissions = PermissionsType.r;
+                    else if (lvi.ImageIndex == NOGROUP)
+                        g.Permissions = PermissionsType.n;
+                    else
+                        continue;
+                    groups.Add(g);
+                }
+        }
+
+        private void securityContextMenu_Opening(object sender, CancelEventArgs e)
+        {
+            readWriteAccessToolStripMenuItem.Enabled =
+                readOnlyAccessToolStripMenuItem.Enabled =
+                denyAccessToolStripMenuItem.Enabled =
+                inheritedAccessRightsToolStripMenuItem.Enabled =
+                    UsersAndGroups.SelectedItems.Count > 0;
+        }
+
+        private void readWriteAccessToolStripMenuItem_Click(object sender, EventArgs \
e) +        {
+            foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+            {
+                if (lvi.Tag as UserListUser != null)
+                    lvi.ImageIndex = RWUSER;
+                else
+                    lvi.ImageIndex = RWGROUP;
+
+                lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+            }
+        }
+
+        private void readOnlyAccessToolStripMenuItem_Click(object sender, EventArgs \
e) +        {
+            foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+            {
+                if (lvi.Tag as UserListUser != null)
+                    lvi.ImageIndex = ROUSER;
+                else
+                    lvi.ImageIndex = ROGROUP;
+
+                lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+            }
+
+        }
+
+        private void denyAccessToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+            {
+                if (lvi.Tag as UserListUser != null)
+                    lvi.ImageIndex = NOUSER;
+                else
+                    lvi.ImageIndex = NOGROUP;
+
+                lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+            }
+
+        }
+
+        private void inheritedAccessRightsToolStripMenuItem_Click(object sender, \
EventArgs e) +        {
+            foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+            {
+                if (lvi.Tag as UserListUser != null)
+                    lvi.ImageIndex = IHUSER;
+                else
+                    lvi.ImageIndex = IHGROUP;
+
+                lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+            }
+
+        }
+
+        private void EditWMSBounds_Click(object sender, EventArgs e)
+        {
+            BoundsPicker bp = new BoundsPicker(WMSBounds.Text, m_srslist);
+            if (bp.ShowDialog(this) == DialogResult.OK)
+                WMSBounds.Text = bp.SRSBounds;
+        }
+
+        private void EditWFSBounds_Click(object sender, EventArgs e)
+        {
+            BoundsPicker bp = new BoundsPicker(WFSBounds.Text, m_srslist);
+            if (bp.ShowDialog(this) == DialogResult.OK)
+                WFSBounds.Text = bp.SRSBounds;
+
+        }
     }
+
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro/ResourceProperties.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceProperties.resx	2008-08-28 17:56:09 UTC (rev \
                3295)
+++ trunk/Tools/Maestro/Maestro/ResourceProperties.resx	2008-08-28 21:08:24 UTC (rev \
3296) @@ -117,12 +117,9 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>  \
                </resheader>
-  <metadata name="ItemKey.UserAddedColumn" type="System.Boolean, mscorlib, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
+  <metadata name="securityContextMenu.TrayLocation" type="System.Drawing.Point, \
System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + \
<value>262, 17</value>  </metadata>
-  <metadata name="ItemValue.UserAddedColumn" type="System.Boolean, mscorlib, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="UserAndGroupImages.TrayLocation" type="System.Drawing.Point, \
System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">  \
<value>17, 17</value>  </metadata>
@@ -130,162 +127,205 @@
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
                
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
                
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABC
                
-        IAAAAk1TRnQBSQFMAgEBBgEAAQkBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
                
-        AwABIAMAAQEBAAEgBgABIDIAAVQBBwELAasBRAGjAcsB+ewAAQcCAQIHAgEBCAEFAgEBBQFTASUBOAHV
                
-        ATwBxgHwAf4BRAGtAc8B+QEFAgEBBQECAwEgAAEHAgECBwIBAQgBBQIBAQUBAwIBAgMCAQEDAR4CAQEp
                
-        ARABBAF9AfsBEAEEAcsB+wEQAQQBmAH7AT8CAQFpkAABDQIBAQ8BawGsAWYB/gF7AcUBdgH+AXsBxQF2
                
-        Af4BfQHFAXcB/gF9AcMBdwH+AS0BrQHQAf4BkgHMAeoB/wGrAaUBpgH/AakBqgGjAf8BsQGwAasB/wHA
                
-        AroB/gEGAgEBBgwAAQ0CAQEPAWsBrAFmAf4BewHFAXYB/gF7AcUBdgH+AX0BxQF3Af4BfQHDAXcB/gF5
                
-        AbgBdAH+AgQB5wH/AQYBCAG0Af8BKAFMATIB/gEPAREBagH+AQgBBAHcAf4BQQIBAXCMAAFDAgEBdgFE
                
-        AbkBQQH+ATgBtAEyAf4BOAG0ATIB/gE4AbQBMgH+AWkBqQFkAf4BfQHAAXgB/gGlAaIBoAH/AcUB3AGr
                
-        Af8BygHbAZkB/wHcAdsBnQH/AWwBGgEVAcEBzwLJAf4MAAFDAgEBdgFEAbkBQQH+ATgBtAEyAf4BOAG0
                
-        ATIB/gE4AbQBMgH+AWkBqQFkAf4BFwEZAWIB/gEEAQYB4AH/AQYBCwFzAf8BIQFYASAB/gF9AcIBdwH+
                
-        ATQBBgE3AeoBDAEEAawB/IwAAUkCAgGDAUEBtwE9Af4BOAG0ATIB/gE4AbQBMgH+AWIBwAFdAf4BqwHA
                
-        AaEB/gFBAYMBOwH+AacCogH/AckB2wGZAf8ByQHXAYsB/wHbAdYBhgH/AXcBJAEXAcoBrgGRAY4B9gwA
                
-        AUkCAgGDAUEBtwE9Af4BOAG0ATIB/gE4AbQBMgH+AWIBwAFdAf4BqwHAAaEB/gEEAQYBkwH/AQUBCAGU
                
-        Af8BOAG0ATIB/gEFAQgBowH/AWMBhgFeAf4BTQICAZMBCAEEAdwB/oAAAQ0CAQEQAcYBhwFoAf4B2gGk
                
-        AXMB/gFxAX8BQAH+AUMBtAFAAf4BNgGvATEB/gE2Aa8BMQH+AWsBqAFlAf4B9QHqAekB/gHlAeEB2gH+
                
-        AbECrAH/AckB1gGLAf8ByQHQAXgB/wHhAdcBhAH/AaYBYwFRAeUBsgGZAZYB+QENAgEBEAHGAYcBaAH+
                
-        AdoBpAFzAf4BcQF/AUAB/gFDAbQBQAH+ATYBrwExAf4BNgGvATEB/gFrAagBZQH+AfUB6gHpAf4BNQEv
                
-        AWkB/gIEAecB/wE2AakBMQH+ATYBqwExAf4BBgEIAccB/wEmAQUBVAHyAQwBBAGVAfyAAAFCAgEBcgHa
                
-        AZABPgH+AdoBjwE8Af4BoAF7ATAB/gF1Ab4BcAH+ATQBqAEvAf4BNQGoATAB/gFDAX8BPQH+AaEBpgG2
                
-        Af4BsgGvAbcB/gGlAagBoQH/Ab4BzQGeAf8B0QHQAXcB/wHtAeABpwH/AYQBNwEvAdYBnwKBAfUBQgIB
                
-        AXIB2gGQAT4B/gHaAY8BPAH+AaABewEwAf4BdQG+AXAB/gE0AagBLwH+ATUBqAEwAf4BQwF/AT0B/gGh
                
-        AaYBtgH+Aa4BrAGzAf4CBAHZAf8BBAEGAdwB/wEPARkBVwH+AQgBCgGnAf8BCAEEAdwB/gEsAgEBQoAA
                
-        AUUCAQF5AdkBjgE9Af4B2QGOATwB/gHMAYUBOAH+AUYBdQEtAf4BgAG5AXoB/gFOAZEBcgH+AWIBmAHZ
                
-        Af4BpgHKAfEB/gGqAcsB8AH+ASoBfAHMAf4BsQGvAasB/gHRAc4BzQH/AbwBtQG0Af4BkAJfAewEAAFF
                
-        AgEBeQHZAY4BPQH+AdkBjgE8Af4BzAGFATgB/gFGAXUBLQH+AYABuQF6Af4BTgGRAXIB/gFiAZgB2QH+
                
-        AaYBygHxAf4BqgHLAfAB/gErAXoByAH+ARgBGgFbAf4BBQEGAaYB/wEaAQcBWQH4AR8CAQEqhAABNgIB
                
-        AVYB1AGIAUEB/gHTAYQBOgH+AdkBnAFhAf4B2wHKAccB/gGyAakBqAH+AW4BoQHdAf4BhQG9AfIB/gGE
                
-        Ab0B8gH+AYMBvQHyAf4BhQG9AfIB/gEjAWEBsQH5EAABNgIBAVYB1AGIAUEB/gHTAYQBOgH+AdkBnAFh
                
-        Af4B2wHKAccB/gGyAakBqAH+AW4BoQHdAf4BhQG9AfIB/gGEAb0B8gH+AYMBvQHyAf4BhQG9AfIB/gEj
                
-        AWEBsQH5lAABxQGNAXMB/gHLAX8BPAH+AYUBfAF+Af4BQQGAAdEB/gEtAXMBuwH+AYsBvgHyAf4BgAG6
                
-        AfIB/gGAAboB8gH+AYABuQHyAf4BgAG5AfIB/gGeAcMB7QH+AQQCAQEEEAABxQGNAXMB/gHLAX8BPAH+
                
-        AYUBfAF+Af4BQQGAAdEB/gEtAXMBuwH+AYsBvgHyAf4BgAG6AfIB/gGAAboB8gH+AYABuQHyAf4BgAG5
                
-        AfIB/gGeAcMB7QH+AQQCAQEEkAABAwIBAQIBXwINAb8BnwHEAe0B/gGFAb0B8QH+ATABfwHNAf4BfwG3
                
-        AfIB/gF8AbUB8gH+AXsBtQHyAf4BegG0AfIB/gF5AbQB8gH+AZUBwQHxAf4BGwIBASQQAAEDAgEBAgFf
                
-        Ag0BvwGfAcQB7QH+AYUBvQHxAf4BMAF/Ac0B/gF/AbcB8gH+AXwBtQHyAf4BewG1AfIB/gF6AbQB8gH+
                
-        AXkBtAHyAf4BlQHBAfEB/gEbAgEBJJQAAUMBNQFhAecBgAG6AfIB/gGAAboB8gH+AUcBhgHMAf4BgAG6
                
-        AfIB/gFzAbAB8gH+AXIBsAHyAf4BcQGvAfIB/gFwAa8B8gH+AZIBvwHvAf4BAgMBFAABQwE1AWEB5wGA
                
-        AboB8gH+AYABugHyAf4BRwGGAcwB/gGAAboB8gH+AXMBsAHyAf4BcgGwAfIB/gFxAa8B8gH+AXABrwHy
                
-        Af4BkgG/Ae8B/gECAwGUAAFLAZEB4wH+AXwBtQHyAf4BewG1AfIB/gFrAZ0B1AH+AWIBpAHwAf4BawGs
                
-        AfIB/gFqAawB8gH+AWoBqwHyAf4BbgGuAfIB/gE6AVcBngHxGAABSwGRAeMB/gF8AbUB8gH+AXsBtQHy
                
-        Af4BawGdAdQB/gFiAaQB8AH+AWsBrAHyAf4BagGsAfIB/gFqAasB8gH+AW4BrgHyAf4BOgFXAZ4B8ZgA
                
-        AVcBFwEmAckBcQGvAfIB/gFwAa8B8gH+AW4BrQHwAf4BUgGJAccB/gFOAZoB8QH+AZEBvwHxAf4BjwG+
                
-        AfEB/gEyAWwBvQH2HAABVwEXASYByQFxAa8B8gH+AXABrwHyAf4BbgGtAfAB/gFSAYkBxwH+AU4BmgHx
                
-        Af4BkQG/AfEB/gGPAb4B8QH+ATIBbAG9AfacAAEDAgEBAwF7AbIB8QH+AWgBqgHyAf4BZwGqAfIB/gGI
                
-        AbwB8AH+ATUCAQFUAQYCAQEGAQIDASAAAQMCAQEDAXsBsgHxAf4BaAGqAfIB/gFnAaoB8gH+AYgBvAHw
                
-        Af4BNQIBAVQBBgIBAQYBAgMBpAABAwIBAQIBUwEHAQoBqAFYARIBIAHEARoCAQEjMAABAwIBAQIBUwEH
                
-        AQoBqAFYARIBIAHEARoCAQEjxAABIgIBATA8AAFUAQcBCwGrAUQBowHLAfl4AAEiAgEBMCQAARgCAQEf
                
-        AT8CAQFqAUECAQFvAT0CAQFmATsCAQFgATgCAQFaAT8CAQFpAW0BzQHbAf4BVAEhATAB0QE0AgEBUgED
                
-        AgEBAhQAARgCAQEfAT8CAQFqAUECAQFvAT0CAQFmATsCAQFgATgCAQFaASsBdwGlAfgBPAHGAfAB/gFF
                
-        AbEB1QH6ATQCAQFSAQMCAQECFAABGAIBAR8BPwIBAWoBQQIBAW8BPQIBAWYBOwIBAWABOAIBAVoBOwIB
                
-        AWABPAIBAWMBPgIBAWcBEAEEAXsB+wEQAQQBywH7ARABBAGYAfsBPwIBAWkYAAEHAgECBwIBAQgBBQIB
                
-        AQUBCgIBAQsBbQHNAdsB/gFUASEBMAHRAQUCAQEFAQIDARAAATsCAQFgAYIBxAF/Af4BYAG/AVoB/gFe
                
-        Ab4BWAH+AWIBwAFcAf4BZQHAAWAB/gFoAcEBYwH+AWUBwAFgAf4BIwGwAfMB/wEcAaEB5wH/ATEBoQHk
                
-        Af8BXwGhAVoB/gEFAgEBBQwAATsCAQFgAYIBxAF/Af4BYAG/AVoB/gFeAb4BWAH+AWIBwAFcAf4BZQHA
                
-        AWAB/gFoAcEBYwH+AWUBwAFgAf4BKQGsAc0B/gGSAcwB6gH/AasBpQGmAf8BrAGqAaYB/wGbAXkBeAHz
                
-        AcACugH+AQYCAQEGBAABOwIBAWABggHEAX8B/gFgAb8BWgH+AV4BvgFYAf4BYgHAAVwB/gFlAcABYAH+
                
-        AWgBwQFjAf4BZQHAAWAB/gFhAbUBWwH+AgQB5wH/AQUBCAGzAf8BOgFNAUEB/gEtAQgBQAHvAQgBBAHc
                
-        Af4BQQIBAXAMAAENAgEBDwFrAawBZgH+AXsBxQF2Af4BewHFAXYB/gF9AcUBdwH+AX0BwwF3Af4BJAGw
                
-        AfMB/wEcAaEB5wH/ATUBmAHZAf4BfQHBAXcB/gEqAX8BJQH+DAABTAEaAQMB0gE/AbYBOQH+ATgBtAEy
                
-        Af4BOAG0ATIB/gE4AbQBMgH+AWgBwQFiAf4BRAGNAUEB/gFEAbkBQQH+ATgBtAEyAf4BJwHAAe8B/wEc
                
-        AaEB5wH/ATIBmAHWAf4BPAIBAWQMAAFMARoBAwHSAT8BtgE5Af4BOAG0ATIB/gE4AbQBMgH+ATgBtAEy
                
-        Af4BaAHBAWIB/gFEAY0BQQH+AUQBuQFBAf4BOAG0ATIB/gGlAaIBoAH/AcUB3AGrAf8B1QHeAaUB/wGE
                
-        AToBKgHYAWwBGQEUAcABzwLJAf4EAAFMARoBAwHSAT8BtgE5Af4BOAG0ATIB/gE4AbQBMgH+ATgBtAEy
                
-        Af4BaAHBAWIB/gFEAY0BQQH+AUQBuQFBAf4BDgEXAVgB/gEEAQYB4AH/AQoBCwFvAf4BQwFkAUEB/gE8
                
-        AgEBZAE7AQYBMgHoAQwBBAGsAfwMAAFDAgEBdgFEAbkBQQH+ATgBtAEyAf4BOAG0ATIB/gE4AbQBMgH+
                
-        AWkBqQFkAf4BfQHAAXgB/gEnAcAB7wH/ARwBoQHnAf8BIQGSAcQB/gF9AcIBdwH+AQMCAQECCAABRAEu
                
-        AQoB4gE8AbUBNgH+ATgBtAEyAf4BOAG0ATIB/gE4AbQBMgH+ATgBgQEyAf4B9AHqAegB/gFvAasBaQH+
                
-        ATgBtAEyAf4BOAG0ATIB/gEnAcAB8AH/ARwBoQHnAf8BagE0ATsB3AwAAUQBLgEKAeIBPAG1ATYB/gE4
                
-        AbQBMgH+ATgBtAEyAf4BOAG0ATIB/gE4AYEBMgH+AfQB6gHoAf4BbwGrAWkB/gE4AbQBMgH+AacCogH/
                
-        AckB2wGZAf8B0wHaAZQB/wGJAT8BKQHcAXQBIQEVAckBrgGRAY4B9gQAAUQBLgEKAeIBPAG1ATYB/gE4
                
-        AbQBMgH+ATgBtAEyAf4BOAG0ATIB/gE4AYEBMgH+AfQB6gHoAf4BbwGrAWkB/gEEAQcBkwH/AQUBCAGU
                
-        Af8BOAG0ATIB/gEFAQgBowH/AUkCAgGGAUsCAgGLAQgBBAHcAf4MAAFJAgIBgwFBAbcBPQH+ATgBtAEy
                
-        Af4BOAG0ATIB/gFiAcABXQH+AasBwAGhAf4BQQGDATsB/gE7AbUBNgH+AScBwAHwAf8BHAGhAecB/wGA
                
-        AaYBugH+AQcCAQEICAABTgEkAQgB2QE8AbIBNwH+ATcBsQEyAf4BNwGxATIB/gFYAbwBVAH+AYABqQF5
                
-        Af4B9QLqAf4BNgF/AS4B/gE9AbMBOAH+ATcBsQEyAf4BNwGxATIB/gGWAcgB2AH/Aa4CqAH+AWsBJQEz
                
-        AdoIAAFOASQBCAHZATwBsgE3Af4BNwGxATIB/gE3AbEBMgH+AVgBvAFUAf4BgAGpAXkB/gH1AuoB/gE2
                
-        AX8BLgH+AT0BswE4Af4BsQKsAf8ByQHWAYsB/wLUAYEB/wGVAVABMwHiAaYBYwFRAeUBsgGZAZYB+QQA
                
-        AU4BJAEIAdkBPAGyATcB/gE3AbEBMgH+ATcBsQEyAf4BWAG8AVQB/gGAAakBeQH+AfUC6gH+ATYBfwEu
                
-        Af4BFwEnAUwB/gIEAecB/wE2AasBMQH+AVoBuQFVAf4BDAEFAbsB/QEmAQUBVAHyAQwBBAGVAfwBDQIB
                
-        ARABxgGHAWgB/gHaAaQBcwH+AXEBfwFAAf4BQwG0AUAB/gE2Aa8BMQH+ATYBrwExAf4BawGoAWUB/gH1
                
-        AeoB6QH+AeUB4QHaAf4BewHBAXcB/gE2Aa8BMQH+AZYByAHXAf8BsgKwAf8BawElATMB2ggAAVIBBQED
                
-        AaABRwGzAUIB/gE1AasBMAH+ATUBqwEwAf4BgAG6AX0B/gHhAdcB1gH+AdgCzQH+AbgBwAGuAf4BfwHC
                
-        AXsB/gE1AasBMAH+ATUBqwEwAf4BfQHCAXkB/gGMAYYBvAH+AUIBQAG8Af4BUQECAQUBnwQAAVIBBQED
                
-        AaABRwGzAUIB/gE1AasBMAH+ATUBqwEwAf4BgAG6AX0B/gHhAdcB1gH+AdgCzQH+AbgBwAGuAf4BfwHC
                
-        AXsB/gGiAacBmgH+Ab4BzgGfAf8B4QHWAYMB/wGlAWMBSgHmAYQBNwEvAdYBnwKBAfUEAAFSAQUBAwGg
                
-        AUcBswFCAf4BNQGrATAB/gE1AasBMAH+AYABugF9Af4B4QHXAdYB/gHYAs0B/gG4AcABrgH+AYABwAF7
                
-        Af4BBAEFAdkB/wEEAQYB3AH/ARgBHQFgAf4BGwEFAYAB9wEIAQQB3AH+ASwCAQJCAgEBcgHaAZABPgH+
                
-        AdoBjwE8Af4BoAF7ATAB/gF1Ab4BcAH+ATQBqAEvAf4BNQGoATAB/gFDAX8BPQH+AaEBpgG2Af4BsgGv
                
-        AbcB/gFZAZEBUgH+ATQBqAEvAf4BNAGoAS8B/gGRAY4BxwH/AUIBQAG8Af4BUQECAQUBnwQAAQgCAQEJ
                
-        AXkBrgFyAf4BOAGmATQB/gEyAaEBLgH+ASsBbgFZAf4BDwFsAckB/gE9AYAB0QH+AQ4BagHGAf4BVAGD
                
-        AWEB/gEzAaMBLgH+AUMBqwFBAf4BTgGRAUUB/gQAAVcBEwE9AdsBAgMBBAABCAIBAQkBeQGuAXIB/gE4
                
-        AaYBNAH+ATIBoQEuAf4BKwFuAVkB/gEPAWwByQH+AT0BgAHRAf4BDgFqAcYB/gFUAYMBYQH+ATMBowEu
                
-        Af4BqwGxAaQB/gHRAc4BzQH/AbwBtQG0Af4BkAJfAewIAAEIAgEBCQF5Aa4BcgH+ATgBpgE0Af4BMgGh
                
-        AS4B/gErAW4BWQH+AQ8BbAHJAf4BPQGAAdEB/gEOAWoBxgH+AVQBgwFhAf4BMgGfAS4B/gESARsBVAH+
                
-        AQQBBgGlAf8BGwEGAVgB9wEfAgEBKgQAAUUCAQF5AdkBjgE9Af4B2QGOATwB/gHMAYUBOAH+AUYBdQEt
                
-        Af4BgAG5AXoB/gFOAZEBcgH+AWIBmAHZAf4BpgHKAfEB/gGqAcsB8AH+ASoBfAHMAf4BXAGmAVkB/gF3
                
-        Aa4BcQH+ATwCAQFkAVcBEwE9AdsBAgMBCAABEwIBARgBSQFXASEB8AE5AX8BkwH+AaUBxQHrAf4BiAG+
                
-        AfIB/gGHAb4B8gH+AYkBvwHyAf4BfgGrAd8B/gFKAYMBZwH+AVgBIQEPAdMBAgMBFAABEwIBARgBSQFX
                
-        ASEB8AE5AX8BkwH+AaUBxQHrAf4BiAG+AfIB/gGHAb4B8gH+AYkBvwHyAf4BfgGrAd8B/gFKAYMBZwH+
                
-        AVgBIQEPAdMBAgMBFAABEwIBARgBSQFXASEB8AE5AX8BkwH+AaUBxQHrAf4BiAG+AfIB/gGHAb4B8gH+
                
-        AYkBvwHyAf4BfgGrAd8B/gFKAYMBZwH+AVgBIQEPAdMBAgMBDAABNgIBAVYB1AGIAUEB/gHTAYQBOgH+
                
-        AdkBnAFhAf4B2wHKAccB/gGyAakBqAH+AW4BoQHdAf4BhQG9AfIB/gGEAb0B8gH+AYMBvQHyAf4BhQG9
                
-        AfIB/gEjAWEBsQH5HAABBAIBAQQBbQGpAeoB/wGDAbwB8gH+AYcBxgL/AYIBvAHyAf4BgQG8AfIB/gGB
                
-        AbwB8gH+ASYBfAHRAf4gAAEEAgEBBAFtAakB6gH/AYMBvAHyAf4BhwHGAv8BggG8AfIB/gGBAbwB8gH+
                
-        AYEBvAHyAf4BJgF8AdEB/iAAAQQCAQEEAW0BqQHqAf8BgwG8AfIB/gGHAcYC/wGCAbwB8gH+AYEBvAHy
                
-        Af4BgQG8AfIB/gEmAXwB0QH+GAABxQGNAXMB/gHLAX8BPAH+AYUBfAF+Af4BQQGAAdEB/gEtAXMBuwH+
                
-        AYsBvgHyAf4BgAG6AfIB/gGAAboB8gH+AYABuQHyAf4BgAG5AfIB/gGeAcMB7QH+AQQCAQEEGAABNwIB
                
-        AVkBngHGAfIB/gGAAboB8gH+AYABuQHyAf4BgAG5AfIB/gGAAbgB8gH+AYABuAHyAf4BmQHAAewB/gEF
                
-        AgEBBRwAATcCAQFZAZ4BxgHyAf4BgAG6AfIB/gGAAbkB8gH+AYABuQHyAf4BgAG4AfIB/gGAAbgB8gH+
                
-        AZkBwAHsAf4BBQIBAQUcAAE3AgEBWQGeAcYB8gH+AYABugHyAf4BgAG5AfIB/gGAAbkB8gH+AYABuAHy
                
-        Af4BgAG4AfIB/gGZAcAB7AH+AQUCAQEFFAABAwIBAQIBXwINAb8BnwHEAe0B/gGFAb0B8QH+ATABfwHN
                
-        Af4BfwG3AfIB/gF8AbUB8gH+AXsBtQHyAf4BegG0AfIB/gF5AbQB8gH+AZUBwQHxAf4BGwIBASQYAAFI
                
-        AQIBAwGBAY4ByAH+Af8BfAG1AfIB/gF7Ab0C/wF6AbUB8gH+AXoBtAHyAf4BeQG0AfIB/gGnAckB8QH+
                
-        ARYCAQEcHAABSAECAQMBgQGOAcgB/gH/AXwBtQHyAf4BewG9Av8BegG1AfIB/gF6AbQB8gH+AXkBtAHy
                
-        Af4BpwHJAfEB/gEWAgEBHBwAAUgBAgEDAYEBjgHIAf4B/wF8AbUB8gH+AXsBvQL/AXoBtQHyAf4BegG0
                
-        AfIB/gF5AbQB8gH+AacByQHxAf4BFgIBARwYAAFDATUBYQHnAYABugHyAf4BgAG6AfIB/gFHAYYBzAH+
                
-        AYABugHyAf4BcwGwAfIB/gFyAbAB8gH+AXEBrwHyAf4BcAGvAfIB/gGSAb8B7wH+AQIDARgAASgCAQE5
                
-        AZ8BxQHxAf4BcwGxAfIB/gFzAbAB8gH+AXIBsAHyAf4BcQGwAfIB/gFxAa8B8gH+AYUBuQHuAf4gAAEo
                
-        AgEBOQGfAcUB8QH+AXMBsQHyAf4BcwGwAfIB/gFyAbAB8gH+AXEBsAHyAf4BcQGvAfIB/gGFAbkB7gH+
                
-        IAABKAIBATkBnwHFAfEB/gFzAbEB8gH+AXMBsAHyAf4BcgGwAfIB/gFxAbAB8gH+AXEBrwHyAf4BhQG5
                
-        Ae4B/hwAAUsBkQHjAf4BfAG1AfIB/gF7AbUB8gH+AWsBnQHUAf4BYgGkAfAB/gFrAawB8gH+AWoBrAHy
                
-        Af4BagGrAfIB/gFuAa4B8gH+AToBVwGeAfEgAAE/AZoB+wH/AW0BrQHyAf4BbAG1Av8BawGsAfIB/gFr
                
-        AawB8gH+AXQBsQHyAf4BKwFmAbsB9iQAAT8BmgH7Af8BbQGtAfIB/gFsAbUC/wFrAawB8gH+AWsBrAHy
                
-        Af4BdAGxAfIB/gErAWYBuwH2JAABPwGaAfsB/wFtAa0B8gH+AWwBtQL/AWsBrAHyAf4BawGsAfIB/gF0
                
-        AbEB8gH+ASsBZgG7AfYcAAFXARcBJgHJAXEBrwHyAf4BcAGvAfIB/gFuAa0B8AH+AVIBiQHHAf4BTgGa
                
-        AfEB/gGRAb8B8QH+AY8BvgHxAf4BMgFsAb0B9iQAARoCAQEjAV0BogHyAf4BfgG1AfIB/gFrAawB8gH+
                
-        AYUBuwHyAf4BNwGNAfIB/gECAwEkAAEaAgEBIwFdAaIB8gH+AX4BtQHyAf4BawGsAfIB/gGFAbsB8gH+
                
-        ATcBjQHyAf4BAgMBJAABGgIBASMBXQGiAfIB/gF+AbUB8gH+AWsBrAHyAf4BhQG7AfIB/gE3AY0B8gH+
                
-        AQIDARwAAQMCAQEDAXsBsgHxAf4BaAGqAfIB/gFnAaoB8gH+AYgBvAHwAf4BNQIBAVQBBgIBAQYBAgMB
                
-        MAABTQEDAQQBkwFUAR0BMAHPAUMBAQECAXY0AAFNAQMBBAGTAVQBHQEwAc8BQwEBAQIBdjQAAU0BAwEE
                
-        AZMBVAEdATABzwFDAQEBAgF2KAABAwIBAQIBUwEHAQoBqAFYARIBIAHEARoCAQEjJAABQgFNAT4HAAE+
                
-        AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/wEAAf8BPwL/BAAB+AEHAfgBAQQAAeABAAHgBQAB4AEA
                
-        AeAFAAHgAQAB4BYAAQEBAAEBBQABDwEAAQ8EAAGAAQcBgAEHBAABgAEHAYABBwQAAcABBwHAAQcEAAHA
                
-        AQ8BwAEPBAABwAEfAcABHwQAAcABPwHAAT8EAAHhAf8B4QH/BAAB/wF/Af8BPwP/AX8BwAEHAcABBwHA
                
-        AQEB+AEHAYABAwGAAQABgAEAAeABAwGAAQMBgAEAAYABAAHgAQEBgAEDAYABAAGAAQAB4AEBAYABAQGA
                
-        AQABgAIAAQEBgAEAAYABAAGAAwABgAEEAYABAQGAAQECAAHAAQcBwAEHAcABBwEAAQ8B4AEfAeABHwHg
                
-        AR8BgAEHAeABDwHgAQ8B4AEPAYABBwHgAQ8B4AEPAeABDwHAAQcB4AEfAeABHwHgAR8BwAEPAfABHwHw
                
-        AR8B8AEfAcABHwHwAR8B8AEfAfABHwHAAT8B/AF/AfwBfwH8AX8B4QH/Cw==
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACm
 +        KwAAAk1TRnQBSQFMAgEBCAEAAQkBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
 +        AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AQgABVQIDAasBRgGT
 +        AbcB+WAAAQQBbAEDAf4BWQGlAVgB/wFmAa8BZQH/AWIBrAFiAf8BXQGoAV0B/wFZAaUBWQH/AVcBowFW
 +        Af8BWgGmAVoB/wFcAacBWwH/AV4BqQFeAf8BOAF9ATgB/wEBATYBAQH/ATABDQEBAVcUAAE1ARkBAQF5
 +        ASsBhQErAf8BRQGXAUQB/wFCAZUBQQH/AT0BkQE9Af8BNwGNATcB/wE2AYwBNgH/ATsBjwE6Af8BOQGL
 +        ATkB/wEBAS8BAQH/ARQBdwEUAf8BKwEJAQEBRhQAAQcCAQIHAgEBCAEFAgEBBQFbARQBHAHVAUABwAHq
 +        Af4BRgGdAbsB+QEFAgEBBQECAwEgAAEHAgECBwIBAQgBBQIBAQUBAwIBAgMCAQEDAR4CAQEpARgBBgF1
 +        AfsBGAEGAb8B+wEYAQYBkAH7AT8CAQFpCAABNAETAQEBaQF/AdUBfgH/ATIBvQEwAf8BMgG9ATAB/wEy
 +        Ab0BMAH/ATIBvQEwAf8BOAG+ATYB/wFVAcgBVAH/ATIBvQEwAf8BMgG9ATAB/wEyAb0BMAH/AU0BdAEj
 +        Af8BkwEBARIB/wERAXYBEQH/FAABSQGaAUkB/wEyAb0BMAH/ATIBvQEwAf8BMgG9ATAB/wEyAb0BMAH/
 +        AUgBxAFGAf8BQwHCAUEB/wEyAb0BMAH/ATABtwEuAf8BlAEBARMB/wEyAb0BMAH/ASsBhgErAf8MAAEN
 +        AgEBDwFtAagBZgH+AX0BwAF2Af4BfQHAAXYB/gF/AcABdwH+AX8BvgF3Af4BMQGpAcoB/gGSAcwB6gH/
 +        AasBpQGmAf8BqQGqAaMB/wGxAbABqwH/Ab4CtgH+AQYCAQEGDAABDQIBAQ8BbQGoAWYB/gF9AcABdgH+
 +        AX0BwAF2Af4BfwHAAXcB/gF/Ab4BdwH+AXsBtAF0Af4CBgHnAf8BCAEKAbQB/wEsAUwBNAH+AhMBagH+
 +        AQwBBgHWAf4BQQIBAXAEAAE1ASwBAwGeAV0BygFcAf8BMgG9ATAB/wEyAb0BMAH/ATIBvQEwAf8BMgG9
 +        ATAB/wFHAZgBRgH/AScBgQElAf8BcQHRAW8B/wEyAb0BMAH/ATIBvQEwAf8BMQG8AS8B/wEmAZABJAH/
 +        AUUBlwFEAf8UAAFqAbMBaQH/ATIBvQEwAf8BMgG9ATAB/wEyAb0BMAH/ATkBvwE3Af8BFQF3ARMB/wEU
 +        AXgBEwH/ATYBvgE0Af8BMgG9ATAB/wEdAW8BHAH/ATIBvQEwAf8BWAGlAVcB/wwAAUMCAQF2AUYBtQFB
 +        Af4BPAGwATQB/gE8AbABNAH+ATwBsAE0Af4BawGlAWQB/gF/AbwBeAH+AaUBogGgAf8BxQHcAasB/wHK
 +        AdsBmQH/AdwB2wGdAf8BYQIJAcEBywLDAf4MAAFDAgEBdgFGAbUBQQH+ATwBsAE0Af4BPAGwATQB/gE8
 +        AbABNAH+AWsBpQFkAf4CGwFiAf4BBgEIAeAB/wEIAQ0BdQH/ASUBWAEiAf4BfwG+AXcB/gFCAQYBJwHq
 +        ARIBBgGjAfwEAAE5ATABCAGiAVsByQFaAf8BMQG8ATAB/wExAbwBMAH/ATEBvAEwAf8BagHOAWkB/wFh
 +        AaABXQL/AvcB/wFPAZ4BTgH/ATEBvAEwAf8BMQG8ATAB/wElAY0BJAH/AY0BAQESAf8BIQFFARsB/wgA
 +        ARcCAQEcAU4BBgEBAW0BSgEIAQECbwG2AW4B/wExAbsBMAH/ATEBuwEwAf8BMQG7ATAB/wGGAdABhQH/
 +        AecB6gHgAf8B1AHhAc4B/wGEAdMBgwH/ATEBuwEwAf8BlAEBARMB/wEmATIBEAH/AV8BqQFeAf8MAAFJ
 +        AgIBgwFDAbMBPwH+ATwBsAE0Af4BPAGwATQB/gFkAbwBXQH+AakBvAGdAf4BQwF/AT0B/gGnAqIB/wHJ
 +        AdsBmQH/AckB1wGLAf8B2wHWAYYB/wFoAQ8BCQHKAaMBfgF7AfYMAAFJAgIBgwFDAbMBPwH+ATwBsAE0
 +        Af4BPAGwATQB/gFkAbwBXQH+AakBvAGdAf4BBgEIAZMB/wEHAQoBlAH/ATwBsAE0Af4BBwEKAaMB/wFl
 +        AYIBXgH+AU0CAgGTAQwBBgHWAf4EAAE+ASoBCgGTAWIByQFhAf8BMAG4AS8B/wEwAbgBLwH/ATABuAEv
 +        Af8BdgG5AXUB/wH8AfUB9AH/Af4C9gH/ATgBiwE0Af8BSQHBAUgB/wEwAbgBLwH/ATABuAEvAf8BOwGj
 +        ASsB/wGUAQEBEwH/ASsCAQFEARQCAQEYAegBuAGCAf8B5AGfAUgB/wHMAY4BQAH/AWkBrwFnAf8BLwG2
 +        AS4B/wEvAbYBLgH/AS8BtgEuAf8BQQGTAT4B/wH8AfUB9AH/AfwB9QH0Af8BTQGbAUsB/wEvAbYBLgH/
 +        ATEBsgEuAf8BkQEFARMB/wEaAS4BDQH/AQ0CAQEQAcIBgwFoAf4B1gGgAXMB/gFzAX8BQQH+AUUBsAFB
 +        Af4BOgGrATMB/gE6AasBMwH+AW0BpAFlAf4B8QHkAeMB/gHhAdsB1AH+AbECrAH/AckB1gGLAf8ByQHQ
 +        AXoB/wHhAdcBhAH/AY8BQgE1AeUBrAGLAYgB+QENAgEBEAHCAYMBaAH+AdYBoAFzAf4BcwF/AUEB/gFF
 +        AbABQQH+AToBqwEzAf4BOgGrATMB/gFtAaQBZQH+AfEB5AHjAf4BOQExAWkB/gIGAecB/wE6AaUBMwH+
 +        AToBpwEzAf4BCAEKAccB/wEzAQcBRQHyARIBBgGNAfwEAAEyAQ4BBAFQAYgB0wGHAf8BLgGzAS0B/wEu
 +        AbMBLQH/ATIBtAExAf8BKgGBASYB/wHfAtgB/wHZAtIB/wHAAc0BuQH/AY4B0AGNAf8BaQEBAQ0B/wE9
 +        AZgBKQH/AS8BswEvAf8BlAEBARMB/wExAgEBVQFKAQcBAgFkAeUBoAFKAf8B4wGYAToB/wHVAY8BNgH/
 +        ATQBigEvAf8BMQGxATEB/wEtAbABLAH/AUMBtgFCAf8BWgGKAVUB/wF6AZoBwAH/AX0BmwHAAf8BMgEC
 +        AQcB/wFjAVQBHwH/AS0BsAEsAf8BggEeARcB/wEoASQBDAH1AUICAQFyAdYBjAFAAf4B1gGLAT4B/gGe
 +        AXsBMgH+AXcBugFwAf4BOAGkATEB/gE5AaQBMgH+AUUBfwE/Af4BnwGiAbIB/gGwAasBswH+AaUBqAGh
 +        Af8BvgHNAZ4B/wHRAdABeQH/Ae0B4AGnAf8BcwEdARkB1gGXAm4B9QFCAgEBcgHWAYwBQAH+AdYBiwE+
 +        Af4BngF7ATIB/gF3AboBcAH+ATgBpAExAf4BOQGkATIB/gFFAX8BPwH+AZ8BogGyAf4BrAGoAa8B/gIG
 +        AdkB/wEGAQgB3AH/ARMBGwFXAf4BCgEMAacB/wEMAQYB1gH+ASwCAQFCCAABRgGVAUEB/wFFAbYBRAH/
 +        ASwBrAEsAf8BZgG0AWYB/wEbAW4BmAH/AQYBbAHVAf8BIAF8AdkB/wEIAWsB0gH/AT4BfgFPAf8BHAEg
 +        AQsB/wGDAQEBEAH/AZQBAQETAf8BPQEBAQcB7wQAAU0BCgEFAWcB4wGeAUgB/wHhAZYBOQH/AeABlQE5
 +        Af8BrgGNAWEB/wFOAZoBSQH/AYEByQGBAf8BPwGKAZ8B/wF1Aa4B6gH/AakB1gH+Af8BqgHXAf4B/wFR
 +        AVMBWgH/AXQBAQEPAf8BlAEBARMB/wFZAQEBCwH/AQcCAQEHAUUCAQF5AdUBigE/Af4B1QGKAT4B/gHI
 +        AYEBOgH+AUgBdQEvAf4BgAG1AXoB/gFQAY0BcgH+AWQBlAHTAf4BpAHEAesB/gGoAcUB6gH+AS4BfAHG
 +        Af4BrwGrAacB/gHRAc4BzQH/AboBsQGwAf4BhQJHAewEAAFFAgEBeQHVAYoBPwH+AdUBigE+Af4ByAGB
 +        AToB/gFIAXUBLwH+AYABtQF6Af4BUAGNAXIB/gFkAZQB0wH+AaQBxAHrAf4BqAHFAeoB/gEvAXoBwgH+
 +        AhwBWwH+AQcBCAGmAf8BIgEJAVEB+AEfAgEBKgwAAQkCAQEKATYBgAEpAfYBaAGnAWUB/wEDAWoB0gH/
 +        AbgB3QH9Af8BjQHKAv8BjAHJAv8BlgHOAf4B/wFlAaUB5wH/AVcBlQGMAf8BQgGSATwB/wFDASUBDQGE
 +        CAABOQEHAQQBSQHgAZ0BUgH/AdwBjQE3Af8B3AGNATcB/wGvAWIBQgH/AdcC0QH/AY0BmAGeAf8BmwHI
 +        AfMB/wGKAcgC/wGJAcgC/wGJAcgC/wGIAccC/wGKAbwB7wH/ASYCBgE2CAABNgIBAVYB0AGEAUEB/gHP
 +        AYABPAH+AdUBmAFhAf4B1wHEAcEB/gGwAaUBpAH+AXABnQHXAf4BgwG5AewB/gGCAbkB7AH+AYEBuQHs
 +        Af4BgwG5AewB/gEpAVoBoQH5EAABNgIBAVYB0AGEAUEB/gHPAYABPAH+AdUBmAFhAf4B1wHEAcEB/gGw
 +        AaUBpAH+AXABnQHXAf4BgwG5AewB/gGCAbkB7AH+AYEBuQHsAf4BgwG5AewB/gEpAVoBoQH5IAABMQEf
 +        AT8BqAG2AdwB/QH/AYgBxwL/AYgBxwL/AYgBxwL/AYcBxwL/AYkBxwH+Af8BLAGDAd4B/wEFAgEBBRAA
 +        AdQBoAF/Af8B1AGCATUB/wHRAYcBQwH/AWMBbAGHAf8BFAFtAcsB/wEJAW4B1wH/AYcBxgH+Af8BgwHE
 +        Av8BgwHDAv8BggHDAv8BgQHDAv8BhwHFAf4B/wEeAUoBkQHZDAABwQGJAXMB/gHHAX8BPgH+AYMBfAF+
 +        Af4BQwF/AcsB/gExAXMBtwH+AYkBugHsAf4BgAG2AewB/gGAAbYB7AH+AYABtQHsAf4BgAG1AewB/gGc
 +        Ab4B5wH+AQQCAQEEEAABwQGJAXMB/gHHAX8BPgH+AYMBfAF+Af4BQwF/AcsB/gExAXMBtwH+AYkBugHs
 +        Af4BgAG2AewB/gGAAbYB7AH+AYABtQHsAf4BgAG1AewB/gGcAb4B5wH+AQQCAQEEHAABHQF+AeEB/wGD
 +        AcQC/wGDAcMC/wGCAcMC/wGBAcMC/wGBAcIC/wGBAcIC/wGzAdoB/QH/ATMBCgEUAWIQAAEgAgQBJgGx
 +        AWcBRgH/AR8BcQHIAf8BpQHVAf4B/wGDAb0B8AH/ATIBjAHqAf8BfQHAAv8BfQG/Av8BfAG/Av8BewG/
 +        Av8BegG+Av8BegG+Av8BHQGBAegB/wwAAQMCAQECAV0CBQG/AZ0BvwHnAf4BgwG5AesB/gE0AX8BxwH+
 +        AYABswHsAf4BfgGxAewB/gF9AbEB7AH+AXwBsAHsAf4BewGwAewB/gGTAb0B6wH+ARsCAQEkEAABAwIB
 +        AQIBXQIFAb8BnQG/AecB/gGDAbkB6wH+ATQBfwHHAf4BgAGzAewB/gF+AbEB7AH+AX0BsQHsAf4BfAGw
 +        AewB/gF7AbAB7AH+AZMBvQHrAf4BGwIBASQcAAFqAawB8QH/AX0BwAL/AX0BvwL/AXwBvwL/AXsBvwL/
 +        AXsBvgL/AXoBvgL/AY4ByQH+Af8BMQE7AXIBtBQAARkBAgEDASIBqwHWAfwB/wGGAcYC/wF/AbkB8AH/
 +        ASUBiAHxAf8BdQG7Av8BdAG7Av8BcwG6Av8BcwG6Av8BcgG6Av8BcQG5Av8BFAGAAfAB/xAAAU8BJAFC
 +        AecBgAG2AewB/gGAAbYB7AH+AUkBggHGAf4BgAG2AewB/gF1AawB7AH+AXQBrAHsAf4BcwGrAewB/gFy
 +        AasB7AH+AZABuwHpAf4BAgMBFAABTwEkAUIB5wGAAbYB7AH+AYABtgHsAf4BSQGCAcYB/gGAAbYB7AH+
 +        AXUBrAHsAf4BdAGsAewB/gFzAasB7AH+AXIBqwHsAf4BkAG7AekB/gECAwEcAAFgAakB9AH/AXYBvAL/
 +        AXUBuwL/AXQBuwL/AXQBuwL/AXMBugL/AXIBugL/AY0BxwH+Af8BNgEzAWEBoxQAATYBJgFMAZkBgQHC
 +        Af4B/wF+AcAC/wF7AbwB+QH/ASkBhgHmAf8BgQHBAf4B/wFsAbcC/wFsAbYC/wFrAbYC/wFqAbYC/wGG
 +        AcQB/gH/AToBLwFZAZgQAAFNAY0B3QH+AX4BsQHsAf4BfQGxAewB/gFtAZkBzgH+AWQBoAHqAf4BbQGo
 +        AewB/gFsAagB7AH+AWwBpwHsAf4BcAGqAewB/gFFAUYBfAHxGAABTQGNAd0B/gF+AbEB7AH+AX0BsQHs
 +        Af4BbQGZAc4B/gFkAaAB6gH+AW0BqAHsAf4BbAGoAewB/gFsAacB7AH+AXABqgHsAf4BRQFGAXwB8SAA
 +        ARQBgwH2Af8BcwG6Af4B/wFuAbcC/wFtAbcC/wFtAbcC/wFsAbYC/wFsAbYC/wGkAdEB/AH/ASEBBQEJ
 +        AS8UAAE4ASgBTQGVAXgBvQH+Af8BdQG7Av8BdAG6Af4B/wFiAZ4B2QH/AT0BmwH+Af8BbgG3Af4B/wFl
 +        AbMC/wFlAbMC/wFwAbgB/gH/ATEBlQH+Af8UAAFdAQkBEQHJAXMBqwHsAf4BcgGrAewB/gFwAakB6gH+
 +        AVQBhQHBAf4BUAGWAesB/gGPAbsB6wH+AY0BugHrAf4BOAFdAaMB9hwAAV0BCQERAckBcwGrAewB/gFy
 +        AasB7AH+AXABqQHqAf4BVAGFAcEB/gFQAZYB6wH+AY8BuwHrAf4BjQG6AesB/gE4AV0BowH2JAABLQEM
 +        ARYBSQGaAcwB/QH/AWgBtAL/AWcBtAL/AWcBtAL/AWYBswL/AXsBvQH+Af8BGAGFAfoB/hgAAREBAgED
 +        ARUBnAHOAf0B/wFsAbYC/wFrAbYC/wFpAbQB/AH/AVYBlgHUAf8BFgGGAfwB/wFvAbUB/gH/AW0BtAH+
 +        Af8BIQF3AdwB7hgAAQMCAQEDAX0BrgHrAf4BagGmAewB/gFpAaYB7AH+AYYBuAHqAf4BNQIBAVQBBgIB
 +        AQYBAgMBIAABAwIBAQMBfQGuAesB/gFqAaYB7AH+AWkBpgHsAf4BhgG4AeoB/gE1AgEBVAEGAgEBBgEC
 +        AwEsAAI6AW0BpwF/Ab0B/QH/AYIBwQH+Af8BdwG7Af4B/wGlAdIB/QH/AR4BjAH+Af8BAwIBAQMcAAEy
 +        AVQBnQHJAY8BxwH+Af8BZAGyAv8BaAG0Af4B/wF1AbgB/QH/AQ4CAgERKAABAwIBAQIBVAEDAQQBqAFc
 +        AQcBDAHEARoCAQEjMAABAwIBAQIBVAEDAQQBqAFcAQcBDAHEARoCAQEjPAABDAEBAQIBDgE6ATkBawGl
 +        ATEBUwGbAccBNgEVAScBYigAASsBCgESAUIBMQFUAZwByAE6ATYBYwGfAQIDAUAAASICAQEwPAABVQID
 +        AasBRgGTAbcB+XgAASICAQEwJAABGAIBAR8BPwIBAWoBQQIBAW8BPQIBAWYBOwIBAWABOAIBAVoBPwIB
 +        AWkBbwHHAdUB/gFaAQ8BFgHRATQCAQFSAQMCAQECFAABGAIBAR8BPwIBAWoBQQIBAW8BPQIBAWYBOwIB
 +        AWABOAIBAVoBNAFsAZMB+AFAAcAB6gH+AUkBpQHFAfoBNAIBAVIBAwIBAQIUAAEYAgEBHwE/AgEBagFB
 +        AgEBbwE9AgEBZgE7AgEBYAE4AgEBWgE7AgEBYAE8AgEBYwE+AgEBZwEYAQYBcwH7ARgBBgG/AfsBGAEG
 +        AZAB+wE/AgEBaRgAAQcCAQIHAgEBCAEFAgEBBQEKAgEBCwFvAccB1QH+AVoBDwEWAdEBBQIBAQUBAgMB
 +        EAABOwIBAWABgAG/AX8B/gFiAbsBWgH+AWABugFYAf4BZAG8AVwB/gFnAbwBYAH+AWoBvQFjAf4BZwG8
 +        AWAB/gElAbAB8wH/AR4BoQHnAf8BMwGhAeQB/wFhAZ0BWgH+AQUCAQEFDAABOwIBAWABgAG/AX8B/gFi
 +        AbsBWgH+AWABugFYAf4BZAG8AVwB/gFnAbwBYAH+AWoBvQFjAf4BZwG8AWAB/gEtAagBxwH+AZIBzAHq
 +        Af8BqwGlAaYB/wGsAaoBpgH/AZMBZAFjAfMBvgK2Af4BBgIBAQYEAAE7AgEBYAGAAb8BfwH+AWIBuwFa
 +        Af4BYAG6AVgB/gFkAbwBXAH+AWcBvAFgAf4BagG9AWMB/gFnAbwBYAH+AWMBsQFbAf4CBgHnAf8BBwEK
 +        AbMB/wE+AU0BQQH+AToBCAEyAe8BDAEGAdYB/gFBAgEBcAwAAQ0CAQEPAW0BqAFmAf4BfQHAAXYB/gF9
 +        AcABdgH+AX8BwAF3Af4BfwG+AXcB/gEmAbAB8wH/AR4BoQHnAf8BOQGUAdMB/gF/Ab0BdwH+AS4BfwEn
 +        Af4MAAFXAQ0BAwHSAUIBsgE7Af4BPAGwATQB/gE8AbABNAH+ATwBsAE0Af4BagG9AWIB/gFGAYkBQQH+
 +        AUYBtQFBAf4BPAGwATQB/gEpAcAB7wH/AR4BoQHnAf8BNgGUAdAB/gE8AgEBZAwAAVcBDQEDAdIBQgGy
 +        ATsB/gE8AbABNAH+ATwBsAE0Af4BPAGwATQB/gFqAb0BYgH+AUYBiQFBAf4BRgG1AUEB/gE8AbABNAH+
 +        AaUBogGgAf8BxQHcAasB/wHVAd4BpQH/AXMBHwEWAdgBYAEJAQcBwAHLAsMB/gQAAVcBDQEDAdIBQgGy
 +        ATsB/gE8AbABNAH+ATwBsAE0Af4BPAGwATQB/gFqAb0BYgH+AUYBiQFBAf4BRgG1AUEB/gESARkBWAH+
 +        AQYBCAHgAf8BDgENAW8B/gFFAWQBQQH+ATwCAQFkAUoBBgEjAegBEgEGAaMB/AwAAUMCAQF2AUYBtQFB
 +        Af4BPAGwATQB/gE8AbABNAH+ATwBsAE0Af4BawGlAWQB/gF/AbwBeAH+ASkBwAHvAf8BHgGhAecB/wEl
 +        AY4BvwH+AX8BvgF3Af4BAwIBAQIIAAFQAR4BCAHiAUABsQE4Af4BPAGwATQB/gE8AbABNAH+ATwBsAE0
 +        Af4BPAF/ATQB/gHwAeQB4gH+AXEBpwFpAf4BPAGwATQB/gE8AbABNAH+ASkBwAHwAf8BHgGhAecB/wFn
 +        AR8BIwHcDAABUAEeAQgB4gFAAbEBOAH+ATwBsAE0Af4BPAGwATQB/gE8AbABNAH+ATwBfwE0Af4B8AHk
 +        AeIB/gFxAacBaQH+ATwBsAE0Af4BpwKiAf8ByQHbAZkB/wHTAdoBlAH/AXgBJAEYAdwBZgEOAQkByQGj
 +        AX4BewH2BAABUAEeAQgB4gFAAbEBOAH+ATwBsAE0Af4BPAGwATQB/gE8AbABNAH+ATwBfwE0Af4B8AHk
 +        AeIB/gFxAacBaQH+AQYBCQGTAf8BBwEKAZQB/wE8AbABNAH+AQcBCgGjAf8BSQICAYYBSwICAYsBDAEG
 +        AdYB/gwAAUkCAgGDAUMBswE/Af4BPAGwATQB/gE8AbABNAH+AWQBvAFdAf4BqQG8AZ0B/gFDAX8BPQH+
 +        AT8BsQE4Af4BKQHAAfAB/wEeAaEB5wH/AYABogG2Af4BBwIBAQgIAAFXARQBBgHZAUABrgE5Af4BOwGt
 +        ATQB/gE7Aa0BNAH+AVoBuAFUAf4BgAGlAXkB/gHxAuQB/gE6AX8BMAH+AUEBrwE6Af4BOwGtATQB/gE7
 +        Aa0BNAH+AZYByAHYAf8BrAKkAf4BaAEVARwB2ggAAVcBFAEGAdkBQAGuATkB/gE7Aa0BNAH+ATsBrQE0
 +        Af4BWgG4AVQB/gGAAaUBeQH+AfEC5AH+AToBfwEwAf4BQQGvAToB/gGxAqwB/wHJAdYBiwH/AtQBgQH/
 +        AYEBMwEgAeIBjwFCATUB5QGsAYsBiAH5BAABVwEUAQYB2QFAAa4BOQH+ATsBrQE0Af4BOwGtATQB/gFa
 +        AbgBVAH+AYABpQF5Af4B8QLkAf4BOgF/ATAB/gEbASkBTAH+AgYB5wH/AToBpwEzAf4BXAG1AVUB/gES
 +        AQcBtwH9ATMBBwFFAfIBEgEGAY0B/AENAgEBEAHCAYMBaAH+AdYBoAFzAf4BcwF/AUEB/gFFAbABQQH+
 +        AToBqwEzAf4BOgGrATMB/gFtAaQBZQH+AfEB5AHjAf4B4QHbAdQB/gF9Ab0BdwH+AToBqwEzAf4BlgHI
 +        AdcB/wGyArAB/wFoARUBHAHaCAABUgICAaABSQGvAUIB/gE5AacBMgH+ATkBpwEyAf4BgAG2AX0B/gHd
 +        AdEB0AH+AdQCxwH+AbYBvAGqAf4BgAG+AXsB/gE5AacBMgH+ATkBpwEyAf4BfwG+AXkB/gGKAYIBuAH+
 +        AUQBQQG4Af4BUgICAZ8EAAFSAgIBoAFJAa8BQgH+ATkBpwEyAf4BOQGnATIB/gGAAbYBfQH+Ad0B0QHQ
 +        Af4B1ALHAf4BtgG8AaoB/gGAAb4BewH+AaABowGWAf4BvgHOAZ8B/wHhAdYBgwH/AZEBQQEyAeYBcwEd
 +        ARkB1gGXAm4B9QQAAVICAgGgAUkBrwFCAf4BOQGnATIB/gE5AacBMgH+AYABtgF9Af4B3QHRAdAB/gHU
 +        AscB/gG2AbwBqgH+AYABvAF7Af4BBgEHAdkB/wEGAQgB3AH/ARwBHwFgAf4BJgEHAXEB9wEMAQYB1gH+
 +        ASwCAQJCAgEBcgHWAYwBQAH+AdYBiwE+Af4BngF7ATIB/gF3AboBcAH+ATgBpAExAf4BOQGkATIB/gFF
 +        AX8BPwH+AZ8BogGyAf4BsAGrAbMB/gFbAY0BUgH+ATgBpAExAf4BOAGkATEB/gGRAY4BxwH/AUQBQQG4
 +        Af4BUgICAZ8EAAEIAgEBCQF7AaoBcgH+ATwBogE2Af4BNgGdATAB/gEvAW4BWQH+ARMBbAHDAf4BQQF/
 +        AcsB/gESAWoBwAH+AVYBfwFhAf4BNwGfATAB/gFFAacBQQH+AVABjQFFAf4EAAFdAQoBIgHbAQIDAQQA
 +        AQgCAQEJAXsBqgFyAf4BPAGiATYB/gE2AZ0BMAH+AS8BbgFZAf4BEwFsAcMB/gFBAX8BywH+ARIBagHA
 +        Af4BVgF/AWEB/gE3AZ8BMAH+AakBrQGgAf4B0QHOAc0B/wG6AbEBsAH+AYUCRwHsCAABCAIBAQkBewGq
 +        AXIB/gE8AaIBNgH+ATYBnQEwAf4BLwFuAVkB/gETAWwBwwH+AUEBfwHLAf4BEgFqAcAB/gFWAX8BYQH+
 +        ATYBmwEwAf4BFgEdAVQB/gEGAQgBpQH/ASYBCAFMAfcBHwIBASoEAAFFAgEBeQHVAYoBPwH+AdUBigE+
 +        Af4ByAGBAToB/gFIAXUBLwH+AYABtQF6Af4BUAGNAXIB/gFkAZQB0wH+AaQBxAHrAf4BqAHFAeoB/gEu
 +        AXwBxgH+AV4BogFZAf4BeQGqAXEB/gE8AgEBZAFdAQoBIgHbAQIDAQgAARMCAQEYAVABRQEZAfABPQF/
 +        AY8B/gGjAcAB5QH+AYYBugHsAf4BhQG6AewB/gGHAbsB7AH+AYABpwHZAf4BTAF/AWcB/gFcAQ8BCAHT
 +        AQIDARQAARMCAQEYAVABRQEZAfABPQF/AY8B/gGjAcAB5QH+AYYBugHsAf4BhQG6AewB/gGHAbsB7AH+
 +        AYABpwHZAf4BTAF/AWcB/gFcAQ8BCAHTAQIDARQAARMCAQEYAVABRQEZAfABPQF/AY8B/gGjAcAB5QH+
 +        AYYBugHsAf4BhQG6AewB/gGHAbsB7AH+AYABpwHZAf4BTAF/AWcB/gFcAQ8BCAHTAQIDAQwAATYCAQFW
 +        AdABhAFBAf4BzwGAATwB/gHVAZgBYQH+AdcBxAHBAf4BsAGlAaQB/gFwAZ0B1wH+AYMBuQHsAf4BggG5
 +        AewB/gGBAbkB7AH+AYMBuQHsAf4BKQFaAaEB+RwAAQQCAQEEAW8BqQHqAf8BgQG4AewB/gGHAcYC/wGA
 +        AbgB7AH+AYABuAHsAf4BgAG4AewB/gEqAXwBywH+IAABBAIBAQQBbwGpAeoB/wGBAbgB7AH+AYcBxgL/
 +        AYABuAHsAf4BgAG4AewB/gGAAbgB7AH+ASoBfAHLAf4gAAEEAgEBBAFvAakB6gH/AYEBuAHsAf4BhwHG
 +        Av8BgAG4AewB/gGAAbgB7AH+AYABuAHsAf4BKgF8AcsB/hgAAcEBiQFzAf4BxwF/AT4B/gGDAXwBfgH+
 +        AUMBfwHLAf4BMQFzAbcB/gGJAboB7AH+AYABtgHsAf4BgAG2AewB/gGAAbUB7AH+AYABtQHsAf4BnAG+
 +        AecB/gEEAgEBBBgAATcCAQFZAZwBwAHsAf4BgAG2AewB/gGAAbUB7AH+AYABtQHsAf4BgAG0AewB/gGA
 +        AbQB7AH+AZcBvAHmAf4BBQIBAQUcAAE3AgEBWQGcAcAB7AH+AYABtgHsAf4BgAG1AewB/gGAAbUB7AH+
 +        AYABtAHsAf4BgAG0AewB/gGXAbwB5gH+AQUCAQEFHAABNwIBAVkBnAHAAewB/gGAAbYB7AH+AYABtQHs
 +        Af4BgAG1AewB/gGAAbQB7AH+AYABtAHsAf4BlwG8AeYB/gEFAgEBBRQAAQMCAQECAV0CBQG/AZ0BvwHn
 +        Af4BgwG5AesB/gE0AX8BxwH+AYABswHsAf4BfgGxAewB/gF9AbEB7AH+AXwBsAHsAf4BewGwAewB/gGT
 +        Ab0B6wH+ARsCAQEkGAABSAICAYEBjgHIAf4B/wF+AbEB7AH+AX0BvQL/AXwBsQHsAf4BfAGwAewB/gF7
 +        AbAB7AH+AaUBwwHrAf4BFgIBARwcAAFIAgIBgQGOAcgB/gH/AX4BsQHsAf4BfQG9Av8BfAGxAewB/gF8
 +        AbAB7AH+AXsBsAHsAf4BpQHDAesB/gEWAgEBHBwAAUgCAgGBAY4ByAH+Af8BfgGxAewB/gF9Ab0C/wF8
 +        AbEB7AH+AXwBsAHsAf4BewGwAewB/gGlAcMB6wH+ARYCAQEcGAABTwEkAUIB5wGAAbYB7AH+AYABtgHs
 +        Af4BSQGCAcYB/gGAAbYB7AH+AXUBrAHsAf4BdAGsAewB/gFzAasB7AH+AXIBqwHsAf4BkAG7AekB/gEC
 +        AwEYAAEoAgEBOQGdAcAB6wH+AXUBrQHsAf4BdQGsAewB/gF0AawB7AH+AXMBrAHsAf4BcwGrAewB/gGD
 +        AbUB6AH+IAABKAIBATkBnQHAAesB/gF1Aa0B7AH+AXUBrAHsAf4BdAGsAewB/gFzAawB7AH+AXMBqwHs
 +        Af4BgwG1AegB/iAAASgCAQE5AZ0BwAHrAf4BdQGtAewB/gF1AawB7AH+AXQBrAHsAf4BcwGsAewB/gFz
 +        AasB7AH+AYMBtQHoAf4cAAFNAY0B3QH+AX4BsQHsAf4BfQGxAewB/gFtAZkBzgH+AWQBoAHqAf4BbQGo
 +        AewB/gFsAagB7AH+AWwBpwHsAf4BcAGqAewB/gFFAUYBfAHxIAABQQGaAfsB/wFvAakB7AH+AW4BtQL/
 +        AW0BqAHsAf4BbQGoAewB/gF2Aa0B7AH+ATIBWAGhAfYkAAFBAZoB+wH/AW8BqQHsAf4BbgG1Av8BbQGo
 +        AewB/gFtAagB7AH+AXYBrQHsAf4BMgFYAaEB9iQAAUEBmgH7Af8BbwGpAewB/gFuAbUC/wFtAagB7AH+
 +        AW0BqAHsAf4BdgGtAewB/gEyAVgBoQH2HAABXQEJAREByQFzAasB7AH+AXIBqwHsAf4BcAGpAeoB/gFU
 +        AYUBwQH+AVABlgHrAf4BjwG7AesB/gGNAboB6wH+ATgBXQGjAfYkAAEaAgEBIwFfAZ4B7AH+AYABsQHs
 +        Af4BbQGoAewB/gGDAbcB7AH+ATsBiQHsAf4BAgMBJAABGgIBASMBXwGeAewB/gGAAbEB7AH+AW0BqAHs
 +        Af4BgwG3AewB/gE7AYkB7AH+AQIDASQAARoCAQEjAV8BngHsAf4BgAGxAewB/gFtAagB7AH+AYMBtwHs
 +        Af4BOwGJAewB/gECAwEcAAEDAgEBAwF9Aa4B6wH+AWoBpgHsAf4BaQGmAewB/gGGAbgB6gH+ATUCAQFU
 +        AQYCAQEGAQIDATAAAU0CAgGTAVsBDQEXAc8BQwIBAXY0AAFNAgIBkwFbAQ0BFwHPAUMCAQF2NAABTQIC
 +        AZMBWwENARcBzwFDAgEBdigAAQMCAQECAVQBAwEEAagBXAEHAQwBxAEaAgEBIyQAAUIBTQE+BwABPgMA
 +        ASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EAAf8BPwL/AcABAQHwAQAB+AEHAfgBAQGAAQEB8AEA
 +        AeABAAHgAQABgAEBAfABAAHgAQAB4AEAAYABAQGAAQAB4AEAAeABAAGABwABgAcAAcABAQMAAQEBAAEB
 +        AcABAwEAAQMBAAEPAQABDwHwAQcBgAEDAYABBwGAAQcB8AEHAYABAwGAAQcBgAEHAfABBwHAAQMBwAEH
 +        AcABBwHwAQcBwAEDAcABDwHAAQ8B8AEHAcABBwHAAR8BwAEfAfABDwHAAQ8BwAE/AcABPwH4AQ8B4AF/
 +        AeEB/wHhAf8B/AE/AfAC/wF/Af8BPwP/AX8BwAEHAcABBwHAAQEB+AEHAYABAwGAAQABgAEAAeABAwGA
 +        AQMBgAEAAYABAAHgAQEBgAEDAYABAAGAAQAB4AEBAYABAQGAAQABgAIAAQEBgAEAAYABAAGAAwABgAEE
 +        AYABAQGAAQECAAHAAQcBwAEHAcABBwEAAQ8B4AEfAeABHwHgAR8BgAEHAeABDwHgAQ8B4AEPAYABBwHg
 +        AQ8B4AEPAeABDwHAAQcB4AEfAeABHwHgAR8BwAEPAfABHwHwAR8B8AEfAcABHwHwAR8B8AEfAfABHwHA
 +        AT8B/AF/AfwBfwH8AX8B4QH/Cw==
 </value>
   </data>
   <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">  <value>177, \
17</value>  </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>177, 17</value>
+  <metadata name="ItemKey.UserAddedColumn" type="System.Boolean, mscorlib, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> +    \
<value>True</value>  </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>177, 17</value>
+  <metadata name="ItemValue.UserAddedColumn" type="System.Boolean, mscorlib, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> +    \
<value>True</value>  </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>177, 17</value>
-  </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, \
                Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>177, 17</value>
-  </metadata>
   <metadata name="ItemKey.UserAddedColumn" type="System.Boolean, mscorlib, \
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">  \
<value>True</value>  </metadata>

Modified: trunk/Tools/Maestro/MaestroAPI/LocalNativeConnection.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPI/LocalNativeConnection.cs	2008-08-28 17:56:09 UTC \
                (rev 3295)
+++ trunk/Tools/Maestro/MaestroAPI/LocalNativeConnection.cs	2008-08-28 21:08:24 UTC \
(rev 3296) @@ -187,7 +187,7 @@
 			else
 			{
 				byte[] buf = Utility.StreamAsArray(stream);
-				MgByteReader r = new MgByteReader(buf, buf.Length, "text/xml");
+				MgByteReader r = buf.Length == 0 ? null : new MgByteReader(buf, buf.Length, \
"text/xml");  res.SetResource(new MgResourceIdentifier(resourceid), r, null);
 			}
 		}

Modified: trunk/Tools/Maestro/MaestroAPI/Utility.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPI/Utility.cs	2008-08-28 17:56:09 UTC (rev 3295)
+++ trunk/Tools/Maestro/MaestroAPI/Utility.cs	2008-08-28 21:08:24 UTC (rev 3296)
@@ -525,7 +525,7 @@
                 root2.InnerXml = root1["FeatureSet"].InnerXml;
             }
 
-            return doc2.OuterXml;
+            return doc2.OuterXml == "<FeatureSet />" ? "" : doc2.OuterXml;
             
         }
 

_______________________________________________
mapguide-commits mailing list
mapguide-commits@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic