[mapguide-commits] r8483 - in trunk/Tools/Maestro: . Generated OSGeo.MapGuide.ObjectModel.Tests OSGeo.MapGuide.ObjectModel.Tests/Properties OSGeo.MapGuide.ObjectModel.Tests/Resources OSGeo.MapGuide.ObjectModels OSGeo.MapGuide.ObjectModels/MapDefinition OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Dec 29 06:25:02 PST 2014


Author: jng
Date: 2014-12-29 06:25:02 -0800 (Mon, 29 Dec 2014)
New Revision: 8483

Added:
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/MapDefinitionTests.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Resources/UT_LinkedTileSet.mdf
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0/
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0/MapDefinitionImpl.cs
Modified:
   trunk/Tools/Maestro/Generated/MapDefinition-3.0.0.designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.Designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.resx
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/MapDefinitionInterfaces.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/OSGeo.MapGuide.ObjectModels.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs
   trunk/Tools/Maestro/UnitTests.playlist
Log:
#2515: Add support for the MapDefinition 3.0.0 schema in MGOS 3.0. Add a new IMapDefinition3 interface to model the new changes. Add tests for creating and deserializing v3.0.0 Map Definitions.

Modified: trunk/Tools/Maestro/Generated/MapDefinition-3.0.0.designer.cs
===================================================================
--- trunk/Tools/Maestro/Generated/MapDefinition-3.0.0.designer.cs	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/Generated/MapDefinition-3.0.0.designer.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -1,10 +1,12 @@
+#pragma warning disable 1591, 0114, 0108
 // ------------------------------------------------------------------------------
 //  <auto-generated>
-//    Generated by Xsd2Code. Version 3.4.0.32989
-//    <NameSpace>OSGeo.MapGuide.ObjectModels.MapDefinition</NameSpace><Collection>BindingList</Collection><codeType>CSharp</codeType><EnableDataBinding>True</EnableDataBinding><EnableLazyLoading>False</EnableLazyLoading><TrackingChangesEnable>False</TrackingChangesEnable><GenTrackingClasses>False</GenTrackingClasses><HidePrivateFieldInIDE>True</HidePrivateFieldInIDE><EnableSummaryComment>True</EnableSummaryComment><VirtualProp>False</VirtualProp><IncludeSerializeMethod>True</IncludeSerializeMethod><UseBaseClass>False</UseBaseClass><GenBaseClass>False</GenBaseClass><GenerateCloneMethod>True</GenerateCloneMethod><GenerateDataContracts>False</GenerateDataContracts><CodeBaseTag>Net20</CodeBaseTag><SerializeMethodName>Serialize</SerializeMethodName><DeserializeMethodName>Deserialize</DeserializeMethodName><SaveToFileMethodName>SaveToFile</SaveToFileMethodName><LoadFromFileMethodName>LoadFromFile</LoadFromFileMethodName><GenerateXMLAttributes>True</GenerateXMLAttributes><OrderXMLA
 ttrib>False</OrderXMLAttrib><EnableEncoding>False</EnableEncoding><AutomaticProperties>False</AutomaticProperties><GenerateShouldSerialize>False</GenerateShouldSerialize><DisableDebug>False</DisableDebug><PropNameSpecified>Default</PropNameSpecified><Encoder>UTF8</Encoder><CustomUsings></CustomUsings><ExcludeIncludedTypes>False</ExcludeIncludedTypes><EnableInitializeFields>False</EnableInitializeFields>
+//    Generated by Xsd2Code. Version 3.3.0.33001
+//    <NameSpace>OSGeo.MapGuide.ObjectModels.MapDefinition</NameSpace><Collection>BindingList</Collection><codeType>CSharp</codeType><EnableDataBinding>True</EnableDataBinding><EnableLasyLoading>False</EnableLasyLoading><HidePrivateFieldInIDE>True</HidePrivateFieldInIDE><EnableSummaryComment>True</EnableSummaryComment><IncludeSerializeMethod>True</IncludeSerializeMethod><UseBaseClass>False</UseBaseClass><GenerateCloneMethod>True</GenerateCloneMethod><GenerateDataContracts>False</GenerateDataContracts><CodeBaseTag>Net20</CodeBaseTag><SerializeMethodName>Serialize</SerializeMethodName><DeserializeMethodName>Deserialize</DeserializeMethodName><SaveToFileMethodName>SaveToFile</SaveToFileMethodName><LoadFromFileMethodName>LoadFromFile</LoadFromFileMethodName><GenerateXMLAttributes>True</GenerateXMLAttributes><AutomaticProperties>False</AutomaticProperties><DisableDebug>False</DisableDebug><CustomUsings></CustomUsings><ExcludeIncludedTypes>False</ExcludeIncludedTypes><EnableInitia
 lizeFields>False</EnableInitializeFields>
 //  </auto-generated>
 // ------------------------------------------------------------------------------
-namespace OSGeo.MapGuide.ObjectModels.MapDefinition {
+namespace OSGeo.MapGuide.ObjectModels.MapDefinition.v3_0_0
+{
     using System;
     using System.Diagnostics;
     using System.Xml.Serialization;
@@ -12,8413 +14,73 @@
     using System.Xml.Schema;
     using System.ComponentModel;
     using System.IO;
-    using System.Text;
-    
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    [System.Xml.Serialization.XmlRootAttribute("SimpleSymbolDefinition", Namespace="", IsNullable=false)]
-    public partial class SimpleSymbolDefinition1 : SimpleSymbolDefinition, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string versionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public SimpleSymbolDefinition1() {
-            this.versionField = "2.4.0";
-        }
-        
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string version {
-            get {
-                return this.versionField;
-            }
-            set {
-                if ((this.versionField != null)) {
-                    if ((versionField.Equals(value) != true)) {
-                        this.versionField = value;
-                        this.OnPropertyChanged("version");
-                    }
-                }
-                else {
-                    this.versionField = value;
-                    this.OnPropertyChanged("version");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSymbolDefinition1));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current SimpleSymbolDefinition1 object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an SimpleSymbolDefinition1 object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output SimpleSymbolDefinition1 object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out SimpleSymbolDefinition1 obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbolDefinition1);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out SimpleSymbolDefinition1 obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static SimpleSymbolDefinition1 Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((SimpleSymbolDefinition1)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current SimpleSymbolDefinition1 object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an SimpleSymbolDefinition1 object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output SimpleSymbolDefinition1 object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out SimpleSymbolDefinition1 obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbolDefinition1);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out SimpleSymbolDefinition1 obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static SimpleSymbolDefinition1 LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this SimpleSymbolDefinition1 object
-        /// </summary>
-        public virtual SimpleSymbolDefinition1 Clone() {
-            return ((SimpleSymbolDefinition1)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
+    using System.Drawing;
+    using OSGeo.MapGuide.ObjectModels.MapDefinition;
+    using OSGeo.MapGuide.ObjectModels.WatermarkDefinition.v2_4_0;
+
     /// <summary>
-    /// A 2D simple symbol for stylization.
+    /// A MapDefinition defines the collection of layers, groupings of layers, and base map
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class SimpleSymbolDefinition : SymbolDefinitionBase, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<GraphicBase> graphicsField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ResizeBox resizeBoxField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private PointUsage pointUsageField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private LineUsage lineUsageField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private AreaUsage areaUsageField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ParameterDefinition parameterDefinitionField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
+    public partial class MapDefinition : MapDefinitionType, System.ComponentModel.INotifyPropertyChanged
+    {
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        /// <summary>
-        /// The collection of graphic elements defining this symbol.
-        /// </summary>
-        [System.Xml.Serialization.XmlArrayItemAttribute(typeof(Image), IsNullable=false)]
-        [System.Xml.Serialization.XmlArrayItemAttribute(typeof(Path), IsNullable=false)]
-        [System.Xml.Serialization.XmlArrayItemAttribute(typeof(Text), IsNullable=false)]
-        public BindingList<GraphicBase> Graphics {
-            get {
-                return this.graphicsField;
-            }
-            set {
-                if ((this.graphicsField != null)) {
-                    if ((graphicsField.Equals(value) != true)) {
-                        this.graphicsField = value;
-                        this.OnPropertyChanged("Graphics");
-                    }
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinition));
                 }
-                else {
-                    this.graphicsField = value;
-                    this.OnPropertyChanged("Graphics");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The optional box used to resize and reposition select graphic elements.  The graphical extent of all elements with ResizeControl set to AddToResizeBox will be added to this box, potentially causing it to grow in size.  Any change in size causes all elements with ResizeControl set to AdjustToResizeBox to be proportionally resized and repositioned.
-        /// </summary>
-        public ResizeBox ResizeBox {
-            get {
-                return this.resizeBoxField;
-            }
-            set {
-                if ((this.resizeBoxField != null)) {
-                    if ((resizeBoxField.Equals(value) != true)) {
-                        this.resizeBoxField = value;
-                        this.OnPropertyChanged("ResizeBox");
-                    }
-                }
-                else {
-                    this.resizeBoxField = value;
-                    this.OnPropertyChanged("ResizeBox");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol is used in the context of point features.
-        /// </summary>
-        public PointUsage PointUsage {
-            get {
-                return this.pointUsageField;
-            }
-            set {
-                if ((this.pointUsageField != null)) {
-                    if ((pointUsageField.Equals(value) != true)) {
-                        this.pointUsageField = value;
-                        this.OnPropertyChanged("PointUsage");
-                    }
-                }
-                else {
-                    this.pointUsageField = value;
-                    this.OnPropertyChanged("PointUsage");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol is used in the context of linear features.
-        /// </summary>
-        public LineUsage LineUsage {
-            get {
-                return this.lineUsageField;
-            }
-            set {
-                if ((this.lineUsageField != null)) {
-                    if ((lineUsageField.Equals(value) != true)) {
-                        this.lineUsageField = value;
-                        this.OnPropertyChanged("LineUsage");
-                    }
-                }
-                else {
-                    this.lineUsageField = value;
-                    this.OnPropertyChanged("LineUsage");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol is used in the context of area features.
-        /// </summary>
-        public AreaUsage AreaUsage {
-            get {
-                return this.areaUsageField;
-            }
-            set {
-                if ((this.areaUsageField != null)) {
-                    if ((areaUsageField.Equals(value) != true)) {
-                        this.areaUsageField = value;
-                        this.OnPropertyChanged("AreaUsage");
-                    }
-                }
-                else {
-                    this.areaUsageField = value;
-                    this.OnPropertyChanged("AreaUsage");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The list of parameters used in this symbol.  If a parameter is not listed here this is considered a bug in the symbol definition.
-        /// </summary>
-        public ParameterDefinition ParameterDefinition {
-            get {
-                return this.parameterDefinitionField;
-            }
-            set {
-                if ((this.parameterDefinitionField != null)) {
-                    if ((parameterDefinitionField.Equals(value) != true)) {
-                        this.parameterDefinitionField = value;
-                        this.OnPropertyChanged("ParameterDefinition");
-                    }
-                }
-                else {
-                    this.parameterDefinitionField = value;
-                    this.OnPropertyChanged("ParameterDefinition");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSymbolDefinition));
-                }
                 return serializer;
             }
         }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current SimpleSymbolDefinition object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an SimpleSymbolDefinition object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output SimpleSymbolDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out SimpleSymbolDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbolDefinition);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out SimpleSymbolDefinition obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static SimpleSymbolDefinition Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((SimpleSymbolDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current SimpleSymbolDefinition object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an SimpleSymbolDefinition object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output SimpleSymbolDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out SimpleSymbolDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbolDefinition);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out SimpleSymbolDefinition obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static SimpleSymbolDefinition LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this SimpleSymbolDefinition object
-        /// </summary>
-        public virtual SimpleSymbolDefinition Clone() {
-            return ((SimpleSymbolDefinition)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class Image : GraphicBase, System.ComponentModel.INotifyPropertyChanged {
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private object itemField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string sizeXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string sizeYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string sizeScalableField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public Image() {
-            this.sizeXField = "1.0";
-            this.sizeYField = "1.0";
-            this.sizeScalableField = "true";
-            this.angleField = "0.0";
-            this.positionXField = "0.0";
-            this.positionYField = "0.0";
-        }
-        
-        [System.Xml.Serialization.XmlElementAttribute("Content", typeof(byte[]), DataType="base64Binary")]
-        [System.Xml.Serialization.XmlElementAttribute("Reference", typeof(ImageReference))]
-        public object Item {
-            get {
-                return this.itemField;
-            }
-            set {
-                if ((this.itemField != null)) {
-                    if ((itemField.Equals(value) != true)) {
-                        this.itemField = value;
-                        this.OnPropertyChanged("Item");
-                    }
-                }
-                else {
-                    this.itemField = value;
-                    this.OnPropertyChanged("Item");
-                }
-            }
-        }
-        
-        public string SizeX {
-            get {
-                return this.sizeXField;
-            }
-            set {
-                if ((this.sizeXField != null)) {
-                    if ((sizeXField.Equals(value) != true)) {
-                        this.sizeXField = value;
-                        this.OnPropertyChanged("SizeX");
-                    }
-                }
-                else {
-                    this.sizeXField = value;
-                    this.OnPropertyChanged("SizeX");
-                }
-            }
-        }
-        
-        public string SizeY {
-            get {
-                return this.sizeYField;
-            }
-            set {
-                if ((this.sizeYField != null)) {
-                    if ((sizeYField.Equals(value) != true)) {
-                        this.sizeYField = value;
-                        this.OnPropertyChanged("SizeY");
-                    }
-                }
-                else {
-                    this.sizeYField = value;
-                    this.OnPropertyChanged("SizeY");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("true")]
-        public string SizeScalable {
-            get {
-                return this.sizeScalableField;
-            }
-            set {
-                if ((this.sizeScalableField != null)) {
-                    if ((sizeScalableField.Equals(value) != true)) {
-                        this.sizeScalableField = value;
-                        this.OnPropertyChanged("SizeScalable");
-                    }
-                }
-                else {
-                    this.sizeScalableField = value;
-                    this.OnPropertyChanged("SizeScalable");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Angle {
-            get {
-                return this.angleField;
-            }
-            set {
-                if ((this.angleField != null)) {
-                    if ((angleField.Equals(value) != true)) {
-                        this.angleField = value;
-                        this.OnPropertyChanged("Angle");
-                    }
-                }
-                else {
-                    this.angleField = value;
-                    this.OnPropertyChanged("Angle");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string PositionX {
-            get {
-                return this.positionXField;
-            }
-            set {
-                if ((this.positionXField != null)) {
-                    if ((positionXField.Equals(value) != true)) {
-                        this.positionXField = value;
-                        this.OnPropertyChanged("PositionX");
-                    }
-                }
-                else {
-                    this.positionXField = value;
-                    this.OnPropertyChanged("PositionX");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string PositionY {
-            get {
-                return this.positionYField;
-            }
-            set {
-                if ((this.positionYField != null)) {
-                    if ((positionYField.Equals(value) != true)) {
-                        this.positionYField = value;
-                        this.OnPropertyChanged("PositionY");
-                    }
-                }
-                else {
-                    this.positionYField = value;
-                    this.OnPropertyChanged("PositionY");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(Image));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current Image object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an Image object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output Image object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out Image obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Image);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out Image obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static Image Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((Image)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current Image object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an Image object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output Image object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out Image obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Image);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out Image obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static Image LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this Image object
-        /// </summary>
-        public virtual Image Clone() {
-            return ((Image)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class ImageReference : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string resourceIdField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string libraryItemNameField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string ResourceId {
-            get {
-                return this.resourceIdField;
-            }
-            set {
-                if ((this.resourceIdField != null)) {
-                    if ((resourceIdField.Equals(value) != true)) {
-                        this.resourceIdField = value;
-                        this.OnPropertyChanged("ResourceId");
-                    }
-                }
-                else {
-                    this.resourceIdField = value;
-                    this.OnPropertyChanged("ResourceId");
-                }
-            }
-        }
-        
-        public string LibraryItemName {
-            get {
-                return this.libraryItemNameField;
-            }
-            set {
-                if ((this.libraryItemNameField != null)) {
-                    if ((libraryItemNameField.Equals(value) != true)) {
-                        this.libraryItemNameField = value;
-                        this.OnPropertyChanged("LibraryItemName");
-                    }
-                }
-                else {
-                    this.libraryItemNameField = value;
-                    this.OnPropertyChanged("LibraryItemName");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(ImageReference));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current ImageReference object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an ImageReference object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output ImageReference object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out ImageReference obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ImageReference);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out ImageReference obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static ImageReference Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((ImageReference)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current ImageReference object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an ImageReference object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output ImageReference object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out ImageReference obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ImageReference);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out ImageReference obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static ImageReference LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this ImageReference object
-        /// </summary>
-        public virtual ImageReference Clone() {
-            return ((ImageReference)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class SimpleSymbol : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private object itemField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string renderingPassField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public SimpleSymbol() {
-            this.renderingPassField = "0";
-        }
-        
-        [System.Xml.Serialization.XmlElementAttribute("ResourceId", typeof(string))]
-        [System.Xml.Serialization.XmlElementAttribute("SimpleSymbolDefinition", typeof(SimpleSymbolDefinition))]
-        public object Item {
-            get {
-                return this.itemField;
-            }
-            set {
-                if ((this.itemField != null)) {
-                    if ((itemField.Equals(value) != true)) {
-                        this.itemField = value;
-                        this.OnPropertyChanged("Item");
-                    }
-                }
-                else {
-                    this.itemField = value;
-                    this.OnPropertyChanged("Item");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The optional rendering pass in which this symbol definition draws.  If specified this must be greater than or equal to zero.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0")]
-        public string RenderingPass {
-            get {
-                return this.renderingPassField;
-            }
-            set {
-                if ((this.renderingPassField != null)) {
-                    if ((renderingPassField.Equals(value) != true)) {
-                        this.renderingPassField = value;
-                        this.OnPropertyChanged("RenderingPass");
-                    }
-                }
-                else {
-                    this.renderingPassField = value;
-                    this.OnPropertyChanged("RenderingPass");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSymbol));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current SimpleSymbol object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an SimpleSymbol object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output SimpleSymbol object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out SimpleSymbol obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbol);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out SimpleSymbol obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static SimpleSymbol Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((SimpleSymbol)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current SimpleSymbol object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an SimpleSymbol object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output SimpleSymbol object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out SimpleSymbol obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SimpleSymbol);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out SimpleSymbol obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static SimpleSymbol LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this SimpleSymbol object
-        /// </summary>
-        public virtual SimpleSymbol Clone() {
-            return ((SimpleSymbol)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class ExtendedDataType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<System.Xml.XmlElement> anyField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlAnyElementAttribute()]
-        public BindingList<System.Xml.XmlElement> Any {
-            get {
-                return this.anyField;
-            }
-            set {
-                if ((this.anyField != null)) {
-                    if ((anyField.Equals(value) != true)) {
-                        this.anyField = value;
-                        this.OnPropertyChanged("Any");
-                    }
-                }
-                else {
-                    this.anyField = value;
-                    this.OnPropertyChanged("Any");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(ExtendedDataType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current ExtendedDataType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an ExtendedDataType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output ExtendedDataType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out ExtendedDataType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ExtendedDataType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out ExtendedDataType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static ExtendedDataType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((ExtendedDataType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current ExtendedDataType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an ExtendedDataType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output ExtendedDataType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out ExtendedDataType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ExtendedDataType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out ExtendedDataType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static ExtendedDataType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this ExtendedDataType object
-        /// </summary>
-        public virtual ExtendedDataType Clone() {
-            return ((ExtendedDataType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class Parameter : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string identifierField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string defaultValueField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string displayNameField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string descriptionField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private DataType dataTypeField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public Parameter() {
-            this.dataTypeField = DataType.String;
-        }
-        
-        /// <summary>
-        /// The parameter identifier as used in the symbol.
-        /// </summary>
-        public string Identifier {
-            get {
-                return this.identifierField;
-            }
-            set {
-                if ((this.identifierField != null)) {
-                    if ((identifierField.Equals(value) != true)) {
-                        this.identifierField = value;
-                        this.OnPropertyChanged("Identifier");
-                    }
-                }
-                else {
-                    this.identifierField = value;
-                    this.OnPropertyChanged("Identifier");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The default value of the parameter if no override is defined in the symbol instance.  This can be an expression.
-        /// </summary>
-        public string DefaultValue {
-            get {
-                return this.defaultValueField;
-            }
-            set {
-                if ((this.defaultValueField != null)) {
-                    if ((defaultValueField.Equals(value) != true)) {
-                        this.defaultValueField = value;
-                        this.OnPropertyChanged("DefaultValue");
-                    }
-                }
-                else {
-                    this.defaultValueField = value;
-                    this.OnPropertyChanged("DefaultValue");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// An optional short description of the parameter.  This can be used, for example, to ask the user to specify a parameter value.
-        /// </summary>
-        public string DisplayName {
-            get {
-                return this.displayNameField;
-            }
-            set {
-                if ((this.displayNameField != null)) {
-                    if ((displayNameField.Equals(value) != true)) {
-                        this.displayNameField = value;
-                        this.OnPropertyChanged("DisplayName");
-                    }
-                }
-                else {
-                    this.displayNameField = value;
-                    this.OnPropertyChanged("DisplayName");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// An optional long description of the parameter.  This might include a description of useful values for this parameter.
-        /// </summary>
-        public string Description {
-            get {
-                return this.descriptionField;
-            }
-            set {
-                if ((this.descriptionField != null)) {
-                    if ((descriptionField.Equals(value) != true)) {
-                        this.descriptionField = value;
-                        this.OnPropertyChanged("Description");
-                    }
-                }
-                else {
-                    this.descriptionField = value;
-                    this.OnPropertyChanged("Description");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// An optional explicit declaration of data type or data usage context.  This is a hint used by the UI when assigning a value to this parameter.  Defaults to String.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute(DataType.String)]
-        public DataType DataType {
-            get {
-                return this.dataTypeField;
-            }
-            set {
-                if ((dataTypeField.Equals(value) != true)) {
-                    this.dataTypeField = value;
-                    this.OnPropertyChanged("DataType");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(Parameter));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current Parameter object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an Parameter object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output Parameter object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out Parameter obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Parameter);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out Parameter obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static Parameter Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((Parameter)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current Parameter object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an Parameter object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output Parameter object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out Parameter obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Parameter);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out Parameter obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static Parameter LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this Parameter object
-        /// </summary>
-        public virtual Parameter Clone() {
-            return ((Parameter)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    public enum DataType {
-        
-        /// <remarks/>
-        String,
-        
-        /// <remarks/>
-        Boolean,
-        
-        /// <remarks/>
-        Integer,
-        
-        /// <remarks/>
-        Real,
-        
-        /// <remarks/>
-        Color,
-        
-        /// <remarks/>
-        Angle,
-        
-        /// <remarks/>
-        FillColor,
-        
-        /// <remarks/>
-        LineColor,
-        
-        /// <remarks/>
-        LineWeight,
-        
-        /// <remarks/>
-        Content,
-        
-        /// <remarks/>
-        Markup,
-        
-        /// <remarks/>
-        FontName,
-        
-        /// <remarks/>
-        Bold,
-        
-        /// <remarks/>
-        Italic,
-        
-        /// <remarks/>
-        Underlined,
-        
-        /// <remarks/>
-        Overlined,
-        
-        /// <remarks/>
-        ObliqueAngle,
-        
-        /// <remarks/>
-        TrackSpacing,
-        
-        /// <remarks/>
-        FontHeight,
-        
-        /// <remarks/>
-        HorizontalAlignment,
-        
-        /// <remarks/>
-        VerticalAlignment,
-        
-        /// <remarks/>
-        Justification,
-        
-        /// <remarks/>
-        LineSpacing,
-        
-        /// <remarks/>
-        TextColor,
-        
-        /// <remarks/>
-        GhostColor,
-        
-        /// <remarks/>
-        FrameLineColor,
-        
-        /// <remarks/>
-        FrameFillColor,
-        
-        /// <remarks/>
-        StartOffset,
-        
-        /// <remarks/>
-        EndOffset,
-        
-        /// <remarks/>
-        RepeatX,
-        
-        /// <remarks/>
-        RepeatY,
-    }
-    
-    /// <summary>
-    /// The list of parameters used in this symbol.  If a parameter is not listed here this is considered a bug in the symbol definition.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class ParameterDefinition : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<Parameter> parameterField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("Parameter")]
-        public BindingList<Parameter> Parameter {
-            get {
-                return this.parameterField;
-            }
-            set {
-                if ((this.parameterField != null)) {
-                    if ((parameterField.Equals(value) != true)) {
-                        this.parameterField = value;
-                        this.OnPropertyChanged("Parameter");
-                    }
-                }
-                else {
-                    this.parameterField = value;
-                    this.OnPropertyChanged("Parameter");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(ParameterDefinition));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current ParameterDefinition object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an ParameterDefinition object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output ParameterDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out ParameterDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ParameterDefinition);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out ParameterDefinition obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static ParameterDefinition Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((ParameterDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current ParameterDefinition object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an ParameterDefinition object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output ParameterDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out ParameterDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ParameterDefinition);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out ParameterDefinition obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static ParameterDefinition LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this ParameterDefinition object
-        /// </summary>
-        public virtual ParameterDefinition Clone() {
-            return ((ParameterDefinition)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// Specifies how the symbol is used in the context of area features.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class AreaUsage : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string originControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string clippingControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string originXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string originYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string repeatXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string repeatYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string bufferWidthField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public AreaUsage() {
-            this.angleControlField = "\'FromAngle\'";
-            this.originControlField = "\'Global\'";
-            this.clippingControlField = "\'Clip\'";
-            this.angleField = "0.0";
-            this.originXField = "0.0";
-            this.originYField = "0.0";
-            this.repeatXField = "0.0";
-            this.repeatYField = "0.0";
-            this.bufferWidthField = "0.0";
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol angle is defined.  This must evaluate to one of: FromAngle (default) or FromGeometry.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'FromAngle\'")]
-        public string AngleControl {
-            get {
-                return this.angleControlField;
-            }
-            set {
-                if ((this.angleControlField != null)) {
-                    if ((angleControlField.Equals(value) != true)) {
-                        this.angleControlField = value;
-                        this.OnPropertyChanged("AngleControl");
-                    }
-                }
-                else {
-                    this.angleControlField = value;
-                    this.OnPropertyChanged("AngleControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol grid origin is defined.  This must evaluate to one of: Global (default), Local, or Centroid.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'Global\'")]
-        public string OriginControl {
-            get {
-                return this.originControlField;
-            }
-            set {
-                if ((this.originControlField != null)) {
-                    if ((originControlField.Equals(value) != true)) {
-                        this.originControlField = value;
-                        this.OnPropertyChanged("OriginControl");
-                    }
-                }
-                else {
-                    this.originControlField = value;
-                    this.OnPropertyChanged("OriginControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the clipping behavior of the symbol at polygon boundaries.  This must evaluate to one of: Clip (default), Inside, or Overlap.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'Clip\'")]
-        public string ClippingControl {
-            get {
-                return this.clippingControlField;
-            }
-            set {
-                if ((this.clippingControlField != null)) {
-                    if ((clippingControlField.Equals(value) != true)) {
-                        this.clippingControlField = value;
-                        this.OnPropertyChanged("ClippingControl");
-                    }
-                }
-                else {
-                    this.clippingControlField = value;
-                    this.OnPropertyChanged("ClippingControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the angle of each repeating symbol, in degrees.  If AngleControl evaluates to FromAngle then this specifies the absolute angle of the symbol.  If AngleControl evaluates to FromGeometry then this specifies the symbol angle relative to the geometry.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Angle {
-            get {
-                return this.angleField;
-            }
-            set {
-                if ((this.angleField != null)) {
-                    if ((angleField.Equals(value) != true)) {
-                        this.angleField = value;
-                        this.OnPropertyChanged("Angle");
-                    }
-                }
-                else {
-                    this.angleField = value;
-                    this.OnPropertyChanged("Angle");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The x-coordinate of the symbol grid origin, in mm.  Only applies if OriginControl evaluates to Global or Local.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OriginX {
-            get {
-                return this.originXField;
-            }
-            set {
-                if ((this.originXField != null)) {
-                    if ((originXField.Equals(value) != true)) {
-                        this.originXField = value;
-                        this.OnPropertyChanged("OriginX");
-                    }
-                }
-                else {
-                    this.originXField = value;
-                    this.OnPropertyChanged("OriginX");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The y-coordinate of the symbol grid origin, in mm.  Only applies if OriginControl evaluates to Global or Local.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OriginY {
-            get {
-                return this.originYField;
-            }
-            set {
-                if ((this.originYField != null)) {
-                    if ((originYField.Equals(value) != true)) {
-                        this.originYField = value;
-                        this.OnPropertyChanged("OriginY");
-                    }
-                }
-                else {
-                    this.originYField = value;
-                    this.OnPropertyChanged("OriginY");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The horizontal separation between symbols, in mm.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string RepeatX {
-            get {
-                return this.repeatXField;
-            }
-            set {
-                if ((this.repeatXField != null)) {
-                    if ((repeatXField.Equals(value) != true)) {
-                        this.repeatXField = value;
-                        this.OnPropertyChanged("RepeatX");
-                    }
-                }
-                else {
-                    this.repeatXField = value;
-                    this.OnPropertyChanged("RepeatX");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The vertical separation between symbols, in mm.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string RepeatY {
-            get {
-                return this.repeatYField;
-            }
-            set {
-                if ((this.repeatYField != null)) {
-                    if ((repeatYField.Equals(value) != true)) {
-                        this.repeatYField = value;
-                        this.OnPropertyChanged("RepeatY");
-                    }
-                }
-                else {
-                    this.repeatYField = value;
-                    this.OnPropertyChanged("RepeatY");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The width, in mm, of the buffer zone relative to the polygon boundary in which the symbol is rendered.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string BufferWidth {
-            get {
-                return this.bufferWidthField;
-            }
-            set {
-                if ((this.bufferWidthField != null)) {
-                    if ((bufferWidthField.Equals(value) != true)) {
-                        this.bufferWidthField = value;
-                        this.OnPropertyChanged("BufferWidth");
-                    }
-                }
-                else {
-                    this.bufferWidthField = value;
-                    this.OnPropertyChanged("BufferWidth");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(AreaUsage));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current AreaUsage object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an AreaUsage object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output AreaUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out AreaUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(AreaUsage);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out AreaUsage obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static AreaUsage Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((AreaUsage)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current AreaUsage object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an AreaUsage object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output AreaUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out AreaUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(AreaUsage);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out AreaUsage obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static AreaUsage LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this AreaUsage object
-        /// </summary>
-        public virtual AreaUsage Clone() {
-            return ((AreaUsage)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// Specifies how the symbol is used in the context of linear features.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class LineUsage : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string unitsControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string vertexControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string startOffsetField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string endOffsetField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string repeatField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string vertexAngleLimitField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string vertexJoinField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string vertexMiterLimitField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private Path defaultPathField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public LineUsage() {
-            this.angleControlField = "\'FromGeometry\'";
-            this.unitsControlField = "\'Absolute\'";
-            this.vertexControlField = "\'OverlapWrap\'";
-            this.angleField = "0.0";
-            this.repeatField = "0.0";
-            this.vertexAngleLimitField = "0.0";
-            this.vertexJoinField = "\'Round\'";
-            this.vertexMiterLimitField = "5.0";
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol angle is defined.  This must evaluate to one of: FromAngle or FromGeometry (default).
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'FromGeometry\'")]
-        public string AngleControl {
-            get {
-                return this.angleControlField;
-            }
-            set {
-                if ((this.angleControlField != null)) {
-                    if ((angleControlField.Equals(value) != true)) {
-                        this.angleControlField = value;
-                        this.OnPropertyChanged("AngleControl");
-                    }
-                }
-                else {
-                    this.angleControlField = value;
-                    this.OnPropertyChanged("AngleControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies whether the distribution parameters are interpreted as absolute values (in mm) or parametric values.  This must evaluate to one of: Absolute (default) or Parametric.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'Absolute\'")]
-        public string UnitsControl {
-            get {
-                return this.unitsControlField;
-            }
-            set {
-                if ((this.unitsControlField != null)) {
-                    if ((unitsControlField.Equals(value) != true)) {
-                        this.unitsControlField = value;
-                        this.OnPropertyChanged("UnitsControl");
-                    }
-                }
-                else {
-                    this.unitsControlField = value;
-                    this.OnPropertyChanged("UnitsControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the symbol behavior at vertices.  This must evaluate to one of: OverlapNone, OverlapDirect, or OverlapWrap (default).
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'OverlapWrap\'")]
-        public string VertexControl {
-            get {
-                return this.vertexControlField;
-            }
-            set {
-                if ((this.vertexControlField != null)) {
-                    if ((vertexControlField.Equals(value) != true)) {
-                        this.vertexControlField = value;
-                        this.OnPropertyChanged("VertexControl");
-                    }
-                }
-                else {
-                    this.vertexControlField = value;
-                    this.OnPropertyChanged("VertexControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the angle of each repeating symbol, in degrees.  If AngleControl evaluates to FromAngle then this specifies the absolute angle of the symbol.  If AngleControl evaluates to FromGeometry then this specifies the symbol angle relative to the geometry.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Angle {
-            get {
-                return this.angleField;
-            }
-            set {
-                if ((this.angleField != null)) {
-                    if ((angleField.Equals(value) != true)) {
-                        this.angleField = value;
-                        this.OnPropertyChanged("Angle");
-                    }
-                }
-                else {
-                    this.angleField = value;
-                    this.OnPropertyChanged("Angle");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies where the symbol distribution begins, relative to the start of the feature.  If specified this must be greater than or equal to zero.
-        /// </summary>
-        public string StartOffset {
-            get {
-                return this.startOffsetField;
-            }
-            set {
-                if ((this.startOffsetField != null)) {
-                    if ((startOffsetField.Equals(value) != true)) {
-                        this.startOffsetField = value;
-                        this.OnPropertyChanged("StartOffset");
-                    }
-                }
-                else {
-                    this.startOffsetField = value;
-                    this.OnPropertyChanged("StartOffset");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies where the symbol distribution ends, relative to the end of the feature.  If specified this must be greater than or equal to zero.
-        /// </summary>
-        public string EndOffset {
-            get {
-                return this.endOffsetField;
-            }
-            set {
-                if ((this.endOffsetField != null)) {
-                    if ((endOffsetField.Equals(value) != true)) {
-                        this.endOffsetField = value;
-                        this.OnPropertyChanged("EndOffset");
-                    }
-                }
-                else {
-                    this.endOffsetField = value;
-                    this.OnPropertyChanged("EndOffset");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the separation between repeating symbols.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Repeat {
-            get {
-                return this.repeatField;
-            }
-            set {
-                if ((this.repeatField != null)) {
-                    if ((repeatField.Equals(value) != true)) {
-                        this.repeatField = value;
-                        this.OnPropertyChanged("Repeat");
-                    }
-                }
-                else {
-                    this.repeatField = value;
-                    this.OnPropertyChanged("Repeat");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the limiting angle, in degrees, by a which the feature geometry can change before some of the VertexControl options take effect.  If specified this must be greater than or equal to zero.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string VertexAngleLimit {
-            get {
-                return this.vertexAngleLimitField;
-            }
-            set {
-                if ((this.vertexAngleLimitField != null)) {
-                    if ((vertexAngleLimitField.Equals(value) != true)) {
-                        this.vertexAngleLimitField = value;
-                        this.OnPropertyChanged("VertexAngleLimit");
-                    }
-                }
-                else {
-                    this.vertexAngleLimitField = value;
-                    this.OnPropertyChanged("VertexAngleLimit");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the wrapping behavior at vertices for all graphic elements.  Only applies if VertexControl evaluates to OverlapWrap.  This must evaluate to one of: None, Bevel, Round (default), or Miter.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'Round\'")]
-        public string VertexJoin {
-            get {
-                return this.vertexJoinField;
-            }
-            set {
-                if ((this.vertexJoinField != null)) {
-                    if ((vertexJoinField.Equals(value) != true)) {
-                        this.vertexJoinField = value;
-                        this.OnPropertyChanged("VertexJoin");
-                    }
-                }
-                else {
-                    this.vertexJoinField = value;
-                    this.OnPropertyChanged("VertexJoin");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The limit to use when drawing miter vertex joins.  A miter vertex join is trimmed if the ratio of the miter length to symbol height is greater than the miter limit.  If specified this must be greater than zero.  Defaults to 5.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("5.0")]
-        public string VertexMiterLimit {
-            get {
-                return this.vertexMiterLimitField;
-            }
-            set {
-                if ((this.vertexMiterLimitField != null)) {
-                    if ((vertexMiterLimitField.Equals(value) != true)) {
-                        this.vertexMiterLimitField = value;
-                        this.OnPropertyChanged("VertexMiterLimit");
-                    }
-                }
-                else {
-                    this.vertexMiterLimitField = value;
-                    this.OnPropertyChanged("VertexMiterLimit");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the default path attributes to use when drawing the symbol.  These apply to any centerline that gets drawn where the symbol can't draw, and to path elements that don't specify attributes.  The geometry contained in this path is ignored and should be empty.
-        /// </summary>
-        public Path DefaultPath {
-            get {
-                return this.defaultPathField;
-            }
-            set {
-                if ((this.defaultPathField != null)) {
-                    if ((defaultPathField.Equals(value) != true)) {
-                        this.defaultPathField = value;
-                        this.OnPropertyChanged("DefaultPath");
-                    }
-                }
-                else {
-                    this.defaultPathField = value;
-                    this.OnPropertyChanged("DefaultPath");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(LineUsage));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current LineUsage object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an LineUsage object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output LineUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out LineUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(LineUsage);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out LineUsage obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static LineUsage Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((LineUsage)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current LineUsage object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an LineUsage object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output LineUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out LineUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(LineUsage);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out LineUsage obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static LineUsage LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this LineUsage object
-        /// </summary>
-        public virtual LineUsage Clone() {
-            return ((LineUsage)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class Path : GraphicBase, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string geometryField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string scaleXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string scaleYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string fillColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineWeightField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineWeightScalableField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineCapField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineJoinField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineMiterLimitField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public Path() {
-            this.scaleXField = "1.0";
-            this.scaleYField = "1.0";
-            this.lineWeightField = "0.0";
-            this.lineWeightScalableField = "true";
-            this.lineCapField = "\'Round\'";
-            this.lineJoinField = "\'Round\'";
-            this.lineMiterLimitField = "5.0";
-        }
-        
-        public string Geometry {
-            get {
-                return this.geometryField;
-            }
-            set {
-                if ((this.geometryField != null)) {
-                    if ((geometryField.Equals(value) != true)) {
-                        this.geometryField = value;
-                        this.OnPropertyChanged("Geometry");
-                    }
-                }
-                else {
-                    this.geometryField = value;
-                    this.OnPropertyChanged("Geometry");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("1.0")]
-        public string ScaleX {
-            get {
-                return this.scaleXField;
-            }
-            set {
-                if ((this.scaleXField != null)) {
-                    if ((scaleXField.Equals(value) != true)) {
-                        this.scaleXField = value;
-                        this.OnPropertyChanged("ScaleX");
-                    }
-                }
-                else {
-                    this.scaleXField = value;
-                    this.OnPropertyChanged("ScaleX");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("1.0")]
-        public string ScaleY {
-            get {
-                return this.scaleYField;
-            }
-            set {
-                if ((this.scaleYField != null)) {
-                    if ((scaleYField.Equals(value) != true)) {
-                        this.scaleYField = value;
-                        this.OnPropertyChanged("ScaleY");
-                    }
-                }
-                else {
-                    this.scaleYField = value;
-                    this.OnPropertyChanged("ScaleY");
-                }
-            }
-        }
-        
-        public string FillColor {
-            get {
-                return this.fillColorField;
-            }
-            set {
-                if ((this.fillColorField != null)) {
-                    if ((fillColorField.Equals(value) != true)) {
-                        this.fillColorField = value;
-                        this.OnPropertyChanged("FillColor");
-                    }
-                }
-                else {
-                    this.fillColorField = value;
-                    this.OnPropertyChanged("FillColor");
-                }
-            }
-        }
-        
-        public string LineColor {
-            get {
-                return this.lineColorField;
-            }
-            set {
-                if ((this.lineColorField != null)) {
-                    if ((lineColorField.Equals(value) != true)) {
-                        this.lineColorField = value;
-                        this.OnPropertyChanged("LineColor");
-                    }
-                }
-                else {
-                    this.lineColorField = value;
-                    this.OnPropertyChanged("LineColor");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string LineWeight {
-            get {
-                return this.lineWeightField;
-            }
-            set {
-                if ((this.lineWeightField != null)) {
-                    if ((lineWeightField.Equals(value) != true)) {
-                        this.lineWeightField = value;
-                        this.OnPropertyChanged("LineWeight");
-                    }
-                }
-                else {
-                    this.lineWeightField = value;
-                    this.OnPropertyChanged("LineWeight");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("true")]
-        public string LineWeightScalable {
-            get {
-                return this.lineWeightScalableField;
-            }
-            set {
-                if ((this.lineWeightScalableField != null)) {
-                    if ((lineWeightScalableField.Equals(value) != true)) {
-                        this.lineWeightScalableField = value;
-                        this.OnPropertyChanged("LineWeightScalable");
-                    }
-                }
-                else {
-                    this.lineWeightScalableField = value;
-                    this.OnPropertyChanged("LineWeightScalable");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'Round\'")]
-        public string LineCap {
-            get {
-                return this.lineCapField;
-            }
-            set {
-                if ((this.lineCapField != null)) {
-                    if ((lineCapField.Equals(value) != true)) {
-                        this.lineCapField = value;
-                        this.OnPropertyChanged("LineCap");
-                    }
-                }
-                else {
-                    this.lineCapField = value;
-                    this.OnPropertyChanged("LineCap");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'Round\'")]
-        public string LineJoin {
-            get {
-                return this.lineJoinField;
-            }
-            set {
-                if ((this.lineJoinField != null)) {
-                    if ((lineJoinField.Equals(value) != true)) {
-                        this.lineJoinField = value;
-                        this.OnPropertyChanged("LineJoin");
-                    }
-                }
-                else {
-                    this.lineJoinField = value;
-                    this.OnPropertyChanged("LineJoin");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("5.0")]
-        public string LineMiterLimit {
-            get {
-                return this.lineMiterLimitField;
-            }
-            set {
-                if ((this.lineMiterLimitField != null)) {
-                    if ((lineMiterLimitField.Equals(value) != true)) {
-                        this.lineMiterLimitField = value;
-                        this.OnPropertyChanged("LineMiterLimit");
-                    }
-                }
-                else {
-                    this.lineMiterLimitField = value;
-                    this.OnPropertyChanged("LineMiterLimit");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(Path));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current Path object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an Path object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output Path object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out Path obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Path);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out Path obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static Path Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((Path)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current Path object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an Path object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output Path object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out Path obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Path);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out Path obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static Path LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this Path object
-        /// </summary>
-        public virtual Path Clone() {
-            return ((Path)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(Text))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(Image))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(Path))]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class GraphicBase : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string resizeControlField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public GraphicBase() {
-            this.resizeControlField = "\'ResizeNone\'";
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'ResizeNone\'")]
-        public string ResizeControl {
-            get {
-                return this.resizeControlField;
-            }
-            set {
-                if ((this.resizeControlField != null)) {
-                    if ((resizeControlField.Equals(value) != true)) {
-                        this.resizeControlField = value;
-                        this.OnPropertyChanged("ResizeControl");
-                    }
-                }
-                else {
-                    this.resizeControlField = value;
-                    this.OnPropertyChanged("ResizeControl");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(GraphicBase));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current GraphicBase object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an GraphicBase object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output GraphicBase object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out GraphicBase obj, out System.Exception exception) {
-            exception = null;
-            obj = default(GraphicBase);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out GraphicBase obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static GraphicBase Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((GraphicBase)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current GraphicBase object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an GraphicBase object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output GraphicBase object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out GraphicBase obj, out System.Exception exception) {
-            exception = null;
-            obj = default(GraphicBase);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out GraphicBase obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static GraphicBase LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this GraphicBase object
-        /// </summary>
-        public virtual GraphicBase Clone() {
-            return ((GraphicBase)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class Text : GraphicBase, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string contentField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string fontNameField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string boldField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string italicField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string underlinedField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string overlinedField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string obliqueAngleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string trackSpacingField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string heightField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string heightScalableField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string horizontalAlignmentField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string verticalAlignmentField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string justificationField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineSpacingField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string textColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string ghostColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private TextFrame frameField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string markupField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public Text() {
-            this.fontNameField = "\'Arial\'";
-            this.boldField = "false";
-            this.italicField = "false";
-            this.underlinedField = "false";
-            this.overlinedField = "false";
-            this.obliqueAngleField = "0.0";
-            this.trackSpacingField = "1.0";
-            this.heightField = "4.0";
-            this.heightScalableField = "true";
-            this.angleField = "0.0";
-            this.positionXField = "0.0";
-            this.positionYField = "0.0";
-            this.horizontalAlignmentField = "\'Center\'";
-            this.verticalAlignmentField = "\'Halfline\'";
-            this.justificationField = "\'FromAlignment\'";
-            this.lineSpacingField = "1.05";
-            this.textColorField = "ff000000";
-            this.markupField = "\'Plain\'";
-        }
-        
-        public string Content {
-            get {
-                return this.contentField;
-            }
-            set {
-                if ((this.contentField != null)) {
-                    if ((contentField.Equals(value) != true)) {
-                        this.contentField = value;
-                        this.OnPropertyChanged("Content");
-                    }
-                }
-                else {
-                    this.contentField = value;
-                    this.OnPropertyChanged("Content");
-                }
-            }
-        }
-        
-        public string FontName {
-            get {
-                return this.fontNameField;
-            }
-            set {
-                if ((this.fontNameField != null)) {
-                    if ((fontNameField.Equals(value) != true)) {
-                        this.fontNameField = value;
-                        this.OnPropertyChanged("FontName");
-                    }
-                }
-                else {
-                    this.fontNameField = value;
-                    this.OnPropertyChanged("FontName");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("false")]
-        public string Bold {
-            get {
-                return this.boldField;
-            }
-            set {
-                if ((this.boldField != null)) {
-                    if ((boldField.Equals(value) != true)) {
-                        this.boldField = value;
-                        this.OnPropertyChanged("Bold");
-                    }
-                }
-                else {
-                    this.boldField = value;
-                    this.OnPropertyChanged("Bold");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("false")]
-        public string Italic {
-            get {
-                return this.italicField;
-            }
-            set {
-                if ((this.italicField != null)) {
-                    if ((italicField.Equals(value) != true)) {
-                        this.italicField = value;
-                        this.OnPropertyChanged("Italic");
-                    }
-                }
-                else {
-                    this.italicField = value;
-                    this.OnPropertyChanged("Italic");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("false")]
-        public string Underlined {
-            get {
-                return this.underlinedField;
-            }
-            set {
-                if ((this.underlinedField != null)) {
-                    if ((underlinedField.Equals(value) != true)) {
-                        this.underlinedField = value;
-                        this.OnPropertyChanged("Underlined");
-                    }
-                }
-                else {
-                    this.underlinedField = value;
-                    this.OnPropertyChanged("Underlined");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("false")]
-        public string Overlined {
-            get {
-                return this.overlinedField;
-            }
-            set {
-                if ((this.overlinedField != null)) {
-                    if ((overlinedField.Equals(value) != true)) {
-                        this.overlinedField = value;
-                        this.OnPropertyChanged("Overlined");
-                    }
-                }
-                else {
-                    this.overlinedField = value;
-                    this.OnPropertyChanged("Overlined");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string ObliqueAngle {
-            get {
-                return this.obliqueAngleField;
-            }
-            set {
-                if ((this.obliqueAngleField != null)) {
-                    if ((obliqueAngleField.Equals(value) != true)) {
-                        this.obliqueAngleField = value;
-                        this.OnPropertyChanged("ObliqueAngle");
-                    }
-                }
-                else {
-                    this.obliqueAngleField = value;
-                    this.OnPropertyChanged("ObliqueAngle");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("1.0")]
-        public string TrackSpacing {
-            get {
-                return this.trackSpacingField;
-            }
-            set {
-                if ((this.trackSpacingField != null)) {
-                    if ((trackSpacingField.Equals(value) != true)) {
-                        this.trackSpacingField = value;
-                        this.OnPropertyChanged("TrackSpacing");
-                    }
-                }
-                else {
-                    this.trackSpacingField = value;
-                    this.OnPropertyChanged("TrackSpacing");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("4.0")]
-        public string Height {
-            get {
-                return this.heightField;
-            }
-            set {
-                if ((this.heightField != null)) {
-                    if ((heightField.Equals(value) != true)) {
-                        this.heightField = value;
-                        this.OnPropertyChanged("Height");
-                    }
-                }
-                else {
-                    this.heightField = value;
-                    this.OnPropertyChanged("Height");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("true")]
-        public string HeightScalable {
-            get {
-                return this.heightScalableField;
-            }
-            set {
-                if ((this.heightScalableField != null)) {
-                    if ((heightScalableField.Equals(value) != true)) {
-                        this.heightScalableField = value;
-                        this.OnPropertyChanged("HeightScalable");
-                    }
-                }
-                else {
-                    this.heightScalableField = value;
-                    this.OnPropertyChanged("HeightScalable");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Angle {
-            get {
-                return this.angleField;
-            }
-            set {
-                if ((this.angleField != null)) {
-                    if ((angleField.Equals(value) != true)) {
-                        this.angleField = value;
-                        this.OnPropertyChanged("Angle");
-                    }
-                }
-                else {
-                    this.angleField = value;
-                    this.OnPropertyChanged("Angle");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string PositionX {
-            get {
-                return this.positionXField;
-            }
-            set {
-                if ((this.positionXField != null)) {
-                    if ((positionXField.Equals(value) != true)) {
-                        this.positionXField = value;
-                        this.OnPropertyChanged("PositionX");
-                    }
-                }
-                else {
-                    this.positionXField = value;
-                    this.OnPropertyChanged("PositionX");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string PositionY {
-            get {
-                return this.positionYField;
-            }
-            set {
-                if ((this.positionYField != null)) {
-                    if ((positionYField.Equals(value) != true)) {
-                        this.positionYField = value;
-                        this.OnPropertyChanged("PositionY");
-                    }
-                }
-                else {
-                    this.positionYField = value;
-                    this.OnPropertyChanged("PositionY");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'Center\'")]
-        public string HorizontalAlignment {
-            get {
-                return this.horizontalAlignmentField;
-            }
-            set {
-                if ((this.horizontalAlignmentField != null)) {
-                    if ((horizontalAlignmentField.Equals(value) != true)) {
-                        this.horizontalAlignmentField = value;
-                        this.OnPropertyChanged("HorizontalAlignment");
-                    }
-                }
-                else {
-                    this.horizontalAlignmentField = value;
-                    this.OnPropertyChanged("HorizontalAlignment");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'Halfline\'")]
-        public string VerticalAlignment {
-            get {
-                return this.verticalAlignmentField;
-            }
-            set {
-                if ((this.verticalAlignmentField != null)) {
-                    if ((verticalAlignmentField.Equals(value) != true)) {
-                        this.verticalAlignmentField = value;
-                        this.OnPropertyChanged("VerticalAlignment");
-                    }
-                }
-                else {
-                    this.verticalAlignmentField = value;
-                    this.OnPropertyChanged("VerticalAlignment");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'FromAlignment\'")]
-        public string Justification {
-            get {
-                return this.justificationField;
-            }
-            set {
-                if ((this.justificationField != null)) {
-                    if ((justificationField.Equals(value) != true)) {
-                        this.justificationField = value;
-                        this.OnPropertyChanged("Justification");
-                    }
-                }
-                else {
-                    this.justificationField = value;
-                    this.OnPropertyChanged("Justification");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("1.05")]
-        public string LineSpacing {
-            get {
-                return this.lineSpacingField;
-            }
-            set {
-                if ((this.lineSpacingField != null)) {
-                    if ((lineSpacingField.Equals(value) != true)) {
-                        this.lineSpacingField = value;
-                        this.OnPropertyChanged("LineSpacing");
-                    }
-                }
-                else {
-                    this.lineSpacingField = value;
-                    this.OnPropertyChanged("LineSpacing");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("ff000000")]
-        public string TextColor {
-            get {
-                return this.textColorField;
-            }
-            set {
-                if ((this.textColorField != null)) {
-                    if ((textColorField.Equals(value) != true)) {
-                        this.textColorField = value;
-                        this.OnPropertyChanged("TextColor");
-                    }
-                }
-                else {
-                    this.textColorField = value;
-                    this.OnPropertyChanged("TextColor");
-                }
-            }
-        }
-        
-        public string GhostColor {
-            get {
-                return this.ghostColorField;
-            }
-            set {
-                if ((this.ghostColorField != null)) {
-                    if ((ghostColorField.Equals(value) != true)) {
-                        this.ghostColorField = value;
-                        this.OnPropertyChanged("GhostColor");
-                    }
-                }
-                else {
-                    this.ghostColorField = value;
-                    this.OnPropertyChanged("GhostColor");
-                }
-            }
-        }
-        
-        public TextFrame Frame {
-            get {
-                return this.frameField;
-            }
-            set {
-                if ((this.frameField != null)) {
-                    if ((frameField.Equals(value) != true)) {
-                        this.frameField = value;
-                        this.OnPropertyChanged("Frame");
-                    }
-                }
-                else {
-                    this.frameField = value;
-                    this.OnPropertyChanged("Frame");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("\'Plain\'")]
-        public string Markup {
-            get {
-                return this.markupField;
-            }
-            set {
-                if ((this.markupField != null)) {
-                    if ((markupField.Equals(value) != true)) {
-                        this.markupField = value;
-                        this.OnPropertyChanged("Markup");
-                    }
-                }
-                else {
-                    this.markupField = value;
-                    this.OnPropertyChanged("Markup");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(Text));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current Text object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an Text object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output Text object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out Text obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Text);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out Text obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static Text Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((Text)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current Text object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an Text object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output Text object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out Text obj, out System.Exception exception) {
-            exception = null;
-            obj = default(Text);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out Text obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static Text LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this Text object
-        /// </summary>
-        public virtual Text Clone() {
-            return ((Text)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class TextFrame : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string lineColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string fillColorField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string offsetXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string offsetYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public TextFrame() {
-            this.offsetXField = "0.0";
-            this.offsetYField = "0.0";
-        }
-        
-        public string LineColor {
-            get {
-                return this.lineColorField;
-            }
-            set {
-                if ((this.lineColorField != null)) {
-                    if ((lineColorField.Equals(value) != true)) {
-                        this.lineColorField = value;
-                        this.OnPropertyChanged("LineColor");
-                    }
-                }
-                else {
-                    this.lineColorField = value;
-                    this.OnPropertyChanged("LineColor");
-                }
-            }
-        }
-        
-        public string FillColor {
-            get {
-                return this.fillColorField;
-            }
-            set {
-                if ((this.fillColorField != null)) {
-                    if ((fillColorField.Equals(value) != true)) {
-                        this.fillColorField = value;
-                        this.OnPropertyChanged("FillColor");
-                    }
-                }
-                else {
-                    this.fillColorField = value;
-                    this.OnPropertyChanged("FillColor");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OffsetX {
-            get {
-                return this.offsetXField;
-            }
-            set {
-                if ((this.offsetXField != null)) {
-                    if ((offsetXField.Equals(value) != true)) {
-                        this.offsetXField = value;
-                        this.OnPropertyChanged("OffsetX");
-                    }
-                }
-                else {
-                    this.offsetXField = value;
-                    this.OnPropertyChanged("OffsetX");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OffsetY {
-            get {
-                return this.offsetYField;
-            }
-            set {
-                if ((this.offsetYField != null)) {
-                    if ((offsetYField.Equals(value) != true)) {
-                        this.offsetYField = value;
-                        this.OnPropertyChanged("OffsetY");
-                    }
-                }
-                else {
-                    this.offsetYField = value;
-                    this.OnPropertyChanged("OffsetY");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(TextFrame));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current TextFrame object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an TextFrame object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output TextFrame object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out TextFrame obj, out System.Exception exception) {
-            exception = null;
-            obj = default(TextFrame);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out TextFrame obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static TextFrame Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((TextFrame)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current TextFrame object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an TextFrame object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output TextFrame object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out TextFrame obj, out System.Exception exception) {
-            exception = null;
-            obj = default(TextFrame);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out TextFrame obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static TextFrame LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this TextFrame object
-        /// </summary>
-        public virtual TextFrame Clone() {
-            return ((TextFrame)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// Specifies how the symbol is used in the context of point features.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class PointUsage : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string angleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string originOffsetXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string originOffsetYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public PointUsage() {
-            this.angleControlField = "\'FromAngle\'";
-            this.angleField = "0.0";
-            this.originOffsetXField = "0.0";
-            this.originOffsetYField = "0.0";
-        }
-        
-        /// <summary>
-        /// Specifies how the symbol angle is defined.  This must evaluate to one of: FromAngle (default) or FromGeometry.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("\'FromAngle\'")]
-        public string AngleControl {
-            get {
-                return this.angleControlField;
-            }
-            set {
-                if ((this.angleControlField != null)) {
-                    if ((angleControlField.Equals(value) != true)) {
-                        this.angleControlField = value;
-                        this.OnPropertyChanged("AngleControl");
-                    }
-                }
-                else {
-                    this.angleControlField = value;
-                    this.OnPropertyChanged("AngleControl");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the symbol angle, in degrees.  If AngleControl evaluates to FromAngle then this specifies the absolute angle of the symbol.  If AngleControl evaluates to FromGeometry then this specifies the symbol angle relative to the geometry.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string Angle {
-            get {
-                return this.angleField;
-            }
-            set {
-                if ((this.angleField != null)) {
-                    if ((angleField.Equals(value) != true)) {
-                        this.angleField = value;
-                        this.OnPropertyChanged("Angle");
-                    }
-                }
-                else {
-                    this.angleField = value;
-                    this.OnPropertyChanged("Angle");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the horizontal offset to apply to the symbol origin, in mm.  This offset is applied before the symbol is scaled and rotated.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OriginOffsetX {
-            get {
-                return this.originOffsetXField;
-            }
-            set {
-                if ((this.originOffsetXField != null)) {
-                    if ((originOffsetXField.Equals(value) != true)) {
-                        this.originOffsetXField = value;
-                        this.OnPropertyChanged("OriginOffsetX");
-                    }
-                }
-                else {
-                    this.originOffsetXField = value;
-                    this.OnPropertyChanged("OriginOffsetX");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies the vertical offset to apply to the symbol origin, in mm.  This offset is applied before the symbol is scaled and rotated.  Defaults to 0.
-        /// </summary>
-        [System.ComponentModel.DefaultValueAttribute("0.0")]
-        public string OriginOffsetY {
-            get {
-                return this.originOffsetYField;
-            }
-            set {
-                if ((this.originOffsetYField != null)) {
-                    if ((originOffsetYField.Equals(value) != true)) {
-                        this.originOffsetYField = value;
-                        this.OnPropertyChanged("OriginOffsetY");
-                    }
-                }
-                else {
-                    this.originOffsetYField = value;
-                    this.OnPropertyChanged("OriginOffsetY");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(PointUsage));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current PointUsage object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an PointUsage object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output PointUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out PointUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(PointUsage);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out PointUsage obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static PointUsage Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((PointUsage)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current PointUsage object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an PointUsage object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output PointUsage object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out PointUsage obj, out System.Exception exception) {
-            exception = null;
-            obj = default(PointUsage);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out PointUsage obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static PointUsage LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this PointUsage object
-        /// </summary>
-        public virtual PointUsage Clone() {
-            return ((PointUsage)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// The optional box used to resize and reposition select graphic elements.  The graphical extent of all elements with ResizeControl set to AddToResizeBox will be added to this box, potentially causing it to grow in size.  Any change in size causes all elements with ResizeControl set to AdjustToResizeBox to be proportionally resized and repositioned.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class ResizeBox : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string sizeXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string sizeYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionXField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string positionYField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string growControlField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public ResizeBox() {
-            this.sizeXField = "1.0";
-            this.sizeYField = "1.0";
-            this.positionXField = "0.0";
-            this.positionYField = "0.0";
-            this.growControlField = "\'GrowInXYMaintainAspect\'";
-        }
-        
-        /// <summary>
-        /// The initial width of the resize box, in mm.  This must be greater than or equal to zero.
-        /// </summary>
-        public string SizeX {
-            get {
-                return this.sizeXField;
-            }
-            set {
-                if ((this.sizeXField != null)) {
-                    if ((sizeXField.Equals(value) != true)) {
-                        this.sizeXField = value;
-                        this.OnPropertyChanged("SizeX");
-                    }
-                }
-                else {
-                    this.sizeXField = value;
-                    this.OnPropertyChanged("SizeX");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The initial height of the resize box, in mm.  This must be greater than or equal to zero.
-        /// </summary>
-        public string SizeY {
-            get {
-                return this.sizeYField;
-            }
-            set {
-                if ((this.sizeYField != null)) {
-                    if ((sizeYField.Equals(value) != true)) {
-                        this.sizeYField = value;
-                        this.OnPropertyChanged("SizeY");
-                    }
-                }
-                else {
-                    this.sizeYField = value;
-                    this.OnPropertyChanged("SizeY");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The initial x-coordinate of the resize box center, in mm.
-        /// </summary>
-        public string PositionX {
-            get {
-                return this.positionXField;
-            }
-            set {
-                if ((this.positionXField != null)) {
-                    if ((positionXField.Equals(value) != true)) {
-                        this.positionXField = value;
-                        this.OnPropertyChanged("PositionX");
-                    }
-                }
-                else {
-                    this.positionXField = value;
-                    this.OnPropertyChanged("PositionX");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// The initial y-coordinate of the resize box center, in mm.
-        /// </summary>
-        public string PositionY {
-            get {
-                return this.positionYField;
-            }
-            set {
-                if ((this.positionYField != null)) {
-                    if ((positionYField.Equals(value) != true)) {
-                        this.positionYField = value;
-                        this.OnPropertyChanged("PositionY");
-                    }
-                }
-                else {
-                    this.positionYField = value;
-                    this.OnPropertyChanged("PositionY");
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Specifies how the resize box grows in size.  This must evaluate to one of: GrowInX, GrowInY, GrowInXY, or GrowInXYMaintainAspect (default).
-        /// </summary>
-        public string GrowControl {
-            get {
-                return this.growControlField;
-            }
-            set {
-                if ((this.growControlField != null)) {
-                    if ((growControlField.Equals(value) != true)) {
-                        this.growControlField = value;
-                        this.OnPropertyChanged("GrowControl");
-                    }
-                }
-                else {
-                    this.growControlField = value;
-                    this.OnPropertyChanged("GrowControl");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(ResizeBox));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current ResizeBox object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an ResizeBox object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output ResizeBox object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out ResizeBox obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ResizeBox);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out ResizeBox obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static ResizeBox Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((ResizeBox)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current ResizeBox object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an ResizeBox object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output ResizeBox object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out ResizeBox obj, out System.Exception exception) {
-            exception = null;
-            obj = default(ResizeBox);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out ResizeBox obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static ResizeBox LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this ResizeBox object
-        /// </summary>
-        public virtual ResizeBox Clone() {
-            return ((ResizeBox)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(CompoundSymbolDefinition))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(SimpleSymbolDefinition))]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class SymbolDefinitionBase : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string nameField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string descriptionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string Name {
-            get {
-                return this.nameField;
-            }
-            set {
-                if ((this.nameField != null)) {
-                    if ((nameField.Equals(value) != true)) {
-                        this.nameField = value;
-                        this.OnPropertyChanged("Name");
-                    }
-                }
-                else {
-                    this.nameField = value;
-                    this.OnPropertyChanged("Name");
-                }
-            }
-        }
-        
-        public string Description {
-            get {
-                return this.descriptionField;
-            }
-            set {
-                if ((this.descriptionField != null)) {
-                    if ((descriptionField.Equals(value) != true)) {
-                        this.descriptionField = value;
-                        this.OnPropertyChanged("Description");
-                    }
-                }
-                else {
-                    this.descriptionField = value;
-                    this.OnPropertyChanged("Description");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(SymbolDefinitionBase));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current SymbolDefinitionBase object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an SymbolDefinitionBase object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output SymbolDefinitionBase object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out SymbolDefinitionBase obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SymbolDefinitionBase);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out SymbolDefinitionBase obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static SymbolDefinitionBase Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((SymbolDefinitionBase)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current SymbolDefinitionBase object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an SymbolDefinitionBase object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output SymbolDefinitionBase object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out SymbolDefinitionBase obj, out System.Exception exception) {
-            exception = null;
-            obj = default(SymbolDefinitionBase);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out SymbolDefinitionBase obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static SymbolDefinitionBase LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this SymbolDefinitionBase object
-        /// </summary>
-        public virtual SymbolDefinitionBase Clone() {
-            return ((SymbolDefinitionBase)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// A 2D compound symbol for stylization.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class CompoundSymbolDefinition : SymbolDefinitionBase, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<SimpleSymbol> simpleSymbolField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("SimpleSymbol")]
-        public BindingList<SimpleSymbol> SimpleSymbol {
-            get {
-                return this.simpleSymbolField;
-            }
-            set {
-                if ((this.simpleSymbolField != null)) {
-                    if ((simpleSymbolField.Equals(value) != true)) {
-                        this.simpleSymbolField = value;
-                        this.OnPropertyChanged("SimpleSymbol");
-                    }
-                }
-                else {
-                    this.simpleSymbolField = value;
-                    this.OnPropertyChanged("SimpleSymbol");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(CompoundSymbolDefinition));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current CompoundSymbolDefinition object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an CompoundSymbolDefinition object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output CompoundSymbolDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out CompoundSymbolDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(CompoundSymbolDefinition);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out CompoundSymbolDefinition obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static CompoundSymbolDefinition Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((CompoundSymbolDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current CompoundSymbolDefinition object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an CompoundSymbolDefinition object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output CompoundSymbolDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out CompoundSymbolDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(CompoundSymbolDefinition);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out CompoundSymbolDefinition obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static CompoundSymbolDefinition LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this CompoundSymbolDefinition object
-        /// </summary>
-        public virtual CompoundSymbolDefinition Clone() {
-            return ((CompoundSymbolDefinition)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    [System.Xml.Serialization.XmlRootAttribute("CompoundSymbolDefinition", Namespace="", IsNullable=false)]
-    public partial class CompoundSymbolDefinition1 : CompoundSymbolDefinition, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
         private string versionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public CompoundSymbolDefinition1() {
-            this.versionField = "2.4.0";
-        }
-        
+
         [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string version {
-            get {
+        public string version
+        {
+            get
+            {
                 return this.versionField;
             }
-            set {
-                if ((this.versionField != null)) {
-                    if ((versionField.Equals(value) != true)) {
+            set
+            {
+                if ((this.versionField != null))
+                {
+                    if ((versionField.Equals(value) != true))
+                    {
                         this.versionField = value;
                         this.OnPropertyChanged("version");
                     }
                 }
-                else {
+                else
+                {
                     this.versionField = value;
                     this.OnPropertyChanged("version");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(CompoundSymbolDefinition1));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current CompoundSymbolDefinition1 object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an CompoundSymbolDefinition1 object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output CompoundSymbolDefinition1 object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out CompoundSymbolDefinition1 obj, out System.Exception exception) {
-            exception = null;
-            obj = default(CompoundSymbolDefinition1);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out CompoundSymbolDefinition1 obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static CompoundSymbolDefinition1 Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((CompoundSymbolDefinition1)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current CompoundSymbolDefinition1 object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an CompoundSymbolDefinition1 object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output CompoundSymbolDefinition1 object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out CompoundSymbolDefinition1 obj, out System.Exception exception) {
-            exception = null;
-            obj = default(CompoundSymbolDefinition1);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out CompoundSymbolDefinition1 obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static CompoundSymbolDefinition1 LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this CompoundSymbolDefinition1 object
-        /// </summary>
-        public virtual CompoundSymbolDefinition1 Clone() {
-            return ((CompoundSymbolDefinition1)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// The specification of a watermark.
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
-    public partial class WatermarkDefinition : WatermarkDefinitionType, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string versionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public WatermarkDefinition() {
-            this.versionField = "2.4.0";
-        }
-        
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string version {
-            get {
-                return this.versionField;
-            }
-            set {
-                if ((this.versionField != null)) {
-                    if ((versionField.Equals(value) != true)) {
-                        this.versionField = value;
-                        this.OnPropertyChanged("version");
-                    }
-                }
-                else {
-                    this.versionField = value;
-                    this.OnPropertyChanged("version");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkDefinition));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkDefinition object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkDefinition object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinition);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkDefinition obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkDefinition Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkDefinition object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkDefinition object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkDefinition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkDefinition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinition);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkDefinition obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkDefinition LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkDefinition object
-        /// </summary>
-        public virtual WatermarkDefinition Clone() {
-            return ((WatermarkDefinition)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class WatermarkDefinitionType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private WatermarkDefinitionTypeContent contentField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private WatermarkAppearanceType appearanceField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private WatermarkDefinitionTypePosition positionField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public WatermarkDefinitionTypeContent Content {
-            get {
-                return this.contentField;
-            }
-            set {
-                if ((this.contentField != null)) {
-                    if ((contentField.Equals(value) != true)) {
-                        this.contentField = value;
-                        this.OnPropertyChanged("Content");
-                    }
-                }
-                else {
-                    this.contentField = value;
-                    this.OnPropertyChanged("Content");
-                }
-            }
-        }
-        
-        public WatermarkAppearanceType Appearance {
-            get {
-                return this.appearanceField;
-            }
-            set {
-                if ((this.appearanceField != null)) {
-                    if ((appearanceField.Equals(value) != true)) {
-                        this.appearanceField = value;
-                        this.OnPropertyChanged("Appearance");
-                    }
-                }
-                else {
-                    this.appearanceField = value;
-                    this.OnPropertyChanged("Appearance");
-                }
-            }
-        }
-        
-        public WatermarkDefinitionTypePosition Position {
-            get {
-                return this.positionField;
-            }
-            set {
-                if ((this.positionField != null)) {
-                    if ((positionField.Equals(value) != true)) {
-                        this.positionField = value;
-                        this.OnPropertyChanged("Position");
-                    }
-                }
-                else {
-                    this.positionField = value;
-                    this.OnPropertyChanged("Position");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkDefinitionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkDefinitionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkDefinitionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkDefinitionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkDefinitionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkDefinitionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkDefinitionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkDefinitionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkDefinitionType object
-        /// </summary>
-        public virtual WatermarkDefinitionType Clone() {
-            return ((WatermarkDefinitionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    public partial class WatermarkDefinitionTypeContent : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private SymbolDefinitionBase itemField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("CompoundSymbolDefinition", typeof(CompoundSymbolDefinition))]
-        [System.Xml.Serialization.XmlElementAttribute("SimpleSymbolDefinition", typeof(SimpleSymbolDefinition))]
-        public SymbolDefinitionBase Item {
-            get {
-                return this.itemField;
-            }
-            set {
-                if ((this.itemField != null)) {
-                    if ((itemField.Equals(value) != true)) {
-                        this.itemField = value;
-                        this.OnPropertyChanged("Item");
-                    }
-                }
-                else {
-                    this.itemField = value;
-                    this.OnPropertyChanged("Item");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkDefinitionTypeContent));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkDefinitionTypeContent object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkDefinitionTypeContent object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionTypeContent object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkDefinitionTypeContent obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionTypeContent);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkDefinitionTypeContent obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionTypeContent Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkDefinitionTypeContent)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkDefinitionTypeContent object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkDefinitionTypeContent object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionTypeContent object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionTypeContent obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionTypeContent);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionTypeContent obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionTypeContent LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkDefinitionTypeContent object
-        /// </summary>
-        public virtual WatermarkDefinitionTypeContent Clone() {
-            return ((WatermarkDefinitionTypeContent)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class WatermarkAppearanceType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double transparencyField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double rotationField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public WatermarkAppearanceType() {
-            this.transparencyField = 0;
-            this.rotationField = 0;
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute(0)]
-        public double Transparency {
-            get {
-                return this.transparencyField;
-            }
-            set {
-                if ((transparencyField.Equals(value) != true)) {
-                    this.transparencyField = value;
-                    this.OnPropertyChanged("Transparency");
-                }
-            }
-        }
-        
-        [System.ComponentModel.DefaultValueAttribute(0)]
-        public double Rotation {
-            get {
-                return this.rotationField;
-            }
-            set {
-                if ((rotationField.Equals(value) != true)) {
-                    this.rotationField = value;
-                    this.OnPropertyChanged("Rotation");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkAppearanceType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkAppearanceType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkAppearanceType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkAppearanceType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkAppearanceType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkAppearanceType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkAppearanceType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkAppearanceType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkAppearanceType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkAppearanceType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkAppearanceType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkAppearanceType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkAppearanceType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkAppearanceType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkAppearanceType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkAppearanceType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkAppearanceType object
-        /// </summary>
-        public virtual WatermarkAppearanceType Clone() {
-            return ((WatermarkAppearanceType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    public partial class WatermarkDefinitionTypePosition : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private PositionType itemField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("TilePosition", typeof(TilePositionType))]
-        [System.Xml.Serialization.XmlElementAttribute("XYPosition", typeof(XYPositionType))]
-        public PositionType Item {
-            get {
-                return this.itemField;
-            }
-            set {
-                if ((this.itemField != null)) {
-                    if ((itemField.Equals(value) != true)) {
-                        this.itemField = value;
-                        this.OnPropertyChanged("Item");
-                    }
-                }
-                else {
-                    this.itemField = value;
-                    this.OnPropertyChanged("Item");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkDefinitionTypePosition));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkDefinitionTypePosition object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkDefinitionTypePosition object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionTypePosition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkDefinitionTypePosition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionTypePosition);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkDefinitionTypePosition obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionTypePosition Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkDefinitionTypePosition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkDefinitionTypePosition object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkDefinitionTypePosition object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkDefinitionTypePosition object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionTypePosition obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkDefinitionTypePosition);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkDefinitionTypePosition obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkDefinitionTypePosition LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkDefinitionTypePosition object
-        /// </summary>
-        public virtual WatermarkDefinitionTypePosition Clone() {
-            return ((WatermarkDefinitionTypePosition)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class TilePositionType : PositionType, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double tileWidthField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double tileHeightField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private HorizontalPositionType horizontalPositionField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private VerticalPositionType verticalPositionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public TilePositionType() {
-            this.tileWidthField = 150;
-            this.tileHeightField = 150;
-        }
-        
-        public double TileWidth {
-            get {
-                return this.tileWidthField;
-            }
-            set {
-                if ((tileWidthField.Equals(value) != true)) {
-                    this.tileWidthField = value;
-                    this.OnPropertyChanged("TileWidth");
-                }
-            }
-        }
-        
-        public double TileHeight {
-            get {
-                return this.tileHeightField;
-            }
-            set {
-                if ((tileHeightField.Equals(value) != true)) {
-                    this.tileHeightField = value;
-                    this.OnPropertyChanged("TileHeight");
-                }
-            }
-        }
-        
-        public HorizontalPositionType HorizontalPosition {
-            get {
-                return this.horizontalPositionField;
-            }
-            set {
-                if ((this.horizontalPositionField != null)) {
-                    if ((horizontalPositionField.Equals(value) != true)) {
-                        this.horizontalPositionField = value;
-                        this.OnPropertyChanged("HorizontalPosition");
-                    }
-                }
-                else {
-                    this.horizontalPositionField = value;
-                    this.OnPropertyChanged("HorizontalPosition");
-                }
-            }
-        }
-        
-        public VerticalPositionType VerticalPosition {
-            get {
-                return this.verticalPositionField;
-            }
-            set {
-                if ((this.verticalPositionField != null)) {
-                    if ((verticalPositionField.Equals(value) != true)) {
-                        this.verticalPositionField = value;
-                        this.OnPropertyChanged("VerticalPosition");
-                    }
-                }
-                else {
-                    this.verticalPositionField = value;
-                    this.OnPropertyChanged("VerticalPosition");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(TilePositionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current TilePositionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an TilePositionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output TilePositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out TilePositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(TilePositionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out TilePositionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static TilePositionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((TilePositionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current TilePositionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an TilePositionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output TilePositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out TilePositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(TilePositionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out TilePositionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static TilePositionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this TilePositionType object
-        /// </summary>
-        public virtual TilePositionType Clone() {
-            return ((TilePositionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class HorizontalPositionType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double offsetField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private UnitType unitField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private HorizontalAlignmentType alignmentField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public HorizontalPositionType() {
-            this.offsetField = 0;
-            this.unitField = UnitType.Points;
-            this.alignmentField = HorizontalAlignmentType.Center;
-        }
-        
-        public double Offset {
-            get {
-                return this.offsetField;
-            }
-            set {
-                if ((offsetField.Equals(value) != true)) {
-                    this.offsetField = value;
-                    this.OnPropertyChanged("Offset");
-                }
-            }
-        }
-        
-        public UnitType Unit {
-            get {
-                return this.unitField;
-            }
-            set {
-                if ((unitField.Equals(value) != true)) {
-                    this.unitField = value;
-                    this.OnPropertyChanged("Unit");
-                }
-            }
-        }
-        
-        public HorizontalAlignmentType Alignment {
-            get {
-                return this.alignmentField;
-            }
-            set {
-                if ((alignmentField.Equals(value) != true)) {
-                    this.alignmentField = value;
-                    this.OnPropertyChanged("Alignment");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(HorizontalPositionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current HorizontalPositionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an HorizontalPositionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output HorizontalPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out HorizontalPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(HorizontalPositionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out HorizontalPositionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static HorizontalPositionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((HorizontalPositionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current HorizontalPositionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an HorizontalPositionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output HorizontalPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out HorizontalPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(HorizontalPositionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out HorizontalPositionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static HorizontalPositionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this HorizontalPositionType object
-        /// </summary>
-        public virtual HorizontalPositionType Clone() {
-            return ((HorizontalPositionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    public enum UnitType {
-        
-        /// <remarks/>
-        Inches,
-        
-        /// <remarks/>
-        Centimeters,
-        
-        /// <remarks/>
-        Millimeters,
-        
-        /// <remarks/>
-        Pixels,
-        
-        /// <remarks/>
-        Points,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    public enum HorizontalAlignmentType {
-        
-        /// <remarks/>
-        Left,
-        
-        /// <remarks/>
-        Center,
-        
-        /// <remarks/>
-        Right,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class VerticalPositionType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private double offsetField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private UnitType unitField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private VerticalAlignmentType alignmentField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public VerticalPositionType() {
-            this.offsetField = 0;
-            this.unitField = UnitType.Points;
-            this.alignmentField = VerticalAlignmentType.Center;
-        }
-        
-        public double Offset {
-            get {
-                return this.offsetField;
-            }
-            set {
-                if ((offsetField.Equals(value) != true)) {
-                    this.offsetField = value;
-                    this.OnPropertyChanged("Offset");
-                }
-            }
-        }
-        
-        public UnitType Unit {
-            get {
-                return this.unitField;
-            }
-            set {
-                if ((unitField.Equals(value) != true)) {
-                    this.unitField = value;
-                    this.OnPropertyChanged("Unit");
-                }
-            }
-        }
-        
-        public VerticalAlignmentType Alignment {
-            get {
-                return this.alignmentField;
-            }
-            set {
-                if ((alignmentField.Equals(value) != true)) {
-                    this.alignmentField = value;
-                    this.OnPropertyChanged("Alignment");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(VerticalPositionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current VerticalPositionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an VerticalPositionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output VerticalPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out VerticalPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(VerticalPositionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out VerticalPositionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static VerticalPositionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((VerticalPositionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current VerticalPositionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an VerticalPositionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output VerticalPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out VerticalPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(VerticalPositionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out VerticalPositionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static VerticalPositionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this VerticalPositionType object
-        /// </summary>
-        public virtual VerticalPositionType Clone() {
-            return ((VerticalPositionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    public enum VerticalAlignmentType {
-        
-        /// <remarks/>
-        Top,
-        
-        /// <remarks/>
-        Center,
-        
-        /// <remarks/>
-        Bottom,
-    }
-    
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(TilePositionType))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(XYPositionType))]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public abstract partial class PositionType : System.ComponentModel.INotifyPropertyChanged {
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(PositionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current PositionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an PositionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output PositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out PositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(PositionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out PositionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static PositionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((PositionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current PositionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an PositionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output PositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out PositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(PositionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out PositionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static PositionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this PositionType object
-        /// </summary>
-        public virtual PositionType Clone() {
-            return ((PositionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class XYPositionType : PositionType, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private HorizontalPositionType xPositionField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private VerticalPositionType yPositionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public HorizontalPositionType XPosition {
-            get {
-                return this.xPositionField;
-            }
-            set {
-                if ((this.xPositionField != null)) {
-                    if ((xPositionField.Equals(value) != true)) {
-                        this.xPositionField = value;
-                        this.OnPropertyChanged("XPosition");
-                    }
-                }
-                else {
-                    this.xPositionField = value;
-                    this.OnPropertyChanged("XPosition");
-                }
-            }
-        }
-        
-        public VerticalPositionType YPosition {
-            get {
-                return this.yPositionField;
-            }
-            set {
-                if ((this.yPositionField != null)) {
-                    if ((yPositionField.Equals(value) != true)) {
-                        this.yPositionField = value;
-                        this.OnPropertyChanged("YPosition");
-                    }
-                }
-                else {
-                    this.yPositionField = value;
-                    this.OnPropertyChanged("YPosition");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(XYPositionType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current XYPositionType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an XYPositionType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output XYPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out XYPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(XYPositionType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out XYPositionType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static XYPositionType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((XYPositionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current XYPositionType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an XYPositionType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output XYPositionType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out XYPositionType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(XYPositionType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out XYPositionType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static XYPositionType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this XYPositionType object
-        /// </summary>
-        public virtual XYPositionType Clone() {
-            return ((XYPositionType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    /// <summary>
-    /// A MapDefinition defines the collection of layers, groupings of layers, and base map
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
-    public partial class MapDefinition : MapDefinitionType, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string versionField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public MapDefinition() {
-            this.versionField = "3.0.0";
-        }
-        
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string version {
-            get {
-                return this.versionField;
-            }
-            set {
-                if ((this.versionField != null)) {
-                    if ((versionField.Equals(value) != true)) {
-                        this.versionField = value;
-                        this.OnPropertyChanged("version");
-                    }
-                }
-                else {
-                    this.versionField = value;
-                    this.OnPropertyChanged("version");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinition));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
         /// Serializes current MapDefinition object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
+        public virtual string Serialize()
+        {
+            return base.NormalizedSerialize(Serializer, this);
         }
-        
+
         /// <summary>
         /// Deserializes workflow markup into an MapDefinition object
         /// </summary>
@@ -8426,71 +88,86 @@
         /// <param name="obj">Output MapDefinition object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapDefinition obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapDefinition obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(MapDefinition);
-            try {
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out MapDefinition obj) {
+
+        public static bool Deserialize(string xml, out MapDefinition obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static MapDefinition Deserialize(string xml) {
+
+        public static MapDefinition Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
                 return ((MapDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Serializes current MapDefinition object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Deserializes xml markup from file into an MapDefinition object
         /// </summary>
@@ -8498,28 +175,34 @@
         /// <param name="obj">Output MapDefinition object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapDefinition obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapDefinition obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(MapDefinition);
-            try {
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out MapDefinition obj) {
+
+        public static bool LoadFromFile(string fileName, out MapDefinition obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static MapDefinition LoadFromFile(string fileName) {
+
+        public static MapDefinition LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -8527,313 +210,368 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
         /// Create a clone of this MapDefinition object
         /// </summary>
-        public virtual MapDefinition Clone() {
+        public virtual MapDefinition Clone()
+        {
             return ((MapDefinition)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class MapDefinitionType : System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class MapDefinitionType : BaseSerializableMapDefinition, System.ComponentModel.INotifyPropertyChanged
+    {
         [EditorBrowsable(EditorBrowsableState.Never)]
         private string nameField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private string coordinateSystemField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private Box2DType extentsField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private byte[] backgroundColorField;
-        
+        private Color backgroundColorField;
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private string metadataField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private BindingList<MapLayerType> mapLayerField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private BindingList<MapLayerGroupType> mapLayerGroupField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private MapDefinitionTypeBaseMapDefinition baseMapDefinitionField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private MapDefinitionTypeTileSetSource tileSetSourceField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private BindingList<WatermarkType> watermarksField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string Name {
-            get {
+
+        public string Name
+        {
+            get
+            {
                 return this.nameField;
             }
-            set {
-                if ((this.nameField != null)) {
-                    if ((nameField.Equals(value) != true)) {
+            set
+            {
+                if ((this.nameField != null))
+                {
+                    if ((nameField.Equals(value) != true))
+                    {
                         this.nameField = value;
                         this.OnPropertyChanged("Name");
                     }
                 }
-                else {
+                else
+                {
                     this.nameField = value;
                     this.OnPropertyChanged("Name");
                 }
             }
         }
-        
-        public string CoordinateSystem {
-            get {
+
+        public string CoordinateSystem
+        {
+            get
+            {
                 return this.coordinateSystemField;
             }
-            set {
-                if ((this.coordinateSystemField != null)) {
-                    if ((coordinateSystemField.Equals(value) != true)) {
+            set
+            {
+                if ((this.coordinateSystemField != null))
+                {
+                    if ((coordinateSystemField.Equals(value) != true))
+                    {
                         this.coordinateSystemField = value;
                         this.OnPropertyChanged("CoordinateSystem");
                     }
                 }
-                else {
+                else
+                {
                     this.coordinateSystemField = value;
                     this.OnPropertyChanged("CoordinateSystem");
                 }
             }
         }
-        
-        public Box2DType Extents {
-            get {
+
+        public Box2DType Extents
+        {
+            get
+            {
                 return this.extentsField;
             }
-            set {
-                if ((this.extentsField != null)) {
-                    if ((extentsField.Equals(value) != true)) {
+            set
+            {
+                if ((this.extentsField != null))
+                {
+                    if ((extentsField.Equals(value) != true))
+                    {
                         this.extentsField = value;
                         this.OnPropertyChanged("Extents");
                     }
                 }
-                else {
+                else
+                {
                     this.extentsField = value;
                     this.OnPropertyChanged("Extents");
                 }
             }
         }
-        
-        [System.Xml.Serialization.XmlElementAttribute(DataType="hexBinary")]
-        public byte[] BackgroundColor {
-            get {
-                return this.backgroundColorField;
+
+        [System.Xml.Serialization.XmlElementAttribute("BackgroundColor")]
+        public string BackgroundColorAsHtml
+        {
+            get
+            {
+                return base.SerializeHTMLColor(this.backgroundColorField, true);
             }
-            set {
-                if ((this.backgroundColorField != null)) {
-                    if ((backgroundColorField.Equals(value) != true)) {
-                        this.backgroundColorField = value;
+            set
+            {
+                var c = base.ParseHTMLColor(value);
+                if ((this.backgroundColorField != null))
+                {
+                    if ((backgroundColorField.Equals(c) != true))
+                    {
+                        this.backgroundColorField = c;
                         this.OnPropertyChanged("BackgroundColor");
                     }
                 }
-                else {
-                    this.backgroundColorField = value;
+                else
+                {
+                    this.backgroundColorField = c;
                     this.OnPropertyChanged("BackgroundColor");
                 }
             }
         }
-        
-        public string Metadata {
-            get {
+
+        public string Metadata
+        {
+            get
+            {
                 return this.metadataField;
             }
-            set {
-                if ((this.metadataField != null)) {
-                    if ((metadataField.Equals(value) != true)) {
+            set
+            {
+                if ((this.metadataField != null))
+                {
+                    if ((metadataField.Equals(value) != true))
+                    {
                         this.metadataField = value;
                         this.OnPropertyChanged("Metadata");
                     }
                 }
-                else {
+                else
+                {
                     this.metadataField = value;
                     this.OnPropertyChanged("Metadata");
                 }
             }
         }
-        
+
         [System.Xml.Serialization.XmlElementAttribute("MapLayer")]
-        public BindingList<MapLayerType> MapLayer {
-            get {
+        public BindingList<MapLayerType> MapLayer
+        {
+            get
+            {
                 return this.mapLayerField;
             }
-            set {
-                if ((this.mapLayerField != null)) {
-                    if ((mapLayerField.Equals(value) != true)) {
+            set
+            {
+                if ((this.mapLayerField != null))
+                {
+                    if ((mapLayerField.Equals(value) != true))
+                    {
                         this.mapLayerField = value;
                         this.OnPropertyChanged("MapLayer");
                     }
                 }
-                else {
+                else
+                {
                     this.mapLayerField = value;
                     this.OnPropertyChanged("MapLayer");
                 }
             }
         }
-        
+
         [System.Xml.Serialization.XmlElementAttribute("MapLayerGroup")]
-        public BindingList<MapLayerGroupType> MapLayerGroup {
-            get {
+        public BindingList<MapLayerGroupType> MapLayerGroup
+        {
+            get
+            {
                 return this.mapLayerGroupField;
             }
-            set {
-                if ((this.mapLayerGroupField != null)) {
-                    if ((mapLayerGroupField.Equals(value) != true)) {
+            set
+            {
+                if ((this.mapLayerGroupField != null))
+                {
+                    if ((mapLayerGroupField.Equals(value) != true))
+                    {
                         this.mapLayerGroupField = value;
                         this.OnPropertyChanged("MapLayerGroup");
                     }
                 }
-                else {
+                else
+                {
                     this.mapLayerGroupField = value;
                     this.OnPropertyChanged("MapLayerGroup");
                 }
             }
         }
-        
-        public MapDefinitionTypeBaseMapDefinition BaseMapDefinition {
-            get {
+
+        public MapDefinitionTypeBaseMapDefinition BaseMapDefinition
+        {
+            get
+            {
                 return this.baseMapDefinitionField;
             }
-            set {
-                if ((this.baseMapDefinitionField != null)) {
-                    if ((baseMapDefinitionField.Equals(value) != true)) {
+            set
+            {
+                if ((this.baseMapDefinitionField != null))
+                {
+                    if ((baseMapDefinitionField.Equals(value) != true))
+                    {
                         this.baseMapDefinitionField = value;
                         this.OnPropertyChanged("BaseMapDefinition");
                     }
                 }
-                else {
+                else
+                {
                     this.baseMapDefinitionField = value;
                     this.OnPropertyChanged("BaseMapDefinition");
                 }
             }
         }
-        
-        public MapDefinitionTypeTileSetSource TileSetSource {
-            get {
+
+        public MapDefinitionTypeTileSetSource TileSetSource
+        {
+            get
+            {
                 return this.tileSetSourceField;
             }
-            set {
-                if ((this.tileSetSourceField != null)) {
-                    if ((tileSetSourceField.Equals(value) != true)) {
+            set
+            {
+                if ((this.tileSetSourceField != null))
+                {
+                    if ((tileSetSourceField.Equals(value) != true))
+                    {
                         this.tileSetSourceField = value;
                         this.OnPropertyChanged("TileSetSource");
                     }
                 }
-                else {
+                else
+                {
                     this.tileSetSourceField = value;
                     this.OnPropertyChanged("TileSetSource");
                 }
             }
         }
-        
-        [System.Xml.Serialization.XmlArrayItemAttribute("Watermark", IsNullable=false)]
-        public BindingList<WatermarkType> Watermarks {
-            get {
+
+        [System.Xml.Serialization.XmlArrayItemAttribute("Watermark", IsNullable = false)]
+        public BindingList<WatermarkType> Watermarks
+        {
+            get
+            {
                 return this.watermarksField;
             }
-            set {
-                if ((this.watermarksField != null)) {
-                    if ((watermarksField.Equals(value) != true)) {
+            set
+            {
+                if ((this.watermarksField != null))
+                {
+                    if ((watermarksField.Equals(value) != true))
+                    {
                         this.watermarksField = value;
                         this.OnPropertyChanged("Watermarks");
                     }
                 }
-                else {
+                else
+                {
                     this.watermarksField = value;
                     this.OnPropertyChanged("Watermarks");
                 }
             }
         }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
                     serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinitionType));
                 }
                 return serializer;
             }
         }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
+
         #region Serialize/Deserialize
         /// <summary>
         /// Serializes current MapDefinitionType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Deserializes workflow markup into an MapDefinitionType object
         /// </summary>
@@ -8841,71 +579,86 @@
         /// <param name="obj">Output MapDefinitionType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapDefinitionType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapDefinitionType obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(MapDefinitionType);
-            try {
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out MapDefinitionType obj) {
+
+        public static bool Deserialize(string xml, out MapDefinitionType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static MapDefinitionType Deserialize(string xml) {
+
+        public static MapDefinitionType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
                 return ((MapDefinitionType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Serializes current MapDefinitionType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Deserializes xml markup from file into an MapDefinitionType object
         /// </summary>
@@ -8913,28 +666,34 @@
         /// <param name="obj">Output MapDefinitionType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapDefinitionType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapDefinitionType obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(MapDefinitionType);
-            try {
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out MapDefinitionType obj) {
+
+        public static bool LoadFromFile(string fileName, out MapDefinitionType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static MapDefinitionType LoadFromFile(string fileName) {
+
+        public static MapDefinitionType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -8942,138 +701,170 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
         /// Create a clone of this MapDefinitionType object
         /// </summary>
-        public virtual MapDefinitionType Clone() {
+        public virtual MapDefinitionType Clone()
+        {
             return ((MapDefinitionType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class Box2DType : System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class Box2DType : System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private double minXField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private double maxXField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private double minYField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private double maxYField;
-        
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public double MinX {
-            get {
+
+        public double MinX
+        {
+            get
+            {
                 return this.minXField;
             }
-            set {
-                if ((minXField.Equals(value) != true)) {
+            set
+            {
+                if ((minXField.Equals(value) != true))
+                {
                     this.minXField = value;
                     this.OnPropertyChanged("MinX");
                 }
             }
         }
-        
-        public double MaxX {
-            get {
+
+        public double MaxX
+        {
+            get
+            {
                 return this.maxXField;
             }
-            set {
-                if ((maxXField.Equals(value) != true)) {
+            set
+            {
+                if ((maxXField.Equals(value) != true))
+                {
                     this.maxXField = value;
                     this.OnPropertyChanged("MaxX");
                 }
             }
         }
-        
-        public double MinY {
-            get {
+
+        public double MinY
+        {
+            get
+            {
                 return this.minYField;
             }
-            set {
-                if ((minYField.Equals(value) != true)) {
+            set
+            {
+                if ((minYField.Equals(value) != true))
+                {
                     this.minYField = value;
                     this.OnPropertyChanged("MinY");
                 }
             }
         }
-        
-        public double MaxY {
-            get {
+
+        public double MaxY
+        {
+            get
+            {
                 return this.maxYField;
             }
-            set {
-                if ((maxYField.Equals(value) != true)) {
+            set
+            {
+                if ((maxYField.Equals(value) != true))
+                {
                     this.maxYField = value;
                     this.OnPropertyChanged("MaxY");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
                     serializer = new System.Xml.Serialization.XmlSerializer(typeof(Box2DType));
                 }
                 return serializer;
             }
         }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
+
         #region Serialize/Deserialize
         /// <summary>
         /// Serializes current Box2DType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Deserializes workflow markup into an Box2DType object
         /// </summary>
@@ -9081,71 +872,86 @@
         /// <param name="obj">Output Box2DType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out Box2DType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out Box2DType obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(Box2DType);
-            try {
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out Box2DType obj) {
+
+        public static bool Deserialize(string xml, out Box2DType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static Box2DType Deserialize(string xml) {
+
+        public static Box2DType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
                 return ((Box2DType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Serializes current Box2DType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
         /// Deserializes xml markup from file into an Box2DType object
         /// </summary>
@@ -9153,28 +959,34 @@
         /// <param name="obj">Output Box2DType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out Box2DType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out Box2DType obj, out System.Exception exception)
+        {
             exception = null;
             obj = default(Box2DType);
-            try {
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out Box2DType obj) {
+
+        public static bool LoadFromFile(string fileName, out Box2DType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static Box2DType LoadFromFile(string fileName) {
+
+        public static Box2DType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -9182,727 +994,329 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
         /// Create a clone of this Box2DType object
         /// </summary>
-        public virtual Box2DType Clone() {
+        public virtual Box2DType Clone()
+        {
             return ((Box2DType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BaseMapLayerGroupCommonType))]
+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MapLayerGroupType))]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class MapLayerType : MapLayerCommonType, System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class MapLayerGroupCommonType : System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private bool visibleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private string groupField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public bool Visible {
-            get {
-                return this.visibleField;
-            }
-            set {
-                if ((visibleField.Equals(value) != true)) {
-                    this.visibleField = value;
-                    this.OnPropertyChanged("Visible");
-                }
-            }
-        }
-        
-        public string Group {
-            get {
-                return this.groupField;
-            }
-            set {
-                if ((this.groupField != null)) {
-                    if ((groupField.Equals(value) != true)) {
-                        this.groupField = value;
-                        this.OnPropertyChanged("Group");
-                    }
-                }
-                else {
-                    this.groupField = value;
-                    this.OnPropertyChanged("Group");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerType));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current MapLayerType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an MapLayerType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapLayerType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapLayerType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapLayerType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out MapLayerType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static MapLayerType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((MapLayerType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current MapLayerType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an MapLayerType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapLayerType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapLayerType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapLayerType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out MapLayerType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static MapLayerType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this MapLayerType object
-        /// </summary>
-        public virtual MapLayerType Clone() {
-            return ((MapLayerType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BaseMapLayerType))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MapLayerType))]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class MapLayerCommonType : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
         private string nameField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private string resourceIdField;
-        
+        private bool visibleField;
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private bool selectableField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
         private bool showInLegendField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private string legendLabelField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
         private bool expandInLegendField;
-        
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string legendLabelField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string Name {
-            get {
+
+        public string Name
+        {
+            get
+            {
                 return this.nameField;
             }
-            set {
-                if ((this.nameField != null)) {
-                    if ((nameField.Equals(value) != true)) {
+            set
+            {
+                if ((this.nameField != null))
+                {
+                    if ((nameField.Equals(value) != true))
+                    {
                         this.nameField = value;
                         this.OnPropertyChanged("Name");
                     }
                 }
-                else {
+                else
+                {
                     this.nameField = value;
                     this.OnPropertyChanged("Name");
                 }
             }
         }
-        
-        public string ResourceId {
-            get {
-                return this.resourceIdField;
+
+        public bool Visible
+        {
+            get
+            {
+                return this.visibleField;
             }
-            set {
-                if ((this.resourceIdField != null)) {
-                    if ((resourceIdField.Equals(value) != true)) {
-                        this.resourceIdField = value;
-                        this.OnPropertyChanged("ResourceId");
-                    }
+            set
+            {
+                if ((visibleField.Equals(value) != true))
+                {
+                    this.visibleField = value;
+                    this.OnPropertyChanged("Visible");
                 }
-                else {
-                    this.resourceIdField = value;
-                    this.OnPropertyChanged("ResourceId");
-                }
             }
         }
-        
-        public bool Selectable {
-            get {
-                return this.selectableField;
-            }
-            set {
-                if ((selectableField.Equals(value) != true)) {
-                    this.selectableField = value;
-                    this.OnPropertyChanged("Selectable");
-                }
-            }
-        }
-        
-        public bool ShowInLegend {
-            get {
+
+        public bool ShowInLegend
+        {
+            get
+            {
                 return this.showInLegendField;
             }
-            set {
-                if ((showInLegendField.Equals(value) != true)) {
+            set
+            {
+                if ((showInLegendField.Equals(value) != true))
+                {
                     this.showInLegendField = value;
                     this.OnPropertyChanged("ShowInLegend");
                 }
             }
         }
-        
-        public string LegendLabel {
-            get {
-                return this.legendLabelField;
-            }
-            set {
-                if ((this.legendLabelField != null)) {
-                    if ((legendLabelField.Equals(value) != true)) {
-                        this.legendLabelField = value;
-                        this.OnPropertyChanged("LegendLabel");
-                    }
-                }
-                else {
-                    this.legendLabelField = value;
-                    this.OnPropertyChanged("LegendLabel");
-                }
-            }
-        }
-        
-        public bool ExpandInLegend {
-            get {
+
+        public bool ExpandInLegend
+        {
+            get
+            {
                 return this.expandInLegendField;
             }
-            set {
-                if ((expandInLegendField.Equals(value) != true)) {
+            set
+            {
+                if ((expandInLegendField.Equals(value) != true))
+                {
                     this.expandInLegendField = value;
                     this.OnPropertyChanged("ExpandInLegend");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerCommonType));
-                }
-                return serializer;
+
+        public string LegendLabel
+        {
+            get
+            {
+                return this.legendLabelField;
             }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current MapLayerCommonType object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an MapLayerCommonType object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapLayerCommonType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapLayerCommonType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapLayerCommonType);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out MapLayerCommonType obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static MapLayerCommonType Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((MapLayerCommonType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current MapLayerCommonType object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an MapLayerCommonType object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapLayerCommonType object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapLayerCommonType obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapLayerCommonType);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out MapLayerCommonType obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static MapLayerCommonType LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this MapLayerCommonType object
-        /// </summary>
-        public virtual MapLayerCommonType Clone() {
-            return ((MapLayerCommonType)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class BaseMapLayerType : MapLayerCommonType, System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
+            set
+            {
+                if ((this.legendLabelField != null))
+                {
+                    if ((legendLabelField.Equals(value) != true))
+                    {
+                        this.legendLabelField = value;
+                        this.OnPropertyChanged("LegendLabel");
                     }
                 }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
+                else
+                {
+                    this.legendLabelField = value;
+                    this.OnPropertyChanged("LegendLabel");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(BaseMapLayerType));
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerGroupCommonType));
                 }
                 return serializer;
             }
         }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current BaseMapLayerType object into an XML document
+        /// Serializes current MapLayerGroupCommonType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an BaseMapLayerType object
+        /// Deserializes workflow markup into an MapLayerGroupCommonType object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output BaseMapLayerType object</param>
+        /// <param name="obj">Output MapLayerGroupCommonType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out BaseMapLayerType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapLayerGroupCommonType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(BaseMapLayerType);
-            try {
+            obj = default(MapLayerGroupCommonType);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out BaseMapLayerType obj) {
+
+        public static bool Deserialize(string xml, out MapLayerGroupCommonType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static BaseMapLayerType Deserialize(string xml) {
+
+        public static MapLayerGroupCommonType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((BaseMapLayerType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((MapLayerGroupCommonType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current BaseMapLayerType object into file
+        /// Serializes current MapLayerGroupCommonType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an BaseMapLayerType object
+        /// Deserializes xml markup from file into an MapLayerGroupCommonType object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output BaseMapLayerType object</param>
+        /// <param name="obj">Output MapLayerGroupCommonType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out BaseMapLayerType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapLayerGroupCommonType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(BaseMapLayerType);
-            try {
+            obj = default(MapLayerGroupCommonType);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out BaseMapLayerType obj) {
+
+        public static bool LoadFromFile(string fileName, out MapLayerGroupCommonType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static BaseMapLayerType LoadFromFile(string fileName) {
+
+        public static MapLayerGroupCommonType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -9910,221 +1324,242 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this BaseMapLayerType object
+        /// Create a clone of this MapLayerGroupCommonType object
         /// </summary>
-        public virtual BaseMapLayerType Clone() {
-            return ((BaseMapLayerType)(this.MemberwiseClone()));
+        public virtual MapLayerGroupCommonType Clone()
+        {
+            return ((MapLayerGroupCommonType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class MapLayerGroupType : MapLayerGroupCommonType, System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class BaseMapLayerGroupCommonType : MapLayerGroupCommonType, System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private string groupField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
+        private BindingList<BaseMapLayerType> baseMapLayerField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string Group {
-            get {
-                return this.groupField;
+
+        [System.Xml.Serialization.XmlElementAttribute("BaseMapLayer")]
+        public BindingList<BaseMapLayerType> BaseMapLayer
+        {
+            get
+            {
+                return this.baseMapLayerField;
             }
-            set {
-                if ((this.groupField != null)) {
-                    if ((groupField.Equals(value) != true)) {
-                        this.groupField = value;
-                        this.OnPropertyChanged("Group");
+            set
+            {
+                if ((this.baseMapLayerField != null))
+                {
+                    if ((baseMapLayerField.Equals(value) != true))
+                    {
+                        this.baseMapLayerField = value;
+                        this.OnPropertyChanged("BaseMapLayer");
                     }
                 }
-                else {
-                    this.groupField = value;
-                    this.OnPropertyChanged("Group");
+                else
+                {
+                    this.baseMapLayerField = value;
+                    this.OnPropertyChanged("BaseMapLayer");
                 }
             }
         }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(BaseMapLayerGroupCommonType));
                 }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerGroupType));
-                }
                 return serializer;
             }
         }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
+
+        //public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        //public virtual void OnPropertyChanged(string info) {
+        //    System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+        //    if ((handler != null)) {
+        //        handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+        //    }
+        //}
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current MapLayerGroupType object into an XML document
+        /// Serializes current BaseMapLayerGroupCommonType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an MapLayerGroupType object
+        /// Deserializes workflow markup into an BaseMapLayerGroupCommonType object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapLayerGroupType object</param>
+        /// <param name="obj">Output BaseMapLayerGroupCommonType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapLayerGroupType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out BaseMapLayerGroupCommonType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapLayerGroupType);
-            try {
+            obj = default(BaseMapLayerGroupCommonType);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out MapLayerGroupType obj) {
+
+        public static bool Deserialize(string xml, out BaseMapLayerGroupCommonType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static MapLayerGroupType Deserialize(string xml) {
+
+        public static BaseMapLayerGroupCommonType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((MapLayerGroupType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((BaseMapLayerGroupCommonType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current MapLayerGroupType object into file
+        /// Serializes current BaseMapLayerGroupCommonType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an MapLayerGroupType object
+        /// Deserializes xml markup from file into an BaseMapLayerGroupCommonType object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapLayerGroupType object</param>
+        /// <param name="obj">Output BaseMapLayerGroupCommonType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapLayerGroupType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out BaseMapLayerGroupCommonType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapLayerGroupType);
-            try {
+            obj = default(BaseMapLayerGroupCommonType);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out MapLayerGroupType obj) {
+
+        public static bool LoadFromFile(string fileName, out BaseMapLayerGroupCommonType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static MapLayerGroupType LoadFromFile(string fileName) {
+
+        public static BaseMapLayerGroupCommonType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -10132,268 +1567,355 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this MapLayerGroupType object
+        /// Create a clone of this BaseMapLayerGroupCommonType object
         /// </summary>
-        public virtual MapLayerGroupType Clone() {
-            return ((MapLayerGroupType)(this.MemberwiseClone()));
+        public virtual BaseMapLayerGroupCommonType Clone()
+        {
+            return ((BaseMapLayerGroupCommonType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(BaseMapLayerGroupType))]
-    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MapLayerGroupType))]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(MapLayerType))]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class MapLayerGroupCommonType : System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class BaseMapLayerType : System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
         private string nameField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private bool visibleField;
-        
+        private string resourceIdField;
+
         [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool selectableField;
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
         private bool showInLegendField;
-        
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private bool expandInLegendField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
         private string legendLabelField;
-        
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool expandInLegendField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string Name {
-            get {
+
+        public string Name
+        {
+            get
+            {
                 return this.nameField;
             }
-            set {
-                if ((this.nameField != null)) {
-                    if ((nameField.Equals(value) != true)) {
+            set
+            {
+                if ((this.nameField != null))
+                {
+                    if ((nameField.Equals(value) != true))
+                    {
                         this.nameField = value;
                         this.OnPropertyChanged("Name");
                     }
                 }
-                else {
+                else
+                {
                     this.nameField = value;
                     this.OnPropertyChanged("Name");
                 }
             }
         }
-        
-        public bool Visible {
-            get {
-                return this.visibleField;
+
+        public string ResourceId
+        {
+            get
+            {
+                return this.resourceIdField;
             }
-            set {
-                if ((visibleField.Equals(value) != true)) {
-                    this.visibleField = value;
-                    this.OnPropertyChanged("Visible");
+            set
+            {
+                if ((this.resourceIdField != null))
+                {
+                    if ((resourceIdField.Equals(value) != true))
+                    {
+                        this.resourceIdField = value;
+                        this.OnPropertyChanged("ResourceId");
+                    }
                 }
+                else
+                {
+                    this.resourceIdField = value;
+                    this.OnPropertyChanged("ResourceId");
+                }
             }
         }
-        
-        public bool ShowInLegend {
-            get {
-                return this.showInLegendField;
+
+        public bool Selectable
+        {
+            get
+            {
+                return this.selectableField;
             }
-            set {
-                if ((showInLegendField.Equals(value) != true)) {
-                    this.showInLegendField = value;
-                    this.OnPropertyChanged("ShowInLegend");
+            set
+            {
+                if ((selectableField.Equals(value) != true))
+                {
+                    this.selectableField = value;
+                    this.OnPropertyChanged("Selectable");
                 }
             }
         }
-        
-        public bool ExpandInLegend {
-            get {
-                return this.expandInLegendField;
+
+        public bool ShowInLegend
+        {
+            get
+            {
+                return this.showInLegendField;
             }
-            set {
-                if ((expandInLegendField.Equals(value) != true)) {
-                    this.expandInLegendField = value;
-                    this.OnPropertyChanged("ExpandInLegend");
+            set
+            {
+                if ((showInLegendField.Equals(value) != true))
+                {
+                    this.showInLegendField = value;
+                    this.OnPropertyChanged("ShowInLegend");
                 }
             }
         }
-        
-        public string LegendLabel {
-            get {
+
+        public string LegendLabel
+        {
+            get
+            {
                 return this.legendLabelField;
             }
-            set {
-                if ((this.legendLabelField != null)) {
-                    if ((legendLabelField.Equals(value) != true)) {
+            set
+            {
+                if ((this.legendLabelField != null))
+                {
+                    if ((legendLabelField.Equals(value) != true))
+                    {
                         this.legendLabelField = value;
                         this.OnPropertyChanged("LegendLabel");
                     }
                 }
-                else {
+                else
+                {
                     this.legendLabelField = value;
                     this.OnPropertyChanged("LegendLabel");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerGroupCommonType));
+
+        public bool ExpandInLegend
+        {
+            get
+            {
+                return this.expandInLegendField;
+            }
+            set
+            {
+                if ((expandInLegendField.Equals(value) != true))
+                {
+                    this.expandInLegendField = value;
+                    this.OnPropertyChanged("ExpandInLegend");
                 }
+            }
+        }
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(BaseMapLayerType));
+                }
                 return serializer;
             }
         }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current MapLayerGroupCommonType object into an XML document
+        /// Serializes current BaseMapLayerType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an MapLayerGroupCommonType object
+        /// Deserializes workflow markup into an BaseMapLayerType object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapLayerGroupCommonType object</param>
+        /// <param name="obj">Output BaseMapLayerType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapLayerGroupCommonType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out BaseMapLayerType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapLayerGroupCommonType);
-            try {
+            obj = default(BaseMapLayerType);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out MapLayerGroupCommonType obj) {
+
+        public static bool Deserialize(string xml, out BaseMapLayerType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static MapLayerGroupCommonType Deserialize(string xml) {
+
+        public static BaseMapLayerType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((MapLayerGroupCommonType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((BaseMapLayerType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current MapLayerGroupCommonType object into file
+        /// Serializes current BaseMapLayerType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an MapLayerGroupCommonType object
+        /// Deserializes xml markup from file into an BaseMapLayerType object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapLayerGroupCommonType object</param>
+        /// <param name="obj">Output BaseMapLayerType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapLayerGroupCommonType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out BaseMapLayerType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapLayerGroupCommonType);
-            try {
+            obj = default(BaseMapLayerType);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out MapLayerGroupCommonType obj) {
+
+        public static bool LoadFromFile(string fileName, out BaseMapLayerType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static MapLayerGroupCommonType LoadFromFile(string fileName) {
+
+        public static BaseMapLayerType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -10401,222 +1923,260 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this MapLayerGroupCommonType object
+        /// Create a clone of this BaseMapLayerType object
         /// </summary>
-        public virtual MapLayerGroupCommonType Clone() {
-            return ((MapLayerGroupCommonType)(this.MemberwiseClone()));
+        public virtual BaseMapLayerType Clone()
+        {
+            return ((BaseMapLayerType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
-    public partial class BaseMapLayerGroupType : MapLayerGroupCommonType, System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class MapLayerType : BaseMapLayerType, System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<BaseMapLayerType> baseMapLayerField;
-        
+        private bool visibleField;
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
+        private string groupField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("BaseMapLayer")]
-        public BindingList<BaseMapLayerType> BaseMapLayer {
-            get {
-                return this.baseMapLayerField;
+
+        public bool Visible
+        {
+            get
+            {
+                return this.visibleField;
             }
-            set {
-                if ((this.baseMapLayerField != null)) {
-                    if ((baseMapLayerField.Equals(value) != true)) {
-                        this.baseMapLayerField = value;
-                        this.OnPropertyChanged("BaseMapLayer");
-                    }
+            set
+            {
+                if ((visibleField.Equals(value) != true))
+                {
+                    this.visibleField = value;
+                    this.OnPropertyChanged("Visible");
                 }
-                else {
-                    this.baseMapLayerField = value;
-                    this.OnPropertyChanged("BaseMapLayer");
-                }
             }
         }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
+
+        public string Group
+        {
+            get
+            {
+                return this.groupField;
             }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
+            set
+            {
+                if ((this.groupField != null))
+                {
+                    if ((groupField.Equals(value) != true))
+                    {
+                        this.groupField = value;
+                        this.OnPropertyChanged("Group");
                     }
                 }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
+                else
+                {
+                    this.groupField = value;
+                    this.OnPropertyChanged("Group");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(BaseMapLayerGroupType));
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerType));
                 }
                 return serializer;
             }
         }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
+
+        //public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        //public virtual void OnPropertyChanged(string info) {
+        //    System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+        //    if ((handler != null)) {
+        //        handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+        //    }
+        //}
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current BaseMapLayerGroupType object into an XML document
+        /// Serializes current MapLayerType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an BaseMapLayerGroupType object
+        /// Deserializes workflow markup into an MapLayerType object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output BaseMapLayerGroupType object</param>
+        /// <param name="obj">Output MapLayerType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out BaseMapLayerGroupType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapLayerType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(BaseMapLayerGroupType);
-            try {
+            obj = default(MapLayerType);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out BaseMapLayerGroupType obj) {
+
+        public static bool Deserialize(string xml, out MapLayerType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static BaseMapLayerGroupType Deserialize(string xml) {
+
+        public static MapLayerType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((BaseMapLayerGroupType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((MapLayerType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current BaseMapLayerGroupType object into file
+        /// Serializes current MapLayerType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an BaseMapLayerGroupType object
+        /// Deserializes xml markup from file into an MapLayerType object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output BaseMapLayerGroupType object</param>
+        /// <param name="obj">Output MapLayerType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out BaseMapLayerGroupType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapLayerType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(BaseMapLayerGroupType);
-            try {
+            obj = default(MapLayerType);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out BaseMapLayerGroupType obj) {
+
+        public static bool LoadFromFile(string fileName, out MapLayerType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static BaseMapLayerGroupType LoadFromFile(string fileName) {
+
+        public static MapLayerType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -10624,223 +2184,241 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this BaseMapLayerGroupType object
+        /// Create a clone of this MapLayerType object
         /// </summary>
-        public virtual BaseMapLayerGroupType Clone() {
-            return ((BaseMapLayerGroupType)(this.MemberwiseClone()));
+        public virtual MapLayerType Clone()
+        {
+            return ((MapLayerType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    public partial class MapDefinitionTypeBaseMapDefinition : System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)]
+    public partial class MapLayerGroupType : MapLayerGroupCommonType, System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<double> finiteDisplayScaleField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private BindingList<BaseMapLayerGroupType> baseMapLayerGroupField;
-        
+        private string groupField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("FiniteDisplayScale")]
-        public BindingList<double> FiniteDisplayScale {
-            get {
-                return this.finiteDisplayScaleField;
+
+        public string Group
+        {
+            get
+            {
+                return this.groupField;
             }
-            set {
-                if ((this.finiteDisplayScaleField != null)) {
-                    if ((finiteDisplayScaleField.Equals(value) != true)) {
-                        this.finiteDisplayScaleField = value;
-                        this.OnPropertyChanged("FiniteDisplayScale");
+            set
+            {
+                if ((this.groupField != null))
+                {
+                    if ((groupField.Equals(value) != true))
+                    {
+                        this.groupField = value;
+                        this.OnPropertyChanged("Group");
                     }
                 }
-                else {
-                    this.finiteDisplayScaleField = value;
-                    this.OnPropertyChanged("FiniteDisplayScale");
+                else
+                {
+                    this.groupField = value;
+                    this.OnPropertyChanged("Group");
                 }
             }
         }
-        
-        [System.Xml.Serialization.XmlElementAttribute("BaseMapLayerGroup")]
-        public BindingList<BaseMapLayerGroupType> BaseMapLayerGroup {
-            get {
-                return this.baseMapLayerGroupField;
-            }
-            set {
-                if ((this.baseMapLayerGroupField != null)) {
-                    if ((baseMapLayerGroupField.Equals(value) != true)) {
-                        this.baseMapLayerGroupField = value;
-                        this.OnPropertyChanged("BaseMapLayerGroup");
-                    }
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapLayerGroupType));
                 }
-                else {
-                    this.baseMapLayerGroupField = value;
-                    this.OnPropertyChanged("BaseMapLayerGroup");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinitionTypeBaseMapDefinition));
-                }
                 return serializer;
             }
         }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
+
+        //public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        //public virtual void OnPropertyChanged(string info) {
+        //    System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+        //    if ((handler != null)) {
+        //        handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+        //    }
+        //}
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current MapDefinitionTypeBaseMapDefinition object into an XML document
+        /// Serializes current MapLayerGroupType object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an MapDefinitionTypeBaseMapDefinition object
+        /// Deserializes workflow markup into an MapLayerGroupType object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapDefinitionTypeBaseMapDefinition object</param>
+        /// <param name="obj">Output MapLayerGroupType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapDefinitionTypeBaseMapDefinition obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapLayerGroupType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapDefinitionTypeBaseMapDefinition);
-            try {
+            obj = default(MapLayerGroupType);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out MapDefinitionTypeBaseMapDefinition obj) {
+
+        public static bool Deserialize(string xml, out MapLayerGroupType obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static MapDefinitionTypeBaseMapDefinition Deserialize(string xml) {
+
+        public static MapLayerGroupType Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((MapDefinitionTypeBaseMapDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((MapLayerGroupType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current MapDefinitionTypeBaseMapDefinition object into file
+        /// Serializes current MapLayerGroupType object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an MapDefinitionTypeBaseMapDefinition object
+        /// Deserializes xml markup from file into an MapLayerGroupType object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapDefinitionTypeBaseMapDefinition object</param>
+        /// <param name="obj">Output MapLayerGroupType object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapDefinitionTypeBaseMapDefinition obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapLayerGroupType obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(MapDefinitionTypeBaseMapDefinition);
-            try {
+            obj = default(MapLayerGroupType);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out MapDefinitionTypeBaseMapDefinition obj) {
+
+        public static bool LoadFromFile(string fileName, out MapLayerGroupType obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static MapDefinitionTypeBaseMapDefinition LoadFromFile(string fileName) {
+
+        public static MapLayerGroupType LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -10848,504 +2426,313 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this MapDefinitionTypeBaseMapDefinition object
+        /// Create a clone of this MapLayerGroupType object
         /// </summary>
-        public virtual MapDefinitionTypeBaseMapDefinition Clone() {
-            return ((MapDefinitionTypeBaseMapDefinition)(this.MemberwiseClone()));
+        public virtual MapLayerGroupType Clone()
+        {
+            return ((MapLayerGroupType)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    public partial class MapDefinitionTypeTileSetSource : System.ComponentModel.INotifyPropertyChanged {
-        
+
+    public partial class MapDefinitionTypeTileSetSource : System.ComponentModel.INotifyPropertyChanged
+    {
         [EditorBrowsable(EditorBrowsableState.Never)]
         private string resourceIdField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public string ResourceId {
-            get {
+
+        public string ResourceId
+        {
+            get
+            {
                 return this.resourceIdField;
             }
-            set {
-                if ((this.resourceIdField != null)) {
-                    if ((resourceIdField.Equals(value) != true)) {
+            set
+            {
+                if ((this.resourceIdField != null))
+                {
+                    if ((resourceIdField.Equals(value) != true))
+                    {
                         this.resourceIdField = value;
                         this.OnPropertyChanged("ResourceId");
                     }
                 }
-                else {
+                else
+                {
                     this.resourceIdField = value;
                     this.OnPropertyChanged("ResourceId");
                 }
             }
         }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinitionTypeTileSetSource));
-                }
-                return serializer;
-            }
-        }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current MapDefinitionTypeTileSetSource object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an MapDefinitionTypeTileSetSource object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output MapDefinitionTypeTileSetSource object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out MapDefinitionTypeTileSetSource obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapDefinitionTypeTileSetSource);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out MapDefinitionTypeTileSetSource obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static MapDefinitionTypeTileSetSource Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((MapDefinitionTypeTileSetSource)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current MapDefinitionTypeTileSetSource object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an MapDefinitionTypeTileSetSource object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output MapDefinitionTypeTileSetSource object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out MapDefinitionTypeTileSetSource obj, out System.Exception exception) {
-            exception = null;
-            obj = default(MapDefinitionTypeTileSetSource);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out MapDefinitionTypeTileSetSource obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static MapDefinitionTypeTileSetSource LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this MapDefinitionTypeTileSetSource object
-        /// </summary>
-        public virtual MapDefinitionTypeTileSetSource Clone() {
-            return ((MapDefinitionTypeTileSetSource)(this.MemberwiseClone()));
-        }
-        #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.33572")]
     [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
-    public partial class WatermarkType : System.ComponentModel.INotifyPropertyChanged {
-        
+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+    public partial class MapDefinitionTypeBaseMapDefinition : System.ComponentModel.INotifyPropertyChanged
+    {
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private string nameField;
-        
+        private BindingList<double> finiteDisplayScaleField;
+
         [EditorBrowsable(EditorBrowsableState.Never)]
-        private string resourceIdField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private UsageType usageField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private WatermarkAppearanceType appearanceOverrideField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private WatermarkTypePositionOverride positionOverrideField;
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private ExtendedDataType extendedData1Field;
-        
+        private BindingList<BaseMapLayerGroupCommonType> baseMapLayerGroupField;
+
         private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        public WatermarkType() {
-            this.usageField = UsageType.All;
-        }
-        
-        public string Name {
-            get {
-                return this.nameField;
+
+        [System.Xml.Serialization.XmlElementAttribute("FiniteDisplayScale")]
+        public BindingList<double> FiniteDisplayScale
+        {
+            get
+            {
+                return this.finiteDisplayScaleField;
             }
-            set {
-                if ((this.nameField != null)) {
-                    if ((nameField.Equals(value) != true)) {
-                        this.nameField = value;
-                        this.OnPropertyChanged("Name");
+            set
+            {
+                if ((this.finiteDisplayScaleField != null))
+                {
+                    if ((finiteDisplayScaleField.Equals(value) != true))
+                    {
+                        this.finiteDisplayScaleField = value;
+                        this.OnPropertyChanged("FiniteDisplayScale");
                     }
                 }
-                else {
-                    this.nameField = value;
-                    this.OnPropertyChanged("Name");
+                else
+                {
+                    this.finiteDisplayScaleField = value;
+                    this.OnPropertyChanged("FiniteDisplayScale");
                 }
             }
         }
-        
-        public string ResourceId {
-            get {
-                return this.resourceIdField;
+
+        [System.Xml.Serialization.XmlElementAttribute("BaseMapLayerGroup")]
+        public BindingList<BaseMapLayerGroupCommonType> BaseMapLayerGroup
+        {
+            get
+            {
+                return this.baseMapLayerGroupField;
             }
-            set {
-                if ((this.resourceIdField != null)) {
-                    if ((resourceIdField.Equals(value) != true)) {
-                        this.resourceIdField = value;
-                        this.OnPropertyChanged("ResourceId");
+            set
+            {
+                if ((this.baseMapLayerGroupField != null))
+                {
+                    if ((baseMapLayerGroupField.Equals(value) != true))
+                    {
+                        this.baseMapLayerGroupField = value;
+                        this.OnPropertyChanged("BaseMapLayerGroup");
                     }
                 }
-                else {
-                    this.resourceIdField = value;
-                    this.OnPropertyChanged("ResourceId");
+                else
+                {
+                    this.baseMapLayerGroupField = value;
+                    this.OnPropertyChanged("BaseMapLayerGroup");
                 }
             }
         }
-        
-        [System.ComponentModel.DefaultValueAttribute(UsageType.All)]
-        public UsageType Usage {
-            get {
-                return this.usageField;
-            }
-            set {
-                if ((usageField.Equals(value) != true)) {
-                    this.usageField = value;
-                    this.OnPropertyChanged("Usage");
+
+        private static System.Xml.Serialization.XmlSerializer Serializer
+        {
+            get
+            {
+                if ((serializer == null))
+                {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(MapDefinitionTypeBaseMapDefinition));
                 }
-            }
-        }
-        
-        public WatermarkAppearanceType AppearanceOverride {
-            get {
-                return this.appearanceOverrideField;
-            }
-            set {
-                if ((this.appearanceOverrideField != null)) {
-                    if ((appearanceOverrideField.Equals(value) != true)) {
-                        this.appearanceOverrideField = value;
-                        this.OnPropertyChanged("AppearanceOverride");
-                    }
-                }
-                else {
-                    this.appearanceOverrideField = value;
-                    this.OnPropertyChanged("AppearanceOverride");
-                }
-            }
-        }
-        
-        public WatermarkTypePositionOverride PositionOverride {
-            get {
-                return this.positionOverrideField;
-            }
-            set {
-                if ((this.positionOverrideField != null)) {
-                    if ((positionOverrideField.Equals(value) != true)) {
-                        this.positionOverrideField = value;
-                        this.OnPropertyChanged("PositionOverride");
-                    }
-                }
-                else {
-                    this.positionOverrideField = value;
-                    this.OnPropertyChanged("PositionOverride");
-                }
-            }
-        }
-        
-        public ExtendedDataType ExtendedData1 {
-            get {
-                return this.extendedData1Field;
-            }
-            set {
-                if ((this.extendedData1Field != null)) {
-                    if ((extendedData1Field.Equals(value) != true)) {
-                        this.extendedData1Field = value;
-                        this.OnPropertyChanged("ExtendedData1");
-                    }
-                }
-                else {
-                    this.extendedData1Field = value;
-                    this.OnPropertyChanged("ExtendedData1");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkType));
-                }
                 return serializer;
             }
         }
-        
+
         public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
+
+        public virtual void OnPropertyChanged(string info)
+        {
             System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            if ((handler != null))
+            {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
             }
         }
-        
+
         #region Serialize/Deserialize
         /// <summary>
-        /// Serializes current WatermarkType object into an XML document
+        /// Serializes current MapDefinitionTypeBaseMapDefinition object into an XML document
         /// </summary>
         /// <returns>string XML value</returns>
-        public virtual string Serialize() {
+        public virtual string Serialize()
+        {
             System.IO.StreamReader streamReader = null;
             System.IO.MemoryStream memoryStream = null;
-            try {
+            try
+            {
                 memoryStream = new System.IO.MemoryStream();
                 Serializer.Serialize(memoryStream, this);
                 memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
                 streamReader = new System.IO.StreamReader(memoryStream);
                 return streamReader.ReadToEnd();
             }
-            finally {
-                if ((streamReader != null)) {
+            finally
+            {
+                if ((streamReader != null))
+                {
                     streamReader.Dispose();
                 }
-                if ((memoryStream != null)) {
+                if ((memoryStream != null))
+                {
                     memoryStream.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes workflow markup into an WatermarkType object
+        /// Deserializes workflow markup into an MapDefinitionTypeBaseMapDefinition object
         /// </summary>
         /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkType object</param>
+        /// <param name="obj">Output MapDefinitionTypeBaseMapDefinition object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkType obj, out System.Exception exception) {
+        public static bool Deserialize(string xml, out MapDefinitionTypeBaseMapDefinition obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(WatermarkType);
-            try {
+            obj = default(MapDefinitionTypeBaseMapDefinition);
+            try
+            {
                 obj = Deserialize(xml);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool Deserialize(string xml, out WatermarkType obj) {
+
+        public static bool Deserialize(string xml, out MapDefinitionTypeBaseMapDefinition obj)
+        {
             System.Exception exception = null;
             return Deserialize(xml, out obj, out exception);
         }
-        
-        public static WatermarkType Deserialize(string xml) {
+
+        public static MapDefinitionTypeBaseMapDefinition Deserialize(string xml)
+        {
             System.IO.StringReader stringReader = null;
-            try {
+            try
+            {
                 stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+                return ((MapDefinitionTypeBaseMapDefinition)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
             }
-            finally {
-                if ((stringReader != null)) {
+            finally
+            {
+                if ((stringReader != null))
+                {
                     stringReader.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Serializes current WatermarkType object into file
+        /// Serializes current MapDefinitionTypeBaseMapDefinition object into file
         /// </summary>
         /// <param name="fileName">full path of outupt xml file</param>
         /// <param name="exception">output Exception value if failed</param>
         /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+        public virtual bool SaveToFile(string fileName, out System.Exception exception)
+        {
             exception = null;
-            try {
+            try
+            {
                 SaveToFile(fileName);
                 return true;
             }
-            catch (System.Exception e) {
+            catch (System.Exception e)
+            {
                 exception = e;
                 return false;
             }
         }
-        
-        public virtual void SaveToFile(string fileName) {
+
+        public virtual void SaveToFile(string fileName)
+        {
             System.IO.StreamWriter streamWriter = null;
-            try {
+            try
+            {
                 string xmlString = Serialize();
                 System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
                 streamWriter = xmlFile.CreateText();
                 streamWriter.WriteLine(xmlString);
                 streamWriter.Close();
             }
-            finally {
-                if ((streamWriter != null)) {
+            finally
+            {
+                if ((streamWriter != null))
+                {
                     streamWriter.Dispose();
                 }
             }
         }
-        
+
         /// <summary>
-        /// Deserializes xml markup from file into an WatermarkType object
+        /// Deserializes xml markup from file into an MapDefinitionTypeBaseMapDefinition object
         /// </summary>
         /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkType object</param>
+        /// <param name="obj">Output MapDefinitionTypeBaseMapDefinition object</param>
         /// <param name="exception">output Exception value if deserialize failed</param>
         /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkType obj, out System.Exception exception) {
+        public static bool LoadFromFile(string fileName, out MapDefinitionTypeBaseMapDefinition obj, out System.Exception exception)
+        {
             exception = null;
-            obj = default(WatermarkType);
-            try {
+            obj = default(MapDefinitionTypeBaseMapDefinition);
+            try
+            {
                 obj = LoadFromFile(fileName);
                 return true;
             }
-            catch (System.Exception ex) {
+            catch (System.Exception ex)
+            {
                 exception = ex;
                 return false;
             }
         }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkType obj) {
+
+        public static bool LoadFromFile(string fileName, out MapDefinitionTypeBaseMapDefinition obj)
+        {
             System.Exception exception = null;
             return LoadFromFile(fileName, out obj, out exception);
         }
-        
-        public static WatermarkType LoadFromFile(string fileName) {
+
+        public static MapDefinitionTypeBaseMapDefinition LoadFromFile(string fileName)
+        {
             System.IO.FileStream file = null;
             System.IO.StreamReader sr = null;
-            try {
+            try
+            {
                 file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
                 sr = new System.IO.StreamReader(file);
                 string xmlString = sr.ReadToEnd();
@@ -11353,241 +2740,28 @@
                 file.Close();
                 return Deserialize(xmlString);
             }
-            finally {
-                if ((file != null)) {
+            finally
+            {
+                if ((file != null))
+                {
                     file.Dispose();
                 }
-                if ((sr != null)) {
+                if ((sr != null))
+                {
                     sr.Dispose();
                 }
             }
         }
         #endregion
-        
+
         #region Clone method
         /// <summary>
-        /// Create a clone of this WatermarkType object
+        /// Create a clone of this MapDefinitionTypeBaseMapDefinition object
         /// </summary>
-        public virtual WatermarkType Clone() {
-            return ((WatermarkType)(this.MemberwiseClone()));
+        public virtual MapDefinitionTypeBaseMapDefinition Clone()
+        {
+            return ((MapDefinitionTypeBaseMapDefinition)(this.MemberwiseClone()));
         }
         #endregion
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    public enum UsageType {
-        
-        /// <remarks/>
-        WMS,
-        
-        /// <remarks/>
-        Viewer,
-        
-        /// <remarks/>
-        All,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.4.0.32990")]
-    [System.SerializableAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
-    public partial class WatermarkTypePositionOverride : System.ComponentModel.INotifyPropertyChanged {
-        
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        private PositionType itemField;
-        
-        private static System.Xml.Serialization.XmlSerializer serializer;
-        
-        [System.Xml.Serialization.XmlElementAttribute("TilePosition", typeof(TilePositionType))]
-        [System.Xml.Serialization.XmlElementAttribute("XYPosition", typeof(XYPositionType))]
-        public PositionType Item {
-            get {
-                return this.itemField;
-            }
-            set {
-                if ((this.itemField != null)) {
-                    if ((itemField.Equals(value) != true)) {
-                        this.itemField = value;
-                        this.OnPropertyChanged("Item");
-                    }
-                }
-                else {
-                    this.itemField = value;
-                    this.OnPropertyChanged("Item");
-                }
-            }
-        }
-        
-        private static System.Xml.Serialization.XmlSerializer Serializer {
-            get {
-                if ((serializer == null)) {
-                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(WatermarkTypePositionOverride));
-                }
-                return serializer;
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        public virtual void OnPropertyChanged(string propertyName) {
-            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
-            if ((handler != null)) {
-                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-        
-        #region Serialize/Deserialize
-        /// <summary>
-        /// Serializes current WatermarkTypePositionOverride object into an XML document
-        /// </summary>
-        /// <returns>string XML value</returns>
-        public virtual string Serialize() {
-            System.IO.StreamReader streamReader = null;
-            System.IO.MemoryStream memoryStream = null;
-            try {
-                memoryStream = new System.IO.MemoryStream();
-                Serializer.Serialize(memoryStream, this);
-                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
-                streamReader = new System.IO.StreamReader(memoryStream);
-                return streamReader.ReadToEnd();
-            }
-            finally {
-                if ((streamReader != null)) {
-                    streamReader.Dispose();
-                }
-                if ((memoryStream != null)) {
-                    memoryStream.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes workflow markup into an WatermarkTypePositionOverride object
-        /// </summary>
-        /// <param name="xml">string workflow markup to deserialize</param>
-        /// <param name="obj">Output WatermarkTypePositionOverride object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool Deserialize(string xml, out WatermarkTypePositionOverride obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkTypePositionOverride);
-            try {
-                obj = Deserialize(xml);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool Deserialize(string xml, out WatermarkTypePositionOverride obj) {
-            System.Exception exception = null;
-            return Deserialize(xml, out obj, out exception);
-        }
-        
-        public static WatermarkTypePositionOverride Deserialize(string xml) {
-            System.IO.StringReader stringReader = null;
-            try {
-                stringReader = new System.IO.StringReader(xml);
-                return ((WatermarkTypePositionOverride)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
-            }
-            finally {
-                if ((stringReader != null)) {
-                    stringReader.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Serializes current WatermarkTypePositionOverride object into file
-        /// </summary>
-        /// <param name="fileName">full path of outupt xml file</param>
-        /// <param name="exception">output Exception value if failed</param>
-        /// <returns>true if can serialize and save into file; otherwise, false</returns>
-        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
-            exception = null;
-            try {
-                SaveToFile(fileName);
-                return true;
-            }
-            catch (System.Exception e) {
-                exception = e;
-                return false;
-            }
-        }
-        
-        public virtual void SaveToFile(string fileName) {
-            System.IO.StreamWriter streamWriter = null;
-            try {
-                string xmlString = Serialize();
-                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
-                streamWriter = xmlFile.CreateText();
-                streamWriter.WriteLine(xmlString);
-                streamWriter.Close();
-            }
-            finally {
-                if ((streamWriter != null)) {
-                    streamWriter.Dispose();
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Deserializes xml markup from file into an WatermarkTypePositionOverride object
-        /// </summary>
-        /// <param name="fileName">string xml file to load and deserialize</param>
-        /// <param name="obj">Output WatermarkTypePositionOverride object</param>
-        /// <param name="exception">output Exception value if deserialize failed</param>
-        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
-        public static bool LoadFromFile(string fileName, out WatermarkTypePositionOverride obj, out System.Exception exception) {
-            exception = null;
-            obj = default(WatermarkTypePositionOverride);
-            try {
-                obj = LoadFromFile(fileName);
-                return true;
-            }
-            catch (System.Exception ex) {
-                exception = ex;
-                return false;
-            }
-        }
-        
-        public static bool LoadFromFile(string fileName, out WatermarkTypePositionOverride obj) {
-            System.Exception exception = null;
-            return LoadFromFile(fileName, out obj, out exception);
-        }
-        
-        public static WatermarkTypePositionOverride LoadFromFile(string fileName) {
-            System.IO.FileStream file = null;
-            System.IO.StreamReader sr = null;
-            try {
-                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
-                sr = new System.IO.StreamReader(file);
-                string xmlString = sr.ReadToEnd();
-                sr.Close();
-                file.Close();
-                return Deserialize(xmlString);
-            }
-            finally {
-                if ((file != null)) {
-                    file.Dispose();
-                }
-                if ((sr != null)) {
-                    sr.Dispose();
-                }
-            }
-        }
-        #endregion
-        
-        #region Clone method
-        /// <summary>
-        /// Create a clone of this WatermarkTypePositionOverride object
-        /// </summary>
-        public virtual WatermarkTypePositionOverride Clone() {
-            return ((WatermarkTypePositionOverride)(this.MemberwiseClone()));
-        }
-        #endregion
-    }
 }


Property changes on: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests
___________________________________________________________________
Modified: svn:ignore
   - bin
obj

   + bin
obj
*.user


Added: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/MapDefinitionTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/MapDefinitionTests.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/MapDefinitionTests.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -0,0 +1,77 @@
+#region Disclaimer / License
+
+// Copyright (C) 2014, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#endregion Disclaimer / License
+
+using NUnit.Framework;
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.MapDefinition;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.ObjectModel.Tests
+{
+    [TestFixture]
+    public class MapDefinitionTests
+    {
+        [Test]
+        public void CreateTest_V30()
+        {
+            var res = ObjectFactory.CreateMapDefinition(new Version(3, 0, 0), "TestMap");
+            Assert.IsInstanceOf<IMapDefinition3>(res);
+            IMapDefinition3 mdf = (IMapDefinition3)res;
+            Assert.AreEqual("TestMap", res.Name);
+            Assert.Null(mdf.BaseMap);
+            Assert.AreEqual(TileSourceType.None, mdf.TileSourceType);
+            Assert.Null(mdf.TileSetDefinitionID);
+
+            Assert.Throws<ArgumentException>(() => mdf.TileSetDefinitionID = "Library://Test.asgkjdsf");
+            mdf.TileSetDefinitionID = "Library://UnitTests/TileSets/Sheboygan.TileSetDefinition";
+
+            Assert.AreEqual("Library://UnitTests/TileSets/Sheboygan.TileSetDefinition", mdf.TileSetDefinitionID);
+            Assert.AreEqual(TileSourceType.External, mdf.TileSourceType);
+            mdf.InitBaseMap();
+            Assert.AreEqual(TileSourceType.Inline, mdf.TileSourceType);
+            Assert.Null(mdf.TileSetDefinitionID);
+        }
+
+        [Test]
+        public void DeserializationTest_V30()
+        {
+            var res = ObjectFactory.DeserializeXml(Properties.Resources.UT_LinkedTileSet);
+            Assert.IsInstanceOf<IMapDefinition3>(res);
+            IMapDefinition3 mdf = (IMapDefinition3)res;
+            Assert.AreEqual("Base Map linked to Tile Set", mdf.Name);
+            Assert.AreEqual("PROJCS[\"WGS84.PseudoMercator\",GEOGCS[\"LL84\",DATUM[\"WGS84\",SPHEROID[\"WGS84\",6378137.000,298.25722293]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Popular Visualisation Pseudo Mercator\"],PARAMETER[\"false_easting\",0.000],PARAMETER[\"false_northing\",0.000],PARAMETER[\"central_meridian\",0.00000000000000],UNIT[\"Meter\",1.00000000000000]]", mdf.CoordinateSystem);
+            Assert.NotNull(mdf.Extents);
+            var extent = mdf.Extents;
+            Assert.AreEqual(-9773613.7373958, extent.MinX);
+            Assert.AreEqual(5417109.9090669, extent.MinY);
+            Assert.AreEqual(-9758770.5921973, extent.MaxX);
+            Assert.AreEqual(5435129.2308673, extent.MaxY);
+            Assert.AreEqual(1, mdf.GetLayerCount());
+            Assert.NotNull(mdf.GetLayerByName("RoadCenterLines"));
+            Assert.AreEqual(TileSourceType.External, mdf.TileSourceType);
+            Assert.AreEqual("Library://UnitTests/TileSets/Sheboygan.TileSetDefinition", mdf.TileSetDefinitionID);
+        }
+    }
+}

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj	2014-12-29 14:25:02 UTC (rev 8483)
@@ -14,6 +14,21 @@
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\Maestro\</SolutionDir>
     <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -51,6 +66,7 @@
     <Compile Include="CheckTests.cs" />
     <Compile Include="DrawingSourceTests.cs" />
     <Compile Include="FeatureSourceTests.cs" />
+    <Compile Include="MapDefinitionTests.cs" />
     <Compile Include="ObjectFactoryTests.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Resources.Designer.cs">
@@ -87,6 +103,33 @@
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\UT_LinkedTileSet.mdf">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 4.5</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.Designer.cs	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.Designer.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -62,7 +62,7 @@
         
         /// <summary>
         ///   Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?>
-        ///<ApplicationDefinition>
+        ///<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
         ///  <Title>Title1</Title>
         ///  <TemplateUrl>TemplateUrl1</TemplateUrl>
         ///  <MapSet>
@@ -74,13 +74,7 @@
         ///      </InitialView>
         ///      <Map>
         ///        <Type>Type1</Type>
-        ///        <SingleTile>SingleTile1</SingleTile>
-        ///        <Extension />
-        ///      </Map>
-        ///      <Map>
-        ///        <Type>Type2</Type>
-        ///        <SingleTile>SingleTile2</SingleTile>
-        ///   [rest of string was truncated]";.
+        ///        < [rest of string was truncated]";.
         /// </summary>
         internal static string AppDef_1_0_0 {
             get {
@@ -133,5 +127,17 @@
                 return ResourceManager.GetString("FeatureSource_1_0_0", resourceCulture);
             }
         }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0" encoding="UTF-8"?>
+        ///<MapDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MapDefinition-3.0.0.xsd" version="3.0.0">
+        ///  <Name>Base Map linked to Tile Set</Name>
+        ///  <CoordinateSystem>PROJCS["WGS84.PseudoMercator",GEOGCS["LL84",DATUM["WGS84",SPHEROID["WGS84",6378137.000,298.25722293]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Popular Visualisation Pseudo Mercator"],PARAMETER["false_easting",0.000],PARAMETER["false_no [rest of string was truncated]";.
+        /// </summary>
+        internal static string UT_LinkedTileSet {
+            get {
+                return ResourceManager.GetString("UT_LinkedTileSet", resourceCulture);
+            }
+        }
     }
 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.resx	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Properties/Resources.resx	2014-12-29 14:25:02 UTC (rev 8483)
@@ -127,4 +127,7 @@
   <data name="FeatureSource_1_0_0" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\FeatureSource-1.0.0.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
+  <data name="UT_LinkedTileSet" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\UT_LinkedTileSet.mdf;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
 </root>
\ No newline at end of file

Added: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Resources/UT_LinkedTileSet.mdf
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Resources/UT_LinkedTileSet.mdf	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/Resources/UT_LinkedTileSet.mdf	2014-12-29 14:25:02 UTC (rev 8483)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MapDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MapDefinition-3.0.0.xsd" version="3.0.0">
+  <Name>Base Map linked to Tile Set</Name>
+  <CoordinateSystem>PROJCS["WGS84.PseudoMercator",GEOGCS["LL84",DATUM["WGS84",SPHEROID["WGS84",6378137.000,298.25722293]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Popular Visualisation Pseudo Mercator"],PARAMETER["false_easting",0.000],PARAMETER["false_northing",0.000],PARAMETER["central_meridian",0.00000000000000],UNIT["Meter",1.00000000000000]]</CoordinateSystem>
+  <Extents>
+    <MinX>-9773613.7373958</MinX>
+    <MaxX>-9758770.5921973</MaxX>
+    <MinY>5417109.9090669</MinY>
+    <MaxY>5435129.2308673</MaxY>
+  </Extents>
+  <BackgroundColor>FFF7E1D2</BackgroundColor>
+  <MapLayer>
+    <Name>RoadCenterLines</Name>
+    <ResourceId>Library://UnitTests/Layers/RoadCenterLines.LayerDefinition</ResourceId>
+    <Selectable>false</Selectable>
+    <ShowInLegend>true</ShowInLegend>
+    <LegendLabel>Road CenterLines</LegendLabel>
+    <ExpandInLegend>false</ExpandInLegend>
+    <Visible>true</Visible>
+    <Group></Group>
+  </MapLayer>
+  <TileSetSource>
+    <ResourceId>Library://UnitTests/TileSets/Sheboygan.TileSetDefinition</ResourceId>
+  </TileSetSource>
+</MapDefinition>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/MapDefinitionInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/MapDefinitionInterfaces.cs	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/MapDefinitionInterfaces.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -281,6 +281,41 @@
     }
 
     /// <summary>
+    /// Represents a Map Definition with support for linking to tile sets. Corresponds to schema version 3.0.0
+    /// </summary>
+    public interface IMapDefinition3 : IMapDefinition2
+    {
+        /// <summary>
+        /// Gets or sets the Tile Set Definition. When setting a tile set, any existing base map settings are removed
+        /// </summary>
+        string TileSetDefinitionID { get; set; }
+
+        /// <summary>
+        /// Gets the type of tile source
+        /// </summary>
+        TileSourceType TileSourceType { get; }
+    }
+
+    /// <summary>
+    /// Defines the type of tile source
+    /// </summary>
+    public enum TileSourceType
+    {
+        /// <summary>
+        /// The Map Definition links to an external tile set
+        /// </summary>
+        External,
+        /// <summary>
+        /// The tile layer/group settings are defined within the Map Definition
+        /// </summary>
+        Inline,
+        /// <summary>
+        /// No tile layer/group settings are defined
+        /// </summary>
+        None
+    }
+
+    /// <summary>
     /// Extension methdo class
     /// </summary>
     public static class BaseMapDefinitionExtensions

Added: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0/MapDefinitionImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0/MapDefinitionImpl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/MapDefinition/v3_0_0/MapDefinitionImpl.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -0,0 +1,987 @@
+#region Disclaimer / License
+
+// Copyright (C) 2014, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#endregion Disclaimer / License
+
+#define MDF_240
+using OSGeo.MapGuide.ObjectModels.Common;
+using OSGeo.MapGuide.ObjectModels.LayerDefinition;
+using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+
+#pragma warning disable 1591, 0114, 0108
+
+namespace OSGeo.MapGuide.ObjectModels.MapDefinition.v3_0_0
+{
+    partial class MapDefinitionType
+    {
+        internal MapDefinitionType()
+        {
+        }
+
+        [XmlIgnore]
+        public Color BackgroundColor
+        {
+            get
+            {
+                return this.backgroundColorField;
+            }
+            set
+            {
+                this.backgroundColorField = value;
+                OnPropertyChanged("BackgroundColor"); //NOXLATE
+            }
+        }
+
+        protected void DetachChangeListeners()
+        {
+            var handler = this.PropertyChanged;
+            if (handler != null)
+            {
+                foreach (var h in handler.GetInvocationList())
+                {
+                    this.PropertyChanged -= (PropertyChangedEventHandler)h;
+                }
+                handler = null;
+            }
+        }
+    }
+
+    public static class MdfEntryPoint
+    {
+        internal static MapDefinition CreateDefault()
+        {
+            return new MapDefinition()
+            {
+                Name = string.Empty,
+                CoordinateSystem = string.Empty,
+                Extents = new Box2DType() { MaxX = 0.0, MaxY = 0.0, MinX = 0.0, MinY = 0.0 },
+                BackgroundColor = Color.White,
+                MapLayer = new System.ComponentModel.BindingList<MapLayerType>(),
+                MapLayerGroup = new System.ComponentModel.BindingList<MapLayerGroupType>(),
+                Watermarks = new BindingList<OSGeo.MapGuide.ObjectModels.WatermarkDefinition.v2_4_0.WatermarkType>()
+            };
+        }
+
+        public static IResource Deserialize(string xml)
+        {
+            var mdf = MapDefinition.Deserialize(xml);
+            foreach (var group in mdf.MapLayerGroup)
+            {
+                group.Parent = mdf;
+            }
+            return mdf;
+        }
+
+        public static Stream Serialize(IResource res)
+        {
+            return res.SerializeToStream();
+        }
+    }
+
+    partial class MapDefinition : IMapDefinition3
+    {
+        internal MapDefinition()
+        {
+            this.versionField = "3.0.0"; //NOXLATE
+            this.SetExtentsFromFirstAddedLayer = false;
+        }
+
+        string IMapDefinition3.TileSetDefinitionID
+        {
+            get
+            {
+                if (this.TileSetSource != null)
+                    return this.TileSetSource.ResourceId;
+                return null;
+            }
+            set
+            {
+                if (value != null)
+                {
+                    Check.ThatPreconditionIsMet(value.EndsWith(".TileSetDefinition"), "value.EndsWith(\".TileSetDefinition\")");
+                    this.TileSetSource = new MapDefinitionTypeTileSetSource()
+                    {
+                        ResourceId = value
+                    };
+                }
+                this.BaseMapDefinition = null;
+            }
+        }
+
+        TileSourceType IMapDefinition3.TileSourceType
+        {
+            get
+            {
+                if (this.TileSetSource != null)
+                    return TileSourceType.External;
+                else if (this.BaseMapDefinition != null)
+                    return TileSourceType.Inline;
+                else
+                    return TileSourceType.None;
+            }
+        }
+
+        private static readonly Version RES_VERSION = new Version(3, 0, 0);
+
+        [XmlIgnore]
+        public bool SetExtentsFromFirstAddedLayer { get; set; }
+
+        private string _resId;
+
+        [XmlIgnore]
+        public string ResourceID
+        {
+            get
+            {
+                return _resId;
+            }
+            set
+            {
+                if (!ResourceIdentifier.Validate(value))
+                    throw new InvalidOperationException(Strings.ErrorInvalidResourceIdentifier);
+
+                var res = new ResourceIdentifier(value);
+                if (res.Extension != ResourceTypes.MapDefinition.ToString())
+                    throw new InvalidOperationException(string.Format(Strings.ErrorUnexpectedResourceType, res.ToString(), ResourceTypes.MapDefinition));
+
+                _resId = value;
+                this.OnPropertyChanged("ResourceID"); //NOXLATE
+            }
+        }
+
+        [XmlIgnore]
+        public virtual string ResourceType
+        {
+            get
+            {
+                return ResourceTypes.MapDefinition.ToString();
+            }
+        }
+
+        [XmlIgnore]
+        public Version ResourceVersion
+        {
+            get
+            {
+                return RES_VERSION;
+            }
+        }
+
+        internal void SortGroupList()
+        {
+        }
+
+        object ICloneable.Clone()
+        {
+            var mdf = this.Clone();
+            mdf.DetachChangeListeners();
+            return mdf;
+        }
+
+        [XmlAttribute("noNamespaceSchemaLocation", Namespace = "http://www.w3.org/2001/XMLSchema-instance")] //NOXLATE
+        public string ValidatingSchema
+        {
+            get { return "MapDefinition-3.0.0.xsd"; } //NOXLATE
+            set { }
+        }
+
+        [XmlIgnore]
+        public bool IsStronglyTyped
+        {
+            get { return true; }
+        }
+
+        /// <summary>
+        /// Inserts the layer at the specified index
+        /// </summary>
+        /// <param name="idx"></param>
+        /// <param name="layer"></param>
+        void IMapDefinition.InsertLayer(int idx, IMapLayer layer)
+        {
+            Check.ThatArgumentIsBetweenRange(idx, 0, this.MapLayer.Count, true, "idx (" + idx + ") between [" + 0 + "," + this.MapLayer.Count + "]"); //NOXLATE
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            var li = layer as MapLayerType;
+            if (li != null)
+            {
+                this.MapLayer.Insert(idx, li);
+                li.Parent = this;
+            }
+        }
+
+        void IMapDefinition.SetExtents(double minx, double miny, double maxx, double maxy)
+        {
+            if (this.Extents == null)
+            {
+                var ext = new Box2DType()
+                {
+                    MaxX = maxx,
+                    MaxY = maxy,
+                    MinX = minx,
+                    MinY = miny
+                };
+                this.Extents = ext;
+            }
+            else
+            {
+                this.Extents.MaxX = maxx;
+                this.Extents.MaxY = maxy;
+                this.Extents.MinX = minx;
+                this.Extents.MinY = miny;
+                OnPropertyChanged("Extents"); //NOXLATE
+            }
+        }
+
+        public IMapLayerGroup AddGroup(string groupName)
+        {
+            Check.ArgumentNotEmpty(groupName, "groupName"); //NOXLATE
+            Check.ThatPreconditionIsMet(this.GetGroupByName(groupName) == null, "<groupName> does not already exist"); //NOXLATE
+            if (this.MapLayerGroup == null)
+                this.MapLayerGroup = new System.ComponentModel.BindingList<MapLayerGroupType>();
+
+            var group = new MapLayerGroupType()
+            {
+                Parent = this,
+                ExpandInLegend = true,
+                LegendLabel = groupName,
+                Name = groupName,
+                ShowInLegend = true,
+                Visible = true,
+                Group = string.Empty
+            };
+            this.MapLayerGroup.Add(group);
+            OnPropertyChanged("MapLayerGroup"); //NOXLATE
+            return group;
+        }
+
+        public IMapLayer AddLayer(string groupName, string layerName, string layerDefinitionId)
+        {
+            Check.ArgumentNotEmpty(layerName, "layerName"); //NOXLATE
+            Check.ArgumentNotEmpty(layerDefinitionId, "layerDefinitionId"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.Validate(layerDefinitionId), "ResourceIdentifier.Validate(layerDefinitionId)"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString(), "ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString()"); //NOXLATE
+            if (!string.IsNullOrEmpty(groupName))
+            {
+                Check.ThatPreconditionIsMet(this.GetGroupByName(groupName) != null, "There should be an existing group for <groupName>"); //NOXLATE
+            }
+            var layer = new MapLayerType()
+            {
+                Parent = this,
+                ExpandInLegend = true,
+                LegendLabel = layerName,
+                Name = layerName,
+                ResourceId = layerDefinitionId,
+                ShowInLegend = true,
+                Visible = true,
+                Selectable = true
+            };
+            layer.Group = string.IsNullOrEmpty(groupName) ? string.Empty : groupName;
+
+            this.MapLayer.Insert(0, layer);
+            OnPropertyChanged("MapLayer"); //NOXLATE
+
+            if (this.MapLayer.Count == 1) //First one
+            {
+                OnFirstLayerAdded(layer);
+            }
+
+            return layer;
+        }
+
+        [XmlIgnore]
+        public ILayerExtentCalculator ExtentCalculator { get; set; }
+
+        private void OnFirstLayerAdded(MapLayerType layer)
+        {
+            //Do nothing if this is false
+            if (!this.SetExtentsFromFirstAddedLayer)
+                return;
+
+            var calc = this.ExtentCalculator;
+            if (calc != null)
+            {
+                var res = calc.GetLayerExtent(layer.ResourceId, this.CoordinateSystem);
+                if (res != null)
+                {
+                    //Set the coordinate system if empty
+                    if (string.IsNullOrEmpty(this.CoordinateSystem))
+                    {
+                        this.CoordinateSystem = res.LayerCoordinateSystem;
+                    }
+                    //Set the bounds if empty
+                    if (IsEmpty(this.Extents))
+                    {
+                        var env = res.Extent;
+                        ((IMapDefinition)this).SetExtents(env.MinX, env.MinY, env.MaxX, env.MaxY);
+                    }
+                }
+            }
+        }
+
+        public IMapLayer InsertLayer(int index, string groupName, string layerName, string layerDefinitionId)
+        {
+            Check.ThatArgumentIsBetweenRange(index, 0, this.MapLayer.Count, true, "index (" + index + ") between [" + 0 + "," + this.MapLayer.Count + "]");
+            Check.ArgumentNotEmpty(layerName, "layerName"); //NOXLATE
+            Check.ArgumentNotEmpty(layerDefinitionId, "layerDefinitionId"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.Validate(layerDefinitionId), "ResourceIdentifier.Validate(layerDefinitionId)"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString(), "ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString()"); //NOXLATE
+            if (!string.IsNullOrEmpty(groupName))
+            {
+                Check.ArgumentNotNull(this.GetGroupByName(groupName), "Group for <groupName>"); //NOXLATE
+            }
+            var layer = new MapLayerType()
+            {
+                Parent = this,
+                ExpandInLegend = true,
+                LegendLabel = layerName,
+                Name = layerName,
+                ResourceId = layerDefinitionId,
+                ShowInLegend = true,
+                Visible = true,
+                Selectable = true
+            };
+            layer.Group = string.IsNullOrEmpty(groupName) ? string.Empty : groupName;
+            this.MapLayer.Insert(index, layer);
+            return layer;
+        }
+
+        public IMapLayer AddLayer(IMapLayer layerToInsertAbove, string groupName, string layerName, string layerDefinitionId)
+        {
+            Check.ArgumentNotEmpty(layerName, "layerName"); //NOXLATE
+            Check.ArgumentNotEmpty(layerDefinitionId, "layerDefinitionId"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.Validate(layerDefinitionId), "ResourceIdentifier.Validate(layerDefinitionId)"); //NOXLATE
+            Check.ThatPreconditionIsMet(ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString(), "ResourceIdentifier.GetResourceTypeAsString(layerDefinitionId) == ResourceTypes.LayerDefinition.ToString()"); //NOXLATE
+            if (!string.IsNullOrEmpty(groupName))
+            {
+                Check.ArgumentNotNull(this.GetGroupByName(groupName), "Group for <groupName>"); //NOXLATE
+            }
+            var layer = new MapLayerType()
+            {
+                Parent = this,
+                ExpandInLegend = true,
+                LegendLabel = layerName,
+                Name = layerName,
+                ResourceId = layerDefinitionId,
+                ShowInLegend = true,
+                Visible = true,
+                Selectable = true
+            };
+            layer.Group = string.IsNullOrEmpty(groupName) ? string.Empty : groupName;
+
+            if (layerToInsertAbove != null)
+            {
+                var clayerToInsertAbove = layerToInsertAbove as MapLayerType;
+                if (clayerToInsertAbove != null)
+                {
+                    var idx = this.MapLayer.IndexOf(clayerToInsertAbove);
+                    if (idx >= 0)
+                    {
+                        this.MapLayer.Insert(idx, layer);
+                    }
+                    else
+                    {
+                        this.MapLayer.Add(layer);
+                    }
+                }
+                else
+                {
+                    this.MapLayer.Add(layer);
+                }
+            }
+            else
+            {
+                this.MapLayer.Add(layer);
+            }
+            OnPropertyChanged("MapLayer"); //NOXLATE
+
+            if (this.MapLayer.Count == 1) //First one
+            {
+                OnFirstLayerAdded(layer);
+            }
+
+            return layer;
+        }
+
+        private static bool IsEmpty(Box2DType box2DType)
+        {
+            return box2DType == null ||
+                (box2DType.MaxX == 0.0 &&
+                box2DType.MaxY == 0.0 &&
+                box2DType.MinX == 0.0 &&
+                box2DType.MinY == 0.0);
+        }
+
+        [XmlIgnore]
+        OSGeo.MapGuide.ObjectModels.Common.IEnvelope IMapDefinition.Extents
+        {
+            get
+            {
+                return this.Extents;
+            }
+            set
+            {
+                if (value == null)
+                {
+                    this.Extents = null;
+                }
+                else
+                {
+                    if (this.Extents == null)
+                        this.Extents = new Box2DType();
+
+                    this.Extents.MaxX = value.MaxX;
+                    this.Extents.MaxY = value.MaxY;
+                    this.Extents.MinX = value.MinX;
+                    this.Extents.MinY = value.MinY;
+                }
+            }
+        }
+
+        [XmlIgnore]
+        IBaseMapDefinition IMapDefinition.BaseMap
+        {
+            get
+            {
+                return (IBaseMapDefinition)this.BaseMapDefinition;
+            }
+        }
+
+        void IMapDefinition.InitBaseMap()
+        {
+            if (this.BaseMapDefinition == null)
+            {
+                this.BaseMapDefinition = new MapDefinitionTypeBaseMapDefinition()
+                {
+                    Parent = (IMapDefinition)this,
+                    BaseMapLayerGroup = new System.ComponentModel.BindingList<BaseMapLayerGroupCommonType>(),
+                    FiniteDisplayScale = new System.ComponentModel.BindingList<double>()
+                };
+            }
+            this.TileSetSource = null;
+        }
+
+        void IMapDefinition.RemoveBaseMap()
+        {
+            this.BaseMapDefinition = null;
+        }
+
+        [XmlIgnore]
+        IEnumerable<IMapLayer> IMapDefinition.MapLayer
+        {
+            get
+            {
+                foreach (var layer in this.MapLayer)
+                {
+                    yield return layer;
+                }
+            }
+        }
+
+        void IMapDefinition.RemoveLayer(IMapLayer layer)
+        {
+            var lyr = layer as MapLayerType;
+            if (lyr != null)
+            {
+                this.MapLayer.Remove(lyr);
+                OnPropertyChanged("MapLayer"); //NOXLATE
+            }
+        }
+
+        [XmlIgnore]
+        IEnumerable<IMapLayerGroup> IMapDefinition.MapLayerGroup
+        {
+            get
+            {
+                foreach (var grp in this.MapLayerGroup)
+                {
+                    yield return grp;
+                }
+            }
+        }
+
+        void IMapDefinition.RemoveGroup(IMapLayerGroup group)
+        {
+            Check.ArgumentNotNull(group, "group"); //NOXLATE
+            var grp = group as MapLayerGroupType;
+            if (grp != null)
+            {
+                this.MapLayerGroup.Remove(grp);
+                OnPropertyChanged("MapLayerGroup"); //NOXLATE
+            }
+        }
+
+        void IMapDefinition.RemoveAllGroups()
+        {
+            this.MapLayerGroup.Clear();
+        }
+
+        void IMapDefinition.RemoveAllLayers()
+        {
+            this.MapLayer.Clear();
+        }
+
+        int IMapDefinition.GetIndex(IMapLayer layer)
+        {
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            var lyr = layer as MapLayerType;
+            if (lyr != null)
+                return this.MapLayer.IndexOf(lyr);
+
+            return -1;
+        }
+
+        int IMapDefinition.MoveUp(IMapLayer layer)
+        {
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            int isrc = ((IMapDefinition)this).GetIndex(layer);
+            if (isrc > 0)
+            {
+                int idst = isrc - 1;
+
+                var src = this.MapLayer[isrc];
+                var dst = this.MapLayer[idst];
+
+                this.MapLayer[isrc] = dst;
+                this.MapLayer[idst] = src;
+
+                OnPropertyChanged("MapLayer"); //NOXLATE
+
+                return idst;
+            }
+            else if (isrc == 0)
+            {
+                return isrc; //Unchanged
+            }
+
+            return -1;
+        }
+
+        int IMapDefinition.MoveDown(IMapLayer layer)
+        {
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            int isrc = ((IMapDefinition)this).GetIndex(layer);
+            if (isrc < this.MapLayer.Count - 1)
+            {
+                int idst = isrc + 1;
+
+                var src = this.MapLayer[isrc];
+                var dst = this.MapLayer[idst];
+
+                this.MapLayer[isrc] = dst;
+                this.MapLayer[idst] = src;
+
+                OnPropertyChanged("MapLayer"); //NOXLATE
+
+                return idst;
+            }
+            else if (isrc == this.MapLayer.Count - 1)
+            {
+                return this.MapLayer.Count - 1; //Unchanged
+            }
+
+            return -1;
+        }
+
+        int IMapDefinition.MoveUpGroup(IMapLayerGroup group)
+        {
+            Check.ArgumentNotNull(group, "group"); //NOXLATE
+            var grp = group as MapLayerGroupType;
+            if (grp != null)
+            {
+                var idx = this.MapLayerGroup.IndexOf(grp);
+                if (idx > 0)
+                {
+                    int idst = idx - 1;
+
+                    var src = this.MapLayerGroup[idx];
+                    var dst = this.MapLayerGroup[idst];
+
+                    this.MapLayerGroup[idx] = dst;
+                    this.MapLayerGroup[idst] = src;
+
+                    OnPropertyChanged("MapLayerGroup"); //NOXLATE
+
+                    return idst;
+                }
+                else if (idx == 0)
+                {
+                    return idx; //Unchanged
+                }
+            }
+
+            return -1;
+        }
+
+        int IMapDefinition.MoveDownGroup(IMapLayerGroup group)
+        {
+            Check.ArgumentNotNull(group, "group"); //NOXLATE
+            var grp = group as MapLayerGroupType;
+            if (grp != null)
+            {
+                var idx = this.MapLayerGroup.IndexOf(grp);
+                if (idx < this.MapLayerGroup.Count - 1)
+                {
+                    int idst = idx + 1;
+
+                    var src = this.MapLayerGroup[idx];
+                    var dst = this.MapLayerGroup[idst];
+
+                    this.MapLayerGroup[idx] = dst;
+                    this.MapLayerGroup[idst] = src;
+
+                    OnPropertyChanged("MapLayerGroup"); //NOXLATE
+
+                    return idst;
+                }
+                else if (idx == this.MapLayerGroup.Count - 1)
+                {
+                    return this.MapLayerGroup.Count - 1; //Unchanged
+                }
+            }
+
+            return -1;
+        }
+
+        int IMapDefinition.GetIndex(IMapLayerGroup group)
+        {
+            Check.ArgumentNotNull(group, "group"); //NOXLATE
+            var grp = group as MapLayerGroupType;
+            if (grp != null)
+                return this.MapLayerGroup.IndexOf(grp);
+
+            return -1;
+        }
+
+        void IMapDefinition.SetTopDrawOrder(IMapLayer layer)
+        {
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            int isrc = ((IMapDefinition)this).GetIndex(layer);
+            if (isrc > 0)
+            {
+                var src = this.MapLayer[isrc];
+
+                //take everything before this and shift them up one position
+                for (int i = isrc - 1; i >= 0; i--)
+                {
+                    this.MapLayer[i + 1] = this.MapLayer[i];
+                }
+
+                this.MapLayer[0] = src;
+                OnPropertyChanged("MapLayer"); //NOXLATE
+            }
+        }
+
+        void IMapDefinition.SetBottomDrawOrder(IMapLayer layer)
+        {
+            Check.ArgumentNotNull(layer, "layer"); //NOXLATE
+            int isrc = ((IMapDefinition)this).GetIndex(layer);
+            if (isrc >= 0 && isrc < this.MapLayer.Count)
+            {
+                var src = this.MapLayer[isrc];
+
+                //take everything after this and shift them down one position
+                for (int i = isrc + 1; i < this.MapLayer.Count; i++)
+                {
+                    this.MapLayer[i - 1] = this.MapLayer[i];
+                }
+
+                this.MapLayer[this.MapLayer.Count - 1] = src;
+                OnPropertyChanged("MapLayer"); //NOXLATE
+            }
+        }
+
+        IEnumerable<IWatermark> IWatermarkCollection.Watermarks
+        {
+            get
+            {
+                foreach (var wm in this.Watermarks)
+                    yield return wm;
+            }
+        }
+
+        IWatermark IWatermarkCollection.AddWatermark(IWatermarkDefinition watermark)
+        {
+            return WatermarkCollectionUtil.AddWatermark(this.Watermarks, watermark);
+        }
+
+        void IWatermarkCollection.RemoveWatermark(IWatermark watermark)
+        {
+            WatermarkCollectionUtil.RemoveWatermark(this.Watermarks, watermark);
+        }
+
+        int IWatermarkCollection.WatermarkCount
+        {
+            get { return this.Watermarks.Count; }
+        }
+    }
+
+    partial class Box2DType : IEnvelope
+    { }
+
+    partial class MapDefinitionTypeBaseMapDefinition : IBaseMapDefinition
+    {
+        [XmlIgnore]
+        public IMapDefinition Parent
+        {
+            get;
+            set;
+        }
+
+        void IBaseMapDefinition.RemoveScaleAt(int index)
+        {
+            this.FiniteDisplayScale.RemoveAt(index);
+        }
+
+        double IBaseMapDefinition.GetScaleAt(int index)
+        {
+            return this.FiniteDisplayScale[index];
+        }
+
+        [XmlIgnore]
+        int IBaseMapDefinition.GroupCount
+        {
+            get { return this.BaseMapLayerGroup.Count; }
+        }
+
+        IBaseMapGroup IBaseMapDefinition.GetGroupAt(int index)
+        {
+            return this.BaseMapLayerGroup[index];
+        }
+
+        [XmlIgnore]
+        int IBaseMapDefinition.ScaleCount
+        {
+            get { return this.FiniteDisplayScale.Count; }
+        }
+
+        [XmlIgnore]
+        IEnumerable<double> IBaseMapDefinition.FiniteDisplayScale
+        {
+            get
+            {
+                foreach (var scale in this.FiniteDisplayScale)
+                {
+                    yield return scale;
+                }
+            }
+        }
+
+        public void AddFiniteDisplayScale(double value)
+        {
+            this.FiniteDisplayScale.Add(value);
+        }
+
+        public void RemoveFiniteDisplayScale(double value)
+        {
+            this.FiniteDisplayScale.Remove(value);
+        }
+
+        void IBaseMapDefinition.RemoveAllScales()
+        {
+            this.FiniteDisplayScale.Clear();
+            OnPropertyChanged("FiniteDisplayScale"); //NOXLATE
+        }
+
+        [XmlIgnore]
+        IEnumerable<IBaseMapGroup> IBaseMapDefinition.BaseMapLayerGroup
+        {
+            get
+            {
+                foreach (var grp in this.BaseMapLayerGroup)
+                {
+                    yield return grp;
+                }
+            }
+        }
+
+        public IBaseMapGroup AddBaseLayerGroup(string name)
+        {
+            var grp = new BaseMapLayerGroupCommonType()
+            {
+                Parent = this.Parent,
+                Name = name,
+                BaseMapLayer = new System.ComponentModel.BindingList<BaseMapLayerType>(),
+                ExpandInLegend = true,
+                ShowInLegend = true,
+                LegendLabel = name,
+                Visible = true
+            };
+            this.BaseMapLayerGroup.Add(grp);
+
+            return grp;
+        }
+
+        public void RemoveBaseLayerGroup(IBaseMapGroup group)
+        {
+            var grp = group as BaseMapLayerGroupCommonType;
+            if (grp != null)
+                this.BaseMapLayerGroup.Remove(grp);
+        }
+    }
+
+    partial class MapLayerType : IMapLayer
+    {
+    }
+
+    partial class BaseMapLayerType : IBaseMapLayer
+    {
+        [XmlIgnore]
+        public IMapDefinition Parent
+        {
+            get;
+            set;
+        }
+    }
+
+    partial class MapLayerGroupType : IMapLayerGroup
+    {
+        [XmlIgnore]
+        public IMapDefinition Parent
+        {
+            get;
+            set;
+        }
+    }
+
+    partial class BaseMapLayerGroupCommonType : IBaseMapGroup
+    {
+        [XmlIgnore]
+        public IMapDefinition Parent
+        {
+            get;
+            set;
+        }
+
+        [XmlIgnore]
+        IEnumerable<IBaseMapLayer> IBaseMapGroup.BaseMapLayer
+        {
+            get
+            {
+                foreach (var lyr in this.BaseMapLayer)
+                {
+                    yield return lyr;
+                }
+            }
+        }
+
+        public int GetIndex(IBaseMapLayer layer)
+        {
+            var bl = layer as BaseMapLayerType;
+            if (bl != null)
+            {
+                return this.BaseMapLayer.IndexOf(bl);
+            }
+            return -1;
+        }
+
+        public void InsertLayer(int index, IBaseMapLayer layer)
+        {
+            var bl = layer as BaseMapLayerType;
+            if (bl != null)
+            {
+                this.BaseMapLayer.Insert(index, bl);
+            }
+        }
+
+        public IBaseMapLayer AddLayer(string layerName, string resourceId)
+        {
+            BaseMapLayerType layer = new BaseMapLayerType()
+            {
+                Parent = this.Parent,
+                ExpandInLegend = true,
+                LegendLabel = layerName,
+                Name = layerName,
+                ResourceId = resourceId,
+                ShowInLegend = true,
+                Selectable = true
+            };
+            this.BaseMapLayer.Add(layer);
+            OnPropertyChanged("BaseMapLayer"); //NOXLATE
+            return layer;
+        }
+
+        public void RemoveBaseMapLayer(IBaseMapLayer layer)
+        {
+            var lyr = layer as BaseMapLayerType;
+            if (lyr != null)
+            {
+                this.BaseMapLayer.Remove(lyr);
+                OnPropertyChanged("BaseMapLayer"); //NOXLATE
+            }
+        }
+
+        int IBaseMapGroup.MoveUp(IBaseMapLayer layer)
+        {
+            var lyr = layer as BaseMapLayerType;
+            if (lyr != null)
+            {
+                int isrc = this.BaseMapLayer.IndexOf(lyr);
+                if (isrc > 0)
+                {
+                    int idst = isrc - 1;
+                    var src = this.BaseMapLayer[isrc];
+                    var dst = this.BaseMapLayer[idst];
+
+                    //swap
+                    this.BaseMapLayer[isrc] = dst;
+                    this.BaseMapLayer[idst] = src;
+
+                    OnPropertyChanged("BaseMapLayer"); //NOXLATE
+
+                    return idst;
+                }
+            }
+
+            return -1;
+        }
+
+        int IBaseMapGroup.MoveDown(IBaseMapLayer layer)
+        {
+            var lyr = layer as BaseMapLayerType;
+            if (lyr != null)
+            {
+                int isrc = this.BaseMapLayer.IndexOf(lyr);
+                if (isrc < this.BaseMapLayer.Count - 1)
+                {
+                    int idst = isrc + 1;
+                    var src = this.BaseMapLayer[isrc];
+                    var dst = this.BaseMapLayer[idst];
+
+                    //swap
+                    this.BaseMapLayer[isrc] = dst;
+                    this.BaseMapLayer[idst] = src;
+
+                    OnPropertyChanged("BaseMapLayer"); //NOXLATE
+
+                    return idst;
+                }
+            }
+
+            return -1;
+        }
+    }
+}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/OSGeo.MapGuide.ObjectModels.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/OSGeo.MapGuide.ObjectModels.csproj	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/OSGeo.MapGuide.ObjectModels.csproj	2014-12-29 14:25:02 UTC (rev 8483)
@@ -119,6 +119,9 @@
     <Compile Include="..\Generated\MapDefinition-2.4.0.designer.cs">
       <Link>MapDefinition\v2_4_0\MapDefinition-2.4.0.designer.cs</Link>
     </Compile>
+    <Compile Include="..\Generated\MapDefinition-3.0.0.designer.cs">
+      <Link>MapDefinition\v3_0_0\MapDefinition-3.0.0.designer.cs</Link>
+    </Compile>
     <Compile Include="..\Generated\PrintLayout-1.0.0.designer.cs">
       <Link>PrintLayout\v1.0.0\PrintLayout-1.0.0.designer.cs</Link>
     </Compile>
@@ -251,6 +254,7 @@
     <Compile Include="MapDefinition\MapDefinitionInterfaces.cs" />
     <Compile Include="MapDefinition\v2_3_0\MapDefinitionImpl.cs" />
     <Compile Include="MapDefinition\v2_4_0\MapDefinitionImpl.cs" />
+    <Compile Include="MapDefinition\v3_0_0\MapDefinitionImpl.cs" />
     <Compile Include="ObjectFactory.cs" />
     <Compile Include="PrintLayout\v1.0.0\PrintLayoutImpl.cs" />
     <Compile Include="PrintLayout\PrintLayoutInterfaces.cs" />

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs	2014-12-29 14:25:02 UTC (rev 8483)
@@ -48,6 +48,7 @@
 using Lp220 = OSGeo.MapGuide.ObjectModels.LoadProcedure.v2_2_0;
 using Mdf230 = OSGeo.MapGuide.ObjectModels.MapDefinition.v2_3_0;
 using Mdf240 = OSGeo.MapGuide.ObjectModels.MapDefinition.v2_4_0;
+using Mdf300 = OSGeo.MapGuide.ObjectModels.MapDefinition.v3_0_0;
 using Sym110 = OSGeo.MapGuide.ObjectModels.SymbolDefinition.v1_1_0;
 using Sym240 = OSGeo.MapGuide.ObjectModels.SymbolDefinition.v2_4_0;
 using Wdf230 = OSGeo.MapGuide.ObjectModels.WatermarkDefinition.v2_3_0;
@@ -279,6 +280,13 @@
                 new ResourceDeserializationCallback(Mdf240.MdfEntryPoint.Deserialize));
             ObjectFactory.RegisterMapDefinitionFactoryMethod(new Version(2, 4, 0), new MapDefinitionCreatorFunc(Mdf240.MdfEntryPoint.CreateDefault));
 
+            //Map Definition 3.0.0
+            ResourceTypeRegistry.RegisterResource(
+                new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "3.0.0"),
+                new ResourceSerializationCallback(Mdf300.MdfEntryPoint.Serialize),
+                new ResourceDeserializationCallback(Mdf300.MdfEntryPoint.Deserialize));
+            ObjectFactory.RegisterMapDefinitionFactoryMethod(new Version(3, 0, 0), new MapDefinitionCreatorFunc(Mdf300.MdfEntryPoint.CreateDefault));
+
             //Watermark Definition 2.3.0
             ResourceTypeRegistry.RegisterResource(
                 new ResourceTypeDescriptor(ResourceTypes.WatermarkDefinition.ToString(), "2.3.0"),

Modified: trunk/Tools/Maestro/UnitTests.playlist
===================================================================
--- trunk/Tools/Maestro/UnitTests.playlist	2014-12-29 13:18:49 UTC (rev 8482)
+++ trunk/Tools/Maestro/UnitTests.playlist	2014-12-29 14:25:02 UTC (rev 8483)
@@ -1 +1 @@
-<Playlist Version="1.0"><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GeometricPropertyDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.IndexOfTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestWebLayoutConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestUniqueIssues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.FindPropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities240" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.WriteXmlTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestParse3dWkt" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities220" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestLayerScaleRangeOverlap" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionConversions" /><Add Test="
 OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestLoadProcedureValidation" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GeometryTypesToStringTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.AddClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestWebLayout" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcSaveLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlFeatureJoinValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities120" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlAggregateNullValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.GetOrdinalTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestArgParser" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.T
 ests.FeatureSchemaTests.CloneTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionNestedGroupDelete" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.RemovePropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerRemove" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestCreate" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupReordering" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsSaveLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcLoad2" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.RemovePropertyAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.GetClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.ClassDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities250" /><Add
  Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities200" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.RemoveClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.DataPropertyDefinitionTests.IsNumericTypeTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestClassNameEncoding" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities110" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestSymbolDefinitionConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities210" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GetIndividualGeometricTypesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestValidationResultSet" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad3" /><
 Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.DataPropertyDefinitionTests.DataPropertyDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupRemove" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities260" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.SpecificGeometryTypesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestMySqlSchema" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestFeatureSchemaRoundtrip" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities100" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupAdd" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities230" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad2" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestLoadProcedureCon
 versions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestLayerDefinitionConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.GetItemTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestCase1896" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerAdd" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.ClearIdentityPropertiesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlFeatureNullValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerReordering" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.IndexOfPropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.CloneTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestParseXyzmWkt" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestConnectionString" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.Featu
 reSchemaTests.FeatureSchemaTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerInsert" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterLayerFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithNameAndCoordSys" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateWatermarkTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.FeatureSourceTests.TestFeatureSourceFileParameters" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimplePointTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateCalculatedPropertyTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePoint3DTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterCompoundSymbolFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSymbolLibraryTest" /><Add
  Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestResourceTypeDescriptor" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestValidResourceIdentifiers" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMetadataTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterSimpleSymbolFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterWatermarkDefinitionFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSecurityUserTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSymbolTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateAttributeRelationTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.DrawingSourceTests.DrawingSourceDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceExtensionTest" /><Add Test="OSGeo.MapGu
 ide.ObjectModels.Tests.ObjectFactoryTests.CreateLoadProcedureTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestCloning" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterWebLayoutFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ApplicationDefinitionTests.ApplicationDefinitionDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePrintLayoutTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithNameAndCoordSysAndExtent" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePoint2DTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterResourceTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSecurityGroupTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.Object
 FactoryTests.CreateSimpleLabelTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceTestWithParameters" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSolidLineTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateLoadProcedureTestWithFileNames" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateEnvelopeTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateDefaultLayerTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateCompoundSymbolTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSolidFillTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterResourceSerializerTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.FeatureSourceTests.FeatureSourceDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterMap
 DefinitionFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterLoadProcedureFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateDrawingSourceTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithName" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.ResourceMigratorTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.MoveResourcesWithOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.CopyResourcesWithOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.CopyResourcesWithoutOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.MoveResourcesWithoutOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceRebaserTests.RebaseTest"
  /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceRebaserTests.ResourceRebaserTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.UnsupportedConnectionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayerByNameTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveLayerAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.UpdateMapDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.IndexOfLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.SetViewCenterTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetGroupByNameTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetGroupsOfGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayer
 sOfGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayerByObjectIdTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.InsertLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.ToMapDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetFiniteDisplayScaleAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.SetLayerIndexTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.NotNullTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.RangeTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.IsFolderTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.NotEmptyTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.PreconditionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Resource.Tests.ResourceSchemaChainTests.
 GetValidatingSchemasTest" /></Playlist>
\ No newline at end of file
+<Playlist Version="1.0"><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GeometricPropertyDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.IndexOfTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestWebLayoutConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestUniqueIssues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.FindPropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities240" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.WriteXmlTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestParse3dWkt" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities220" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestLayerScaleRangeOverlap" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionConversions" /><Add Test="
 OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestLoadProcedureValidation" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GeometryTypesToStringTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.AddClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestWebLayout" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcSaveLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlFeatureJoinValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities120" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlAggregateNullValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.GetOrdinalTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestArgParser" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.T
 ests.FeatureSchemaTests.CloneTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionNestedGroupDelete" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.RemovePropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerRemove" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestCreate" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupReordering" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsSaveLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestOdbcLoad2" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.RemovePropertyAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.GetClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.ClassDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities250" /><Add
  Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities200" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.RemoveClassTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.DataPropertyDefinitionTests.IsNumericTypeTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestClassNameEncoding" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities110" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestSymbolDefinitionConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities210" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.GetIndividualGeometricTypesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestValidationResultSet" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad3" /><
 Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.DataPropertyDefinitionTests.DataPropertyDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupRemove" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities260" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.GeometricPropertyDefinitionTests.SpecificGeometryTypesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestMySqlSchema" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.SchemaTests.TestFeatureSchemaRoundtrip" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities100" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionGroupAdd" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.CapabilityTests.TestHttpCapabilities230" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ConfigurationDocumentTests.TestWmsLoad2" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestLoadProcedureCon
 versions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestLayerDefinitionConversions" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.FeatureSchemaTests.GetItemTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ValidationTests.TestCase1896" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerAdd" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.ClearIdentityPropertiesTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.FeatureReaderTests.TestXmlFeatureNullValues" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerReordering" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.IndexOfPropertyTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.SchemaTests.CloneTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestParseXyzmWkt" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.MiscTests.TestConnectionString" /><Add Test="OSGeo.MapGuide.MaestroAPI.Schema.Tests.Featu
 reSchemaTests.FeatureSchemaTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Tests.ResourceTests.TestMapDefinitionLayerInsert" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterLayerFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithNameAndCoordSys" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateWatermarkTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.FeatureSourceTests.TestFeatureSourceFileParameters" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimplePointTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateCalculatedPropertyTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePoint3DTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterCompoundSymbolFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSymbolLibraryTest" /><Add
  Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestResourceTypeDescriptor" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestValidResourceIdentifiers" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMetadataTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterSimpleSymbolFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterWatermarkDefinitionFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSecurityUserTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSymbolTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateAttributeRelationTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.DrawingSourceTests.DrawingSourceDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceExtensionTest" /><Add Test="OSGeo.MapGu
 ide.ObjectModels.Tests.ObjectFactoryTests.CreateLoadProcedureTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ResourceTests.TestCloning" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterWebLayoutFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.ApplicationDefinitionTests.ApplicationDefinitionDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePrintLayoutTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithNameAndCoordSysAndExtent" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreatePoint2DTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterResourceTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSecurityGroupTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.Object
 FactoryTests.CreateSimpleLabelTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateFeatureSourceTestWithParameters" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSolidLineTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateLoadProcedureTestWithFileNames" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateEnvelopeTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateDefaultLayerTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateCompoundSymbolTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateSimpleSolidFillTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterResourceSerializerTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.FeatureSourceTests.FeatureSourceDeserializationWithFullContentModel" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterMap
 DefinitionFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.RegisterLoadProcedureFactoryMethodTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateDrawingSourceTest" /><Add Test="OSGeo.MapGuide.ObjectModels.Tests.ObjectFactoryTests.CreateMapDefinitionTestWithName" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.ResourceMigratorTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.MoveResourcesWithOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.CopyResourcesWithOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.CopyResourcesWithoutOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceMigratorTests.MoveResourcesWithoutOverwriteTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceRebaserTests.RebaseTest"
  /><Add Test="OSGeo.MapGuide.MaestroAPI.CrossConnection.Tests.ResourceRebaserTests.ResourceRebaserTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.UnsupportedConnectionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayerByNameTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveLayerAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.UpdateMapDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.IndexOfLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.SetViewCenterTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetGroupByNameTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetGroupsOfGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayer
 sOfGroupTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.RemoveLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetLayerByObjectIdTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.InsertLayerTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.ToMapDefinitionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.GetFiniteDisplayScaleAtTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Mapping.Tests.RuntimeMapTests.SetLayerIndexTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.NotNullTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.RangeTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.IsFolderTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.NotEmptyTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.CheckTests.PreconditionTest" /><Add Test="OSGeo.MapGuide.MaestroAPI.Resource.Tests.ResourceSchemaChainTests.
 GetValidatingSchemasTest" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.MapDefinitionTests.DeserializationTest_V30" /><Add Test="OSGeo.MapGuide.ObjectModel.Tests.MapDefinitionTests.CreateTest_V30" /></Playlist>
\ No newline at end of file



More information about the mapguide-commits mailing list